I have an idea for a modification to the current Fink build & install process that would make it much more powerful and easy to use. I propose that info files provide a list of instructions to control 3 major steps in the Fink process:
1) Initial info file parsing
2) Package build and install phases (Creating the .deb file)
3) .deb file installation

An example might be something like:

Package: foo
Version: 0.1.0
Revision: 3

InfoFormat: new (Or maybe 1.0.0 or something)

<All>
<if variant=nossl>
<if variant=gnome>
ShlibsAutogen: gnome-libs # <-- For stuff like this, the Shlibs code should autogenerate stuff (See below ***)
Recommends: bundle-gnome
</if>
<if variant=kde>
ShlibsAutogen: kde-base, kde-libs
Recommends: bundle-kde
</if>
</if>
<if variant=ssl>
ShlibsAutogen: openssl
<if variant=gnome>
ShlibsAutogen: gnome-libs-ssl
Recommends: bundle-gnome-ssl
</if>
<if variant=kde>
ShlibsAutogen: kde-base-ssl, kde-libs-ssl
Recommends: bundle-kde-ssl
</if>
</if>
<if variant=x11>
Depends: x11
</If>

</All>

<Parse>
Description: foo implements bar
# Other desc stuff, maintainer stuff, etc
AvailableVariants: (*letter,a4),(kde,gnome,*x11,nox),(*ssl,nossl) # <-- Exclusive are grouped in ()s
AvailableSplitoffs: *_main_=group,-shlibs,-dev,-bin,-doc
</Parse>

<Build>
#Put any sole BuildDepends as a Depends line in here, and BuildConflicts would be Conflicts here
# you might put stuff like m4 deps in here.
# This would be processed like a script, eg:
# Patch: foo
# Script: [ Patch stuff ]
# Script: [ Put some files in places]
# Script: [ Compile stuff ]
# Script: [ Move files to various places ]
# Would be processes in that order
# Also allows <If variant=foo>, maybe even create other control statements
</Build>

<Install>
# Here is where you add any install deps, stuff that only needs to be there at install time, IE 3rd-party webmin modules
# don't need webmin installed to be packaged, they only require it when installed.
# This would be run like a script too
# Also allows <If variant=foo>, maybe even create other control statements
# This could be implemented through some cool installscripts and stuff.
# This might be harder if dpkg locks its database while running InstallScripts, but I don't think it does,
</Install>

This would be a long term change, and would best be implemented in a separate branch until mature, but I believe that it could make certain feature requests easier, eg "Multithreading/Multiprocesses", "Fix Conflicts field & add BuildConflicts".

This is just kind of an idea I've been thinking about for a while that I'd like to throw out there. Feel free to comment, suggest, flame, shoot down, provide helpful advice, whatever.
What do you all think?

Cheers,
Kyle Moffett



-------------------------------------------------------
This sf.net email is sponsored by:
With Great Power, Comes Great Responsibility Learn to use your power at OSDN's High Performance Computing Channel
http://hpc.devchannel.org/
_______________________________________________
Fink-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/fink-devel

Reply via email to