I just added code to CVS that enables initial splitoff support. All 
brave developers please go ahead and install it and test how it 
works. To do so, check out the "fink" CVS module and use the 
inject.pl script.

I'd like to get as much feedback in short time as possible, even if 
no package does yet use splitoffs. The reason for this is that I am 
not sure I didn't break anything else! So please update to it, and 
perform some builds/installs. Report anything weird/unusual, and also 
if you did some major work with it succesfully.

Besides the big chunk, splitoff support, I changed a few other minor 
things, most notably percent expansion is now also done in the 
Depends/BuildDepends/Conflicts/Replaces/Provides fields.


The syntax for splitoffs is mostly as we discussed it here before. 
One difference to the proposal is that if you need muliple splitoffs, 
you have to enumareate them just like with the Source field, i.e. 
SplitOff, SplitOff2, SplitOff3, etc.. An example package (actually 
used by me for testing):


Package: foobar
Version: 0.23
Revision: 1
Depends: mytest-a
CompileScript: <<
  cc -o foobar foobar.c
  echo "This is a fake!" > libfoobar.0.23.dylib
<<
InstallScript: <<
  mkdir -p %i/bin
  install -m 755 foobar %i/bin
  mkdir -p %i/lib
  install -m 755 libfoobar.%v.dylib %i/lib
  ln -s libfoobar.%v.dylib %i/lib/libfoobar.0.dylib
  ln -s libfoobar.0.dylib %i/lib/libfoobar.dylib
<<
SplitOff: <<
  Package: %N-shlibs
  Depends: othertest
  # Note: files uses the same syntax as DocFiles, only that pathes are
  # relativ to %i and not to %p
  Files: lib/libfoobar.0.23.dylib
  DocFiles: COPYING
<<
SplitOff2: <<
  Package: %N-bin
  Depends: mytest-b, %N-shlibs
  # Note: files uses the same syntax as DocFiles, only that pathes are
  # relativ to %i and not to %p
  Files: bin/
  DocFiles: COPYING
<<
DocFiles: COPYING README
Description: Allows you to foo all your bars
License: GPL
Maintainer: Max Horn <[EMAIL PROTECTED]>



For your information, inherited fields are:
Version (cannot be changed in splitoff)
Revision (cannot be changed in splitoff)
Maintainer (cannot be changed in splitoff)
Homepage (cannot be changed in splitoff)
Description
DescDetail
License

No other field is inherited right now. Nor do I prevent you from 
specifying a CompileScript etc. in the splitoff currently, but it has 
no effect anyway. However, you *can* use PostRMScripts etc., and you 
can even use an InstallScript if you have to do some weird things 
that the "Files" field can't handle. UpdatePOD should work as well, 
as does DocFiles.

Note the new "%N" field which expands to the name of the 
parent/master package. Likewise, there are %I and %D fields, which 
are similiar to %d/%i except that they point to the dest/install dir 
of the master package (for regular packages, they are identical to 
%d/%i).

For real world examples of the splitoff feature, check out the 
"shared-libraries" module from CVS. David added some splitoff enabled 
packages to it, like gmp and libpng.


There are some issues that will have to be resolved. Most urging is 
the following:

Every dependency is also a build dep. Now, splitoff's can have 
additional deps. And the master and all its splitoffs are built at 
the same time. Hence, we have to check *all* deps of the master and 
its splitoffs before we can start building. Right now this is *not* 
happening, only the deps of the master are checked (and if you use 
for example "fink build foobar-shlibs", only the deps of the splitoff 
are checked!). This will be fixed soon I think.


Max
-- 
-----------------------------------------------
Max Horn
Software Developer

email: <mailto:[EMAIL PROTECTED]>
phone: (+49) 6151-494890

_______________________________________________
Fink-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/fink-devel

Reply via email to