buildroot/package/ecryptfs-utils/0003-fix-parallel-build-iss...

62 lines
2.8 KiB
Diff
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

fix parallel build issue
Build randomly fails since December 2017 on buildroot
(http://autobuild.buildroot.org/?reason=ecryptfs-utils-111):
make[5]: Entering directory '/home/buildroot/autobuild/instance-2/output-1/build/ecryptfs-utils-111/src/utils'
/bin/mkdir -p '/home/buildroot/autobuild/instance-2/output-1/target/sbin'
/bin/bash ../../libtool --mode=install /usr/bin/install -c mount.ecryptfs umount.ecryptfs mount.ecryptfs_private '/home/buildroot/autobuild/instance-2/output-1/target/sbin'
libtool: install: /usr/bin/install -c mount.ecryptfs /home/buildroot/autobuild/instance-2/output-1/target/sbin/mount.ecryptfs
/usr/bin/install: cannot create regular file '/home/buildroot/autobuild/instance-2/output-1/target/sbin/mount.ecryptfs': File exists
Makefile:832: recipe for target 'install-rootsbinPROGRAMS' failed
make[5]: *** [install-rootsbinPROGRAMS] Error 1
As spotted by Thomas Petazzoni, build failure happens because of the
following line in src/utils/Makefile.am:
install-exec-hook: install-rootsbinPROGRAMS
-rm -f "$(DESTDIR)/$(rootsbindir)/umount.ecryptfs_private"
$(LN_S) "mount.ecryptfs_private" "$(DESTDIR)/$(rootsbindir)/umount.ecryptfs_private"
The install-exec-hook target should not have a dependency on
install-rootsbinPROGRAMS.
From https://www.gnu.org/software/automake/manual/html_node/Extending.html#Extending:
"""
In contrast, some rules also have a way to run another rule, called a
hook; hooks are always executed after the main rules work is done. The
hook is named after the principal target, with -hook appended. The
targets allowing hooks are install-data, install-exec, uninstall, dist,
and distcheck.
For instance, here is how to create a hard link to an installed program:
install-exec-hook:
ln $(DESTDIR)$(bindir)/program$(EXEEXT) \
$(DESTDIR)$(bindir)/proglink$(EXEEXT)
"""
So, they explicitly say that these hooks are run after the main rule
work is done, which means the dependency on install-rootsbinPROGRAMS is
not needed. And the example they use to illustrate is *exactly* the
situation of ecryptfs-utils: creating a link to a program that was
installed.
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
[Upstream status: https://bugs.launchpad.net/ecryptfs/+bug/1857622]
diff -Nuar ecryptfs-utils-111-orig/src/utils/Makefile.in ecryptfs-utils-111/src/utils/Makefile.in
--- ecryptfs-utils-111-orig/src/utils/Makefile.in 2019-12-26 15:14:16.656146065 +0100
+++ ecryptfs-utils-111/src/utils/Makefile.in 2019-12-26 17:36:07.108496164 +0100
@@ -1522,7 +1522,7 @@
.PRECIOUS: Makefile
-install-exec-hook: install-rootsbinPROGRAMS
+install-exec-hook:
-rm -f "$(DESTDIR)/$(rootsbindir)/umount.ecryptfs_private"
$(LN_S) "mount.ecryptfs_private" "$(DESTDIR)/$(rootsbindir)/umount.ecryptfs_private"