Use 'install' command for 'inplace/' install as we do in 'make install'
authorSergei Trofimovich <slyfox@gentoo.org>
Mon, 4 Aug 2014 13:09:44 +0000 (08:09 -0500)
committerAustin Seipp <austin@well-typed.com>
Mon, 4 Aug 2014 13:09:44 +0000 (08:09 -0500)
Summary:
On hardened gentoo ghc-stage2 does not work as-is,
as it uses runtime code generation/loading, thus
ghc0stage2 needs to be marked in a special way
(via POSIX extened attributes).

Before the patch we used 'cp -p' command, which
does not preserve that marking. It leads to buid
failure on hardened. Hardened's 'install' does
preserve POSIX xattrs, thus patch uses it instead.

'inplace/' directory can be seen the same way as target
for 'make install', thus using the same facilities
to install files to 'inplace/' sounds more consistent.

Reported-by: Jay Yang
Gentoo-bug: https://bugs.gentoo.org/518734
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Test Plan: tested ghc installation on vanilla and hardened distributions

Reviewers: austin

Reviewed By: austin

Subscribers: phaskell, simonmar, relrod, ezyang, carter

Differential Revision: https://phabricator.haskell.org/D108

rules/build-prog.mk

index 399369e..ba1fa00 100644 (file)
@@ -286,7 +286,7 @@ endif
 ifeq "$(findstring clean,$(MAKECMDGOALS))" ""
 ifeq "$$($1_$2_INSTALL_INPLACE)" "YES"
 $$($1_$2_INPLACE) : $1/$2/build/tmp/$$($1_$2_PROG_INPLACE) | $$$$(dir $$$$@)/.
-       "$$(CP)" -p $$< $$@
+       $$(INSTALL) -m 755 $$< $$@
 endif
 endif