# Generated debuginfo package is empty anyway # On >=F24 empty debuginfo packages # generates build error. %global debug_package %{nil} %global svnrev 6624 %global svndate 20120529 %global svn %{svndate}svn%{svnrev} %global lejos_jars bluecove:bluecove-gpl:commons-cli:jcommon:jfreechart:bcel:pccomm:%{name}/pc/pctools:%{name}/pc/jtools:%{name}/pc/charting # Either none or only one tollchain (elf, eabi) can be selected at the time. # However, building using the arm-none-eabi toolchain is currently not # supported by upstream. # More information: http://www.lejos.org/forum/viewtopic.php?f=7&t=7164#p25793 # If neither is selected the NXT firmware is not regenerated. %bcond_without arm_elf # % bcond_without arm_eabi Name: lejos-nxj Version: 0.9.1 Release: 7.%{svn}%{?dist} Summary: Run Java on the Lego NXT License: MPLv1.0 and LGPLv2+ and GPLv2+ and BSD URL: http://www.lejos.org/ # Official release doesn't contain Eclipse plugin sources # svn checkout svn://svn.code.sf.net/p/lejos/code/tags/lejos_nxj_0.9.1-3 lejos-nxj # find lejos-nxj -name ".svn" -type d -exec rm -rf {} \; # tar Jcf lejos-nxj-20120529svn6624.tar.xz lejos-nxj Source0: %{name}-%{svn}.tar.xz # udev rules Source1: %{name}-0.9.1-udev.rules %if %{with arm_elf} Source2: http://www.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.3.2/gcc-4.3.2.tar.bz2 Source3: http://www.mirrorservice.org/sites/sourceware.org/pub/binutils/snapshots/binutils-2.18.50.tar.bz2 Source4: ftp://sources.redhat.com/pub/newlib/newlib-1.16.0.tar.gz # Fixes compilation with gcc >5.0 Source5: %{name}-0.9.1-gcc-toplev.patch %endif # Satisfies requirement of using "System.load()" Patch0: %{name}-0.9.1-jniloader.patch # Set default value for NXJ_HOME in eclipse plugin Patch1: %{name}-0.9.1-nxj-home.patch %if %{with arm_elf} # Fixes toolchain build, reported upstream # Upstream fix: http://sourceforge.net/p/lejos/code/7017/ Patch2: %{name}-0.9.1-toolchain-build-fix.patch %endif # Add prefixValues="true" for Ant >= 1.9.4 # https://issues.apache.org/bugzilla/show_bug.cgi?id=54769 Patch3: %{name}-0.9.1-release-build-xml.patch # Method to identify this version # http://www.lejos.org/forum/viewtopic.php?f=7&t=7164&sid=cc070a7869b38a891ac78381a224985d&start=30#p26186 %global firmware_version %{lua: \ addenum = 0xa version = 0x0 multiplier = 0x1 for i in string.gmatch(string.reverse(rpm.expand("%{version}")), "%d+") do version = version + multiplier * tonumber(i, 16) multiplier = multiplier * 0x100 end print(string.format("0x%x", version + addenum)) } BuildRequires: ant BuildRequires: apache-commons-cli BuildRequires: bcel BuildRequires: bea-stax-api BuildRequires: bluecove BuildRequires: cpptasks BuildRequires: jcommon BuildRequires: jfreechart BuildRequires: java-devel >= 1:1.7.0 BuildRequires: javapackages-tools BuildRequires: eclipse-pde BuildRequires: eclipse-platform BuildRequires: libusb-devel %if %{with arm_eabi} BuildRequires: arm-none-eabi-gcc-cs BuildRequires: arm-none-eabi-newlib BuildRequires: subversion %endif %if %{with arm_elf} BuildRequires: gmp-devel BuildRequires: mpfr-devel BuildRequires: texinfo BuildRequires: subversion %endif Requires: %{name}-tools = %{version} Requires: %{name}-eclipse = %{version} Requires: %{name}-java = %{version} Requires: %{name}-java-src = %{version} Requires: %{name}-javadoc = %{version} Requires: %{name}-examples = %{version} Requires: %{name}-doc = %{version} %description leJOS is a firmware replacement for Lego Mindstorms NXT programmable bricks. It includes a Java virtual machine, which allows Lego Mindstorms robots to be programmed in the Java programming language. It contains a VM for Java bytecodes and additional software to load and run Java programs. These are some of the features offered: - Object oriented language (Java) - Preemptive threads (tasks) - Arrays, including multi-dimensional ones - Recursion - Synchronization - Exceptions - Java types including float, double, long and String - Math class - Well-documented Robotics API - Eclipse plugin In Fedora %{name} is a meta-package which will install everything needed for leJOS to work smoothly. Smaller setups can be achieved by installing some of the %{name}-* sub packages. %package doc Summary: Documentation and tutorial for %{name} package BuildArch: noarch %description doc This package contains documentation and tutorial for %{name} package. %package tools Summary: Tools for Lego Mindstorm NXT brick BuildArch: noarch Requires: %{name}-java = %{version} Requires: java-devel >= 1:1.7.0 %description tools This package contains various tools for Lego Mindstorm NXT brick. %package eclipse Summary: Eclipse plugin for lejos development BuildArch: noarch Requires: eclipse-platform Requires: %{name}-tools = %{version} %description eclipse The eclipse-lejos package contains Eclipse plugins that are useful for writing programs for Lego Mindstorm NXT programmable bricks in Java language within the Eclipse IDE. %package java Summary: Java API for Lego NXT brick Requires: apache-commons-cli Requires: bcel Requires: bluecove Requires: jcommon Requires: jfreechart Requires: libusb Requires: udev %description java This package contains various Java API's for the Lego Mindstorm NXT brick. %package javadoc Summary: Javadoc for %{name} package BuildArch: noarch Requires: %{name}-java = %{version} %description javadoc This package contains the API documentation for %{name}. %package java-src Summary: Java sources for %{name}-java package BuildArch: noarch Requires: %{name}-java = %{version} %description java-src This package contains java sources for %{name}-java packages. %package examples Summary: Examples for %{name} package BuildArch: noarch %description examples This package contains java examples for %{name} %prep %setup -qn %{name} %patch0 -p1 -b .jniloader %patch1 -p1 -b .nxjhome %patch3 -p1 -b .prefix # Correct EOL (preserve timestamps). for i in \ tutorial/release/WheeledVehicles/CompassPilotTst.java \ tutorial/release/r_css/lejos-tutorial.css; do sed 's/\r//g' $i > $i.tmp && \ touch -r $i $i.tmp && \ mv $i.tmp $i done # update version according to the "Release HOWTO.txt" file. sed -i "s/%{version}.*/%{version}-%{svn}/g" \ release/lejos_nxj/README.txt sed -i "s/^\(lejos.version.*=\)\(.*\)/\1\ %{version}-%{svn}/g" \ release/build.properties sed -i "s/version=\(.*\)\.qualifier.*/version=\"%{version}.qualified\"/g" \ org.lejos.nxt.ldt.feature/feature.xml find . -name '*.jar' | xargs rm rm -rf NXJPlugin NetBeansPlugin NxjTemplate android \ classes-test installjammer j2mecomms j2mesamples javame \ jbluez leJOSlab libnxt2 mauve parent ros rpi vision \ org.lejos.junit org.lejos.nxt.benchmark \ org.lejos.nxt.ldt.update-site org.lejos.website %if %{with arm_eabi} || %{with arm_elf} rm -rf snapshot mkdir -p snapshot/bin ln -sr nxtvm/platform/nxt/lejos_nxt_rom.bin snapshot/bin %endif # replace bcel.jar rm -f jtools/3rdparty/lib/*.jar ln -s %{_javadir}/bcel.jar jtools/3rdparty/lib/ # replace bluecove.jar rm -f pccomms/3rdparty/lib/*.jar ln -s %{_javadir}/bluecove.jar pccomms/3rdparty/lib/ # replace cpptasks.jar rm -f release/lejos_nxj/build/*.jar ln -s %{_javadir}/ant/cpptasks.jar release/lejos_nxj/build/ # replace commons-cli.jar rm -f pctools/3rdparty/lib/*.jar ln -s %{_javadir}/commons-cli.jar pctools/3rdparty/lib/ # replace {jcommon,jfreechart}.jar rm -f org.lejos.charting/3rdparty/lib/*.jar ln -s %{_javadir}/jcommon/jcommon.jar org.lejos.charting/3rdparty/lib/ ln -s %{_javadir}/jfreechart/jfreechart.jar org.lejos.charting/3rdparty/lib/ # to recompile from source (cd release && ant clean) %if %{with arm_eabi} make -C nxtvm/platform/nxt clean LEJOS_NXT_ARM_GCC=arm-none-eabi-gcc %endif %if %{with arm_elf} for i in %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5}; do ln -sf ${i} nxtvm/ done %patch2 -p2 -b .toolchain-build sed -i "s/MAKEOPTS=.*/MAKEOPTS=%{?_smp_mflags}/" nxtvm/build_arm_toolchain.sh (cd nxtvm; echo ok | sh -x ./build_arm_toolchain.sh) PATH=${PWD}/nxtvm/install/bin:${PATH} \ make -C nxtvm/platform/nxt clean %endif %build export JAVA_HOME=/usr/lib/jvm/java %if %{with arm_eabi} export LEJOS_NXT_ARM_GCC=arm-none-eabi-gcc make %{?_smp_mflags} -C nxtvm/platform/nxt \ SVN_REV=%{svnrev} VERSION_NUMBER=%{firmware_version} && \ chmod 0644 nxtvm/platform/nxt/lejos_nxt_rom.bin %endif %if %{with arm_elf} PATH=${PWD}/nxtvm/install/bin:${PATH} \ make %{?_smp_mflags} -C nxtvm/platform/nxt \ SVN_REV=%{svnrev} VERSION_NUMBER=%{firmware_version} && \ chmod 0644 nxtvm/platform/nxt/lejos_nxt_rom.bin %endif eclipse-pdebuild org.lejos.nxt.ldt.feature (cd release && ant --execdebug -debug -verbose) (cd release/build/bin_unix/build && ant --execdebug -debug -verbose) %install # install doc files install -d %{buildroot}%{_docdir}/%{name} install -p -m 644 -t %{buildroot}%{_docdir}/%{name} \ release/build/bin_unix/*.{txt,html} # install tutorial install -d %{buildroot}%{_docdir}/%{name}/tutorial cp -ar tutorial/release/* %{buildroot}%{_docdir}/%{name}/tutorial # install udev rules install -d %{buildroot}%{_prefix}/lib/udev/rules.d install -p -m 644 -T %{SOURCE1} \ %{buildroot}%{_prefix}/lib/udev/rules.d/92-lego-nxt.rules # restore release directory structure install -d %{buildroot}%{_datadir}/%{name}/{bin,docs,lib} install -d %{buildroot}%{_datadir}/%{name}/lib/{nxt,pc} install -d %{buildroot}%{_datadir}/%{name}/lib/pc/3rdparty # install nxt firmware install -p -m 644 -t %{buildroot}%{_datadir}/%{name}/bin \ release/build/bin_unix/bin/* # lejos scripts install -d %{buildroot}%{_bindir} install -p -m 755 -t %{buildroot}%{_datadir}/%{name}/bin \ release/build/bin_unix/bin/nxj* # create symlinks for i in %{buildroot}%{_datadir}/%{name}/bin/nxj*; do ln -sr ${i} %{buildroot}%{_bindir}/ done # eclipse-lejos installDir=%{buildroot}%{_datadir}/eclipse/dropins/%{name} install -d -m 755 $installDir unzip -q -d $installDir \ build/rpmBuild/org.lejos.nxt.ldt.feature.zip # nxt-java jar install -d %{buildroot}%{_javadir}/%{name}/nxt install -p -m 644 -t %{buildroot}%{_javadir}/%{name}/nxt \ release/build/bin_unix/lib/nxt/classes.jar ln -sr %{buildroot}%{_javadir}/%{name}/nxt/*.jar \ %{buildroot}%{_datadir}/%{name}/lib/nxt install -p -m 644 -t %{buildroot}%{_datadir}/%{name}/lib/nxt \ release/build/bin_unix/lib/nxt/classes-src.zip # nxt-java-javadoc mkdir -p %{buildroot}%{_javadocdir}/%{name}/nxt cp -ar release/build/bin_unix/docs/nxt \ %{buildroot}%{_javadocdir}/%{name}/ ln -sr %{buildroot}%{_javadocdir}/%{name}/nxt \ %{buildroot}%{_datadir}/%{name}/docs/ # pc-java mkdir -p %{buildroot}%{_javadir}/%{name}/pc install -p -m 644 -t %{buildroot}%{_javadir}/%{name}/pc \ release/build/bin_unix/lib/pc/charting.jar \ release/build/bin_unix/lib/pc/pctools.jar \ release/build/bin_unix/lib/pc/jtools.jar ln -sr %{buildroot}%{_javadir}/%{name}/pc/*.jar \ %{buildroot}%{_datadir}/%{name}/lib/pc install -p -m 644 -t %{buildroot}%{_datadir}/%{name}/lib/pc \ release/build/bin_unix/lib/pc/charting-src.zip \ release/build/bin_unix/lib/pc/pctools-src.zip \ release/build/bin_unix/lib/pc/jtools-src.zip # pc-java jni jar mkdir -p %{buildroot}%{_jnidir} install -p -m 644 -t %{buildroot}%{_jnidir}/ \ release/build/bin_unix/lib/pc/pccomm.jar ln -sr %{buildroot}%{_jnidir}/*.jar \ %{buildroot}%{_datadir}/%{name}/lib/pc install -p -m 644 -t %{buildroot}%{_datadir}/%{name}/lib/pc \ release/build/bin_unix/lib/pc/pccomm-src.zip # pc-java jni native library mkdir -p %{buildroot}%{_libdir}/%{name} install -p -m 644 -t %{buildroot}%{_libdir}/%{name}/ \ release/build/bin_unix/build/libnxt/libjlibnxt.so # pc-java-javadoc mkdir -p %{buildroot}%{_javadocdir}/%{name}/pc cp -ar release/build/bin_unix/docs/pc \ %{buildroot}%{_javadocdir}/%{name}/ ln -sr %{buildroot}%{_javadocdir}/%{name}/pc \ %{buildroot}%{_datadir}/%{name}/docs/ # jar symlinks for i in bcel bluecove commons-cli jcommon jfreechart bea-stax-api; do (cd %{buildroot}%{_datadir}/%{name}/lib/pc/3rdparty; \ ln -s $(build-classpath ${i}) .) done (cd %{buildroot}%{_datadir}/%{name}/lib/pc/3rdparty; \ ln -s %{_libdir}/bluecove/bluecove-gpl.jar .) # samples.zip install -p -m 644 -t %{buildroot}%{_datadir}/%{name} \ release/build/bin_unix/samples.zip # upstream doesn't provide any POM files # More information: http://www.lejos.org/forum/viewtopic.php?f=7&t=3405 %add_maven_depmap org.lejos.pc.charting:lejos-pc-charting:%{version} %{name}/pc/charting.jar %add_maven_depmap js.tinyvm:lejos-jtools:%{version} %{name}/pc/jtools.jar %add_maven_depmap org.lejos:lejos-pctools:%{version} %{name}/pc/pctools.jar %add_maven_depmap org.lejos.pc.tools:lejos-pccomm:%{version} pccomm.jar %pre getent group lego > /dev/null || %{_sbindir}/groupadd -r lego exit 0 %files %{_docdir}/%{name}/*.txt %files doc %{_docdir}/%{name}/*.txt %{_docdir}/%{name}/README.html %dir %{_docdir}/%{name}/tutorial %{_docdir}/%{name}/tutorial/* %files tools %{_docdir}/%{name}/*.txt %{_bindir}/nxj* %dir %{_datadir}/%{name} %dir %{_datadir}/%{name}/bin %dir %{_datadir}/%{name}/lib %dir %{_datadir}/%{name}/lib/nxt %dir %{_datadir}/%{name}/lib/pc %dir %{_datadir}/%{name}/lib/pc/3rdparty %{_datadir}/%{name}/bin/* %{_datadir}/%{name}/lib/nxt/*.jar %{_datadir}/%{name}/lib/pc/*.jar %{_datadir}/%{name}/lib/pc/3rdparty/*.jar %files java %{_docdir}/%{name}/*.txt %dir %{_javadir}/%{name} %dir %{_javadir}/%{name}/pc %dir %{_javadir}/%{name}/nxt %{_javadir}/%{name}/pc/charting.jar %{_javadir}/%{name}/pc/jtools.jar %{_javadir}/%{name}/pc/pctools.jar %{_javadir}/%{name}/nxt/classes.jar %{_datadir}/maven-metadata/* %{_prefix}/lib/udev/rules.d/* %{_jnidir}/pccomm.jar %dir %{_libdir}/%{name} %{_libdir}/%{name}/libjlibnxt.so %files eclipse %{_docdir}/%{name}/*.txt %{_datadir}/eclipse/dropins/%{name} %files javadoc %{_docdir}/%{name}/*.txt %dir %{_javadocdir}/%{name} %{_javadocdir}/%{name}/nxt %{_javadocdir}/%{name}/pc %dir %{_datadir}/%{name}/docs %{_datadir}/%{name}/docs/nxt %{_datadir}/%{name}/docs/pc %files java-src %{_docdir}/%{name}/*.txt %{_datadir}/%{name}/lib/nxt/classes-src.zip %{_datadir}/%{name}/lib/pc/charting-src.zip %{_datadir}/%{name}/lib/pc/jtools-src.zip %{_datadir}/%{name}/lib/pc/pccomm-src.zip %{_datadir}/%{name}/lib/pc/pctools-src.zip %files examples %{_docdir}/%{name}/*.txt %{_datadir}/%{name}/samples.zip %changelog * Fri Aug 28 2015 Damian Wrobel - 0.9.1-7.20120529svn6624 - Fix compilation using gcc >=5.0 * Sat Jan 17 2015 Damian Wrobel - 0.9.1-6.20120529svn6624 - Fix compilation using Ant 1.9.4 * Sat Aug 23 2014 Damian Wrobel - 0.9.1-5.20120529svn6624 - Correct EOL in tutorial files - Implementation of firmware identification method * Wed Jul 16 2014 Damian Wrobel - 0.9.1-4.20120529svn6624 - Sub-packages reorganization * Sat Jul 12 2014 Damian Wrobel - 0.9.1-3.20120529svn6624 - Sub-packages reorganization * Fri Jul 11 2014 Damian Wrobel - 0.9.1-2.20120529svn6624 - Add support for rebuilding firmware using arm-elf toolchain. * Sun Jun 29 2014 Damian Wrobel 0.9.1-1.20120529svn6624 - Initial RPM release.