[fedora-java] Patch to find-and-nativify

Andrew Haley aph at redhat.com
Mon Apr 11 09:18:30 UTC 2005


Robin Green writes:
 > This proposed patch makes 4 changes to the find-and-nativify in 
 > java-1.4.2-gcj-compat-1.4.2.0-40jpp_14rh.
 > 
 > - Generates a database as it goes, rather than forcing the spec file
 > writer to write a similar script to build the db.
 > 
 > - Qualifies each lib with the package name, to avoid name collisions in
 > Provides. (Which suggests the thought that since package names _must_ be
 > unique by design in rpm - isn't it then sufficient to generate libs in
 > %{_libdir}/%{name} instead of as %{_libdir}/%{name}/full/path/to/jar ?)
 > 
 > - Ignores jars which are symlinks (they might not even be in the package,
 > and if they are, you will end up compiling them more than once.)
 > 
 > - You can set the SKIPTAR environment variable to skip the tar building,
 > for more efficient rpm builds.
 > 
 > I have a handy utility script to post next which assumes some of these
 > changes, so I will wait to see what happens to this patch first.
 > 
 > -- 
 > Robin
 > 
 > 
 > --- find-and-nativify.old       2005-04-10 22:28:23.000000000 +0100
 > +++ find-and-nativify   2005-04-11 00:02:59.000000000 +0100
 > @@ -12,20 +12,33 @@
 >        (ex. eclipse)
 >      BUILD_OPTIONS - a list of gcj options to pass to nativify
 >        (outside of -findirect-dispatch, -shared, and -Wl,-Bsymbolic)
 > +
 > +  By default, the generated database will assume libraries will go in /usr/lib.
 > +  To change this, set LIBDIR to the appropriate directory.
 > +
 > +  Set SKIPTAR=y to skip tar file creation.
 >  "}
 > 
 >  name=$1
 >  build_options=$2
 > 
 > -for jarfile in $(find -name \*.jar); do
 > +# There's this great concept - it's called databases with no fixed size limits!

They don't have fixed size limits.

 > +# For now, kludge the fixed size limit at 80000
 > +gcj-dbtool -n $name.db 80000
 > +
 > +# Use type -f to ignore symlinks
 > +for jarfile in $(find -type f -name \*.jar); do
 >      # This is ugly.  What we want is to be able to natively-compile all the
 >      # jars within an RPM build tree as well as from an arbitrary location
 >      # in the filesystem.  Patches welcome :)
 >      so_dir="./$name/$(dirname $jarfile | \
 >        sed 's:^\.\+/::')";
 >      mkdir -p $so_dir;
 > -    dest_so_name=$so_dir/lib`basename $jarfile`.so
 > +    dest_so_name=$so_dir/lib$name-`basename $jarfile`.so
 >      nativify $jarfile $dest_so_name "$build_options"
 > +    gcj-dbtool -f $name.db $jarfile ${LIBDIR:-/usr/lib}/$dest_so_name

It's a lot quicker to build individual dbs and mrget them at the end.

Andrew.




More information about the fedora-devel-java-list mailing list