| 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 rule’s 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" |
| |