[pacman-dev] FS#7982 - patch to makepkg to allow PKGBUILDs building more than one package
Marc - A. Dahlhaus
mad at wol.de
Mon Jun 16 06:57:04 EDT 2008
Allan McRae schrieb:
> Xavier wrote:
>
>> On Mon, Jun 16, 2008 at 9:49 AM, Marc - A. Dahlhaus <mad at wol.de> wrote:
>>
>>
>>> Hello List,
>>>
>>> a few comments on the posted patch...
>>>
>>> @@ -1389,7 +1391,57 @@ if [ "$INFAKEROOT" = "1" ]; then
>>> tidy_install
>>> fi
>>>
>>> - create_package
>>> + if [ "$splitinstall" != "" ] ; then
>>> + backup_o=$backup
>>> + conflicts_o=$conflicts
>>> + depends_o=$depends
>>> + groups_o=$groups
>>> + install_o=$install
>>> + license_o=$license
>>> + pkgdesc_o=$pkgdesc
>>> + pkgname_o=$pkgname
>>> + pkgver_o=$pkgver
>>> + provides_o=$provides
>>> + replaces_o=$replaces
>>> + url_o=$url
>>>
>>> This is the right place to do this in my opinion, that way you have the global defined defaults for every slpit-package.
>>> To move this inside of the loop would kill the posibility to get the fuits from my next comment.
>>>
>>>
>>>
>> That is not how I understood Allan's comment.
>> I understood he was suggesting to transform this long enumeration to a loop.
>>
>>
>
> The loop is what I was after.
>
Ok, i've misinterpreted it.
>
>>
>>
>>> + create_package
>>>
>>> I think this is wrong from the view to build sub-packages out of one compiled tree.
>>> build should be used to only build the sources and prepare everything which would be usefull for all subpackages.
>>>
>>> That way we could add a new param to makepkg to bould only a subset of the splitpackages by overriding the contents of the defined var splitinstall.
>>>
>>>
>>> + for it in "${splitinstall[@]}" ; do
>>> + if [ -d "$pkgdir" ]; then
>>> + msg "Removing existing pkg/ directory..."
>>> + rm -rf "$pkgdir"
>>> + fi
>>> + mkdir -p "$pkgdir"
>>>
>>> I like it that way and we can fix the issue spotted by *Allan McRae* (non working repackage param) if we take the way of my prevous comment and allow to rebuild only a subset of the splitpackages.
>>> I think we should add the splitpackage-name to repackage as additional param to makepkg's command line and use that to override the splitinstall value in case we want repackage.
>>>
>>>
>>>
>>
>>
>
> Repackaging does no building at all, it just zips up the pkg directory
> with the necessary files. So allowing a splitpkg parameter for the
> repackage option would not work with the current implementation.
>
Yes of course, a repackage should not rebuild anything.
The suggested separation of building (function build) from installation
(a function in splitinstall array) would achieve that for you.
The repackaging would just overwrite the data (by installing it) and the
vars for your package (pkgname, deps...) and repackage it.
The normal workflow after an error would be to fix it inside of your
PKGBUILD file instead of in the pkg directory anyway.
Also it wouldn't work without altering the variables to get
splitpackages out in a repackaging case the way you would in a normal
build without running the install function which alters the pkgbuild
vars for you.
Some nice cornercases would be that you could list all dependencies you
need to build all of your subpackages in your main definition on top of
your PKGBUILD.
And you can break down to the ones really needed for a splitpackage in
your install function.
Think about a package php-common and splitpackage php-mysql in case of
the dependencies to (lib)mysql...
>> That looks quite weird to me.
>> I would prefer having makepkg keeps all split packages in different
>> subdirectories, and have the repackage operation repackage all split
>> packages.
>>
>>
>
> Agreed that is the way to fix this...
>
> Allan
The point of this suggestion was to make it possible to reuse allready
working and tested code as much as possible.
But it was just a proposal from my point of view at that time.
After some thinking i came to the conclusion that it would be better to
have all splitinstall trees around after a run without "-c" to check if
the dependencies are correct.
So let's do it that way.
Marc
More information about the pacman-dev
mailing list