FS#39767 - Cyclic makedepends between systemd and util-linux

Attached to Project: Arch Linux
Opened by Nicolas I. (IooNag) - Sunday, 06 April 2014, 10:10 GMT
Last edited by Dave Reisner (falconindy) - Sunday, 06 April 2014, 13:42 GMT
Task Type Bug Report
Category Packages: Core
Status Closed
Assigned To No-one
Architecture All
Severity Medium
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:

Right now, systemd PKGBUILD has "makedepends=(... 'util-linux' ...)" and util-linux PKGBUILD "makedepends=(systemd ...)". This makes it impossible to build packages with a non-standard configuration using custom PKGBUILD which changes the ./configure flags.

Additional info:

* The buggy PKGBUILDs are https://projects.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/systemd&id=27d11ded7a4e96ada9781deb5c026ae0653baab2 and https://projects.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/util-linux&id=98362b584c2edeadec4783f53b1c0999e2bb40cf

* A few weeks ago there have been cyclic dependencies between binary packages (cf. https://mailman.archlinux.org/pipermail/arch-dev-public/2014-February/025912.html https://bugs.archlinux.org/task/35893 and https://projects.archlinux.org/svntogit/packages.git/commit/trunk/PKGBUILD?h=packages/systemd&id=19bd7d5d1e5755323459d26340be834da6ed52c8 ). This is an other bug which doesn't care about the build dependencies.

* This bug affects everyone using SELinux as both systemd and util-linux needs to be compiled with SELinux support. However the bug I report here is not specific to this unsupported configuration but is more general, as it makes it impossible to customize both systemd and util-linux.
This task depends upon

Closed by  Dave Reisner (falconindy)
Sunday, 06 April 2014, 13:42 GMT
Reason for closing:  Not a bug
Additional comments about closing:  Nothing new here as per Allan's comments.
Comment by Allan McRae (Allan) - Sunday, 06 April 2014, 11:44 GMT
Obviously it is not impossible to build both of these... The package maintainers managed.
Comment by Nicolas I. (IooNag) - Sunday, 06 April 2014, 13:14 GMT
I believe the package maintainers already had the packages installed with a previous version when they built the current version. By doing so, makepkg finds all the needed dependencies at build time and is fine (and it works fine so long no version is enforced in package dependencies).

Right now, the steps I follow to build my custom packages are:

1) Install core/libutil-linux and core/libsystemd
2) Replace "libutil-linux-custom" with libutil-linux in systemd-custom's PKGBUILD and build systemd-custom with makepkg and install libsystemd-custom (but not the new systemd-custom package)
3) Build util-linux-custom with makepkg and install libutil-linux-custom
4) Build a second time systemd-custom with "libutil-linux-custom" instead of "libutil-linux" in PKGBUILD's makedepends and install systemd-custom and libsystemd-custom
5) Build a second time util-linux-custom and install util-linux-custom and libutil-linux-custom

This takes time, is error-prone and prevents the custom packages from been included in the AUR. Are there some ways to no longer have the build-time cyclic dependency so that this workflow can be changed to something like "build and install libsystemd-custom, build and install libutil-linux-custom, build and install systemd-custom, and finally build and install systemd-custom"?
Comment by Allan McRae (Allan) - Sunday, 06 April 2014, 13:20 GMT
No. It is called bootstraping a system.

Loading...