Spec URL: http://mo.morsi.org/files/jruby/jffi.spec SRPM URL: http://mo.morsi.org/files/jruby/jffi-0.6.2-1.fc12.src.rpm Description: An optimized Java interface to libffi Required by JRuby. Koji build: http://koji.fedoraproject.org/koji/taskinfo?taskID=1959831 rpmlint -i rpmbuild/RPMS/noarch/jffi-0.6.2-1.fc12.noarch.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings. rpmlint -i rpmbuild/RPMS/noarch/jffi-javadoc-0.6.2-1.fc12.noarch.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings. rpmlint -i rpmbuild/SRPMS/jffi-0.6.2-1.fc12.src.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings.
Some initial notes: * Using %{version} - Using %{version} in Source0 is useful (especially when version is upgraded): https://fedoraproject.org/wiki/Packaging/SourceURL#Using_.25.7Bversion.7D * EVR (Epoch-Version-Release) specific java dependency - I guess you want "BR: java-devel >= 1:1.6.0" if you want Java OpenJDK https://fedoraproject.org/wiki/Packaging/Java#BuildRequires_and_Requires - And for consistency I guess java Requires (not BuildRequires) should also be EVR specific. * Fedora specific compilation flags - Fedora specific compilation flags are not honored. ------------------------------------------------------------------- 100 -build-native-library: 101 [exec] cc -m32 -O2 -fno-omit-frame-pointer -fno-strict-aliasing -DNDEBUG -W -Werror -Wall -Wno-unused -Wno-parentheses -Wundef -I"/builddir/build/BUILD/jffi-0.6.2/build/jni" -I"/builddir/build/BUILD/jffi-0.6.2/build/jni"/jni -I/builddir/build/BUILD/jffi-0.6.2/jni -I"/builddir/build/BUILD/jffi-0.6.2/jni/jffi" -fPIC -I"/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/../include" -I"/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/../include/linux" -I/usr/lib/libffi-3.0.9/include -D_REENTRANT -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -pthread -march=i586 -mtune=generic -c /builddir/build/BUILD/jffi-0.6.2/jni/jffi/Array.c -o /builddir/build/BUILD/jffi-0.6.2/build/jni/jffi/Array.o ------------------------------------------------------------------- You can check the current compilation flags by $ rpm --eval %optflags https://fedoraproject.org/wiki/Packaging/Guidelines#Compiler_flags * jni-containing jar file location - This jar file uses jni and should be installed under %_libdir/%name https://fedoraproject.org/wiki/Packaging/Java#Packaging_JAR_files_that_use_JNI * Using ln - For this please see my comment on bug 561482. * Documents - "COPYING" file (i.e. GPLv3 license text) should be also added to %doc.
(In reply to comment #1) > Some initial notes: > > * Using %{version} > - Using %{version} in Source0 is useful (especially when version is > upgraded): > https://fedoraproject.org/wiki/Packaging/SourceURL#Using_.25.7Bversion.7D > Source0 URL has been updated to point to recent upstream tarball and this is taken care of. > * EVR (Epoch-Version-Release) specific java dependency > - I guess you want "BR: java-devel >= 1:1.6.0" if you want Java OpenJDK > https://fedoraproject.org/wiki/Packaging/Java#BuildRequires_and_Requires > > - And for consistency I guess java Requires (not BuildRequires) should > also be EVR specific. > Done > * Fedora specific compilation flags > - Fedora specific compilation flags are not honored. > ------------------------------------------------------------------- > 100 -build-native-library: > 101 [exec] cc -m32 -O2 -fno-omit-frame-pointer -fno-strict-aliasing > -DNDEBUG -W -Werror -Wall -Wno-unused -Wno-parentheses -Wundef > -I"/builddir/build/BUILD/jffi-0.6.2/build/jni" > -I"/builddir/build/BUILD/jffi-0.6.2/build/jni"/jni > -I/builddir/build/BUILD/jffi-0.6.2/jni > -I"/builddir/build/BUILD/jffi-0.6.2/jni/jffi" -fPIC > -I"/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/../include" > -I"/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/../include/linux" > -I/usr/lib/libffi-3.0.9/include -D_REENTRANT -D_LARGEFILE64_SOURCE > -D_GNU_SOURCE -pthread -march=i586 -mtune=generic -c > /builddir/build/BUILD/jffi-0.6.2/jni/jffi/Array.c -o > /builddir/build/BUILD/jffi-0.6.2/build/jni/jffi/Array.o > ------------------------------------------------------------------- > You can check the current compilation flags by > $ rpm --eval %optflags > https://fedoraproject.org/wiki/Packaging/Guidelines#Compiler_flags > Done, a patch was added to add these flags to the jni makefile. > * jni-containing jar file location > - This jar file uses jni and should be installed under %_libdir/%name > > https://fedoraproject.org/wiki/Packaging/Java#Packaging_JAR_files_that_use_JNI > > * Using ln > - For this please see my comment on bug 561482. > > * Documents > - "COPYING" file (i.e. GPLv3 license text) should be also added to %doc. All three are done Updated and uploaded new jffi rpm: Spec URL: http://mo.morsi.org/files/jruby/jffi.spec SRPM URL: http://mo.morsi.org/files/jruby/jffi-0.6.5-1.fc12.src.rpm
For 0.6.5-1: * Compilation issue A First of all, now build fails: http://koji.fedoraproject.org/koji/taskinfo?taskID=1996972 This is because -Werror. B Even after -Werror is removed, build fails on ppc64: http://koji.fedoraproject.org/koji/taskinfo?taskID=1997040 The failing command is: ------------------------------------------------------------------------ [exec] cc -m32 -o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/libjffi-0.6.so -shared -mimpure-text -static-libgcc -Wl,-soname,libjffi-0.6.so -Wl,-O1 /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/Array.o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/Closure.o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/Exception.o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/FastIntInvoke.o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/FastLongInvoke.o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/Foreign.o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/Function.o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/Internals.o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/Invoke.o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/LastError.o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/Library.o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/Memory.o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/MemoryIO.o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/Struct.o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/Type.o /builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/jffi/deprecated.o -lffi [exec] /usr/bin/ld: crti.o: No such file: No such file or directory [exec] collect2: ld returned 1 exit status [exec] make: *** [/builddir/build/BUILD/wmeissner-jffi-bbb81f1/build/jni/libjffi-0.6.so] Error 1 ----------------------------------------------------------------------- Well, -m32 is wrong for ppc64. This is because {jni/libtest}/GNUmakefile does not check if the arch is ppc64 or not.... however this check is anyway not needed anyway. * Test - Forgot to mention this, however please check if some test programs are available or not (as this package contains test/ directory) * Empty debuginfo ----------------------------------------------------------------------- jffi-debuginfo.i686: E: debuginfo-without-sources ----------------------------------------------------------------------- - Well, I don't know how Java packages treat this by default, however generally to create debuginfo rpm corretly, libjffi-0.6.so should not be stripped in build process itself and should be handled by find-debuginfo.sh and so on.
(In reply to comment #3) > For 0.6.5-1: > > * Compilation issue > A First of all, now build fails: > http://koji.fedoraproject.org/koji/taskinfo?taskID=1996972 > This is because -Werror. Patched the source to remove -Werror > > B Even after -Werror is removed, build fails on ppc64: > http://koji.fedoraproject.org/koji/taskinfo?taskID=1997040 > The failing command is: > Well, -m32 is wrong for ppc64. This is because {jni/libtest}/GNUmakefile > does not check if the arch is ppc64 or not.... however > this check is anyway not needed anyway. I see the same thing, this isn't a blocker since it builds fine of i686 and x86_64 correct? > > * Test > - Forgot to mention this, however please check if some test programs > are available or not (as this package contains test/ directory) > Package now includes a check section which runs the test suite. All tests run fine. > * Empty debuginfo > ----------------------------------------------------------------------- > jffi-debuginfo.i686: E: debuginfo-without-sources > ----------------------------------------------------------------------- > - Well, I don't know how Java packages treat this by default, > however generally to create debuginfo rpm corretly, libjffi-0.6.so > should not be stripped in build process itself and should > be handled by find-debuginfo.sh and so on. I'm not getting this error. Instead I get W: unstripped-binary-or-object /usr/lib/jffi/libjffi-0.6.so Removing the call to "strip" in the makefile and marking the shared object as executable does not seem to generate the debuginfo package as detailed online. Unless you know of the fix, I'm leaving this as is as there seem to be other packages that have been approved / accepted in lieu of this warning. Update spec and srpm: Spec URL: http://mo.morsi.org/files/jruby/jffi.spec SRPM URL: http://mo.morsi.org/files/jruby/jffi-0.6.5-2.fc12.src.rpm
For -2: (In reply to comment #4) > > B Even after -Werror is removed, build fails on ppc64: > > http://koji.fedoraproject.org/koji/taskinfo?taskID=1997040 > > The failing command is: > > Well, -m32 is wrong for ppc64. This is because {jni/libtest}/GNUmakefile > > does not check if the arch is ppc64 or not.... however > > this check is anyway not needed anyway. > > I see the same thing, this isn't a blocker since it builds fine of i686 and > x86_64 correct? * Unless build failure on ppc{,64} cannot really be fixed, please fix. - For the issue that -m32 is passed on ppc64, adding ------------------------------------------------------------------ sed -i.cpu -e '/m\$(MODEL)/d' \ jni/GNUmakefile libtest/GNUmakefile ------------------------------------------------------------------ at %prep is enough. ! Note Unless you create ppc{,64} packages, we will have to write "Exclude: ppc pp64" declaration on all packages which depend on jffi, which is really not desired unless this is really unavoidable. > > * Test > > - Forgot to mention this, however please check if some test programs > > are available or not (as this package contains test/ directory) > > > > Package now includes a check section which runs the test suite. All tests run > fine. * Well, unfortunately test fails on ppc{,64}, I don't know why, need to remove test/ directory on ppc{,64}. > > * Empty debuginfo > > ----------------------------------------------------------------------- > > jffi-debuginfo.i686: E: debuginfo-without-sources > > ----------------------------------------------------------------------- > > - Well, I don't know how Java packages treat this by default, > > however generally to create debuginfo rpm corretly, libjffi-0.6.so > > should not be stripped in build process itself and should > > be handled by find-debuginfo.sh and so on. > > I'm not getting this error. Instead I get > > W: unstripped-binary-or-object /usr/lib/jffi/libjffi-0.6.so - Did you try rpmlint on -debuginfo rpm? (by the way, is redhat-rpm-config rpm correctly installed?) > Removing the call to "strip" in the makefile and marking the shared object as > executable does not seem to generate the debuginfo package as detailed online. - It does create debuginfo rpm (well, actually as I did not want to check where strip is used in detail, I used: --------------------------------------------------------------------------- mkdir -p BIN cd BIN ln -sf /bin/true strip cd .. --------------------------------------------------------------------------- at %prep and after that I added --------------------------------------------------------------------------- export PATH=$(pwd)/BIN:$PATH --------------------------------------------------------------------------- to add %prep, %build, %install > Unless you know of the fix, I'm leaving this as is as there seem to be other > packages that have been approved / accepted in lieu of this warning. - Unfortunately I am not going to approve any packages unless debuginfo rpm issue is properly handled. ! Note With debuginfo rpm correctly created, rpmlint warns like: --------------------------------------------------------------------------- jffi-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/wmeissner-jffi-bbb81f1/jni/jffi/jffi.h --------------------------------------------------------------------------- Please execute --------------------------------------------------------------------------- chmod 0644 jni/jffi/jffi.h --------------------------------------------------------------------------- at %prep By the way scratch build result for jffi srpm which I slightly modify to address ppc{,64} build issue / debuginfo rpm creation issue can be downloaded from: http://koji.fedoraproject.org/scratch/mtasaka/task_2012055/ ( srpm also there ) Also some other notes: * build-jar-repository at %prep - Usually %prep should be for only expanding source, patching / modifying source and so on, so maybe it is better that --------------------------------------------------------------------------- mkdir lib/build_lib build-jar-repository -s -p lib/build_lib junit junit4 --------------------------------------------------------------------------- lines should be moved to %build.
ping?
Sorry for the delay, alot of things in the work queue. (In reply to comment #5) > For -2: > > (In reply to comment #4) > > > B Even after -Werror is removed, build fails on ppc64: > > > http://koji.fedoraproject.org/koji/taskinfo?taskID=1997040 > > > The failing command is: > > > Well, -m32 is wrong for ppc64. This is because {jni/libtest}/GNUmakefile > > > does not check if the arch is ppc64 or not.... however > > > this check is anyway not needed anyway. > > > > I see the same thing, this isn't a blocker since it builds fine of i686 and > > x86_64 correct? > > * Unless build failure on ppc{,64} cannot really be fixed, please fix. > - For the issue that -m32 is passed on ppc64, adding > ------------------------------------------------------------------ > sed -i.cpu -e '/m\$(MODEL)/d' \ > jni/GNUmakefile libtest/GNUmakefile > ------------------------------------------------------------------ > at %prep is enough. > > ! Note > Unless you create ppc{,64} packages, we will have to write "Exclude: ppc > pp64" > declaration on all packages which depend on jffi, which is really not > desired > unless this is really unavoidable.' I'm having trouble getting it to build in a ppc mock / koji environment in the first place. The link to your koji build doesn't seem available and when I goto run either koji build --scratch --arch-override ppc64 dist-f14 jffi-0.6.5-3.fc12.src.rpm or su - build -c "mock -r fedora-devel-ppc /tmp/jffi-0.6.5-3.fc12.src.rpm " Neither is successful. In the case of Koji, I get "BuildError: No matching arches were found" I've submitted packages and seen them submitted that don't build on ppc w/out any fuss, I think they get pushed to the architectures they work on and that have all required dependencies, the others are just ignored. > > > > * Test > > > - Forgot to mention this, however please check if some test programs > > > are available or not (as this package contains test/ directory) > > > > > > > Package now includes a check section which runs the test suite. All tests run > > fine. > * Well, unfortunately test fails on ppc{,64}, I don't know why, > need to remove test/ directory on ppc{,64}. > > > > * Empty debuginfo > > > ----------------------------------------------------------------------- > > > jffi-debuginfo.i686: E: debuginfo-without-sources > > > ----------------------------------------------------------------------- > > > - Well, I don't know how Java packages treat this by default, > > > however generally to create debuginfo rpm corretly, libjffi-0.6.so > > > should not be stripped in build process itself and should > > > be handled by find-debuginfo.sh and so on. > > > > I'm not getting this error. Instead I get > > > > W: unstripped-binary-or-object /usr/lib/jffi/libjffi-0.6.so > > - Did you try rpmlint on -debuginfo rpm? (by the way, is redhat-rpm-config > rpm correctly installed?) Ah I was missing that package. Thanks for the tip. > > > Removing the call to "strip" in the makefile and marking the shared object as > > executable does not seem to generate the debuginfo package as detailed online. > > - It does create debuginfo rpm > (well, actually as I did not want to check where strip is used in detail, > I used: > --------------------------------------------------------------------------- > mkdir -p BIN > cd BIN > ln -sf /bin/true strip > cd .. > --------------------------------------------------------------------------- > at %prep and after that I added > --------------------------------------------------------------------------- > export PATH=$(pwd)/BIN:$PATH > --------------------------------------------------------------------------- > to add %prep, %build, %install > > > Unless you know of the fix, I'm leaving this as is as there seem to be other > > packages that have been approved / accepted in lieu of this warning. > > - Unfortunately I am not going to approve any packages unless debuginfo > rpm issue is properly handled. Done. The first patch replaces 'strip' w/ /bin/true, taking care of this error. > ! Note > With debuginfo rpm correctly created, rpmlint warns like: > --------------------------------------------------------------------------- > jffi-debuginfo.i686: W: spurious-executable-perm > /usr/src/debug/wmeissner-jffi-bbb81f1/jni/jffi/jffi.h > --------------------------------------------------------------------------- > Please execute > --------------------------------------------------------------------------- > chmod 0644 jni/jffi/jffi.h > --------------------------------------------------------------------------- > at %prep > Done. > By the way scratch build result for jffi srpm which I slightly modify > to address ppc{,64} build issue / debuginfo rpm creation issue can > be downloaded from: > http://koji.fedoraproject.org/scratch/mtasaka/task_2012055/ > ( srpm also there ) Link doesn't seem to work. > > Also some other notes: > * build-jar-repository at %prep > - Usually %prep should be for only expanding source, patching / modifying > source and so on, so maybe it is better that > --------------------------------------------------------------------------- > mkdir lib/build_lib > build-jar-repository -s -p lib/build_lib junit junit4 > --------------------------------------------------------------------------- > lines should be moved to %build. Done. Update spec and srpm: Spec URL: http://mo.morsi.org/files/jruby/jffi.spec SRPM URL: http://mo.morsi.org/files/jruby/jffi-0.6.5-3.fc12.src.rpm
I will review your newest srpm later, however just a note (In reply to comment #7) > I'm having trouble getting it to build in a ppc mock / koji environment in the > first place. The link to your koji build doesn't seem available - koji scratch build results will be deleted in about one week... > and when I goto run either > koji build --scratch --arch-override ppc64 dist-f14 jffi-0.6.5-3.fc12.src.rpm > or > su - build -c "mock -r fedora-devel-ppc /tmp/jffi-0.6.5-3.fc12.src.rpm " > Neither is successful. In the case of Koji, I get > > "BuildError: No matching arches were found" - ppc{,64} is available only on F-12/11 (not on F-13/14)
For -3: * For ppc{,64} - To compile your jffi.src on these architecture, adding the below at the end of %prep is enough ------------------------------------------------------------------ %prep ... ... ... sed -i.cpu -e '/m\$(MODEL)/d' jni/GNUmakefile libtest/GNUmakefile %ifnarch %{ix86} x86_64 rm -rf test/ %endif ------------------------------------------------------------------ ! Well, test fails on these archs, I don't know why (I don't know java well). http://koji.fedoraproject.org/koji/taskinfo?taskID=2044713 Other things seem okay.
ping ?
ping again?
Again ping?
Once again, sorry for the delay, working on many things. Spec updated to include your ppc fix and re-uploaded: Update spec and srpm: Spec URL: http://mo.morsi.org/files/jruby/jffi.spec SRPM URL: http://mo.morsi.org/files/jruby/jffi-0.6.5-4.fc11.src.rpm Koji build: http://koji.fedoraproject.org/koji/taskinfo?taskID=2115465 rpmlint rpmbuild/RPMS/x86_64/jffi-* rpmbuild/SRPMS/jffi-0.6.5-4.fc11.src.rpm rpmbuild/SPECS/jffi.spec 4 packages and 1 specfiles checked; 0 errors, 0 warnings.
Okay. ---------------------------------------------------------- This package (jffi) is APPROVED by mtasaka ----------------------------------------------------------
New Package CVS Request ======================= Package Name: jffi Short Description: An optimized Java interface to libffi Owners: mmorsi Branches: F-11 F-12 F-13 InitialCC:
CVS done (by process-cvs-requests.py).
Closing.