From 4696b9661b7b4da213b8daa42e70de57b794afbf Mon Sep 17 00:00:00 2001
From: Cheng Shao <terrorjack@type.dance>
Date: Sun, 18 Feb 2024 16:59:51 +0000
Subject: [PATCH] hadrian: fix wasm backend post linker script permissions

The post-link.mjs script was incorrectly copied and installed as a
regular data file without executable permission, this commit fixes it.
---
 hadrian/bindist/Makefile      | 4 +++-
 hadrian/src/Rules/Generate.hs | 5 ++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/hadrian/bindist/Makefile b/hadrian/bindist/Makefile
index 845189f55263..1a898cb6613b 100644
--- a/hadrian/bindist/Makefile
+++ b/hadrian/bindist/Makefile
@@ -169,7 +169,7 @@ install_bin_direct:
 install_lib: lib/settings
 	@echo "Copying libraries to $(DESTDIR)$(ActualLibsDir)"
 	$(INSTALL_DIR) "$(DESTDIR)$(ActualLibsDir)"
-	
+
 	@dest="$(DESTDIR)$(ActualLibsDir)"; \
 	cd lib; \
 	for i in `$(FIND) . -type f`; do \
@@ -185,6 +185,8 @@ install_lib: lib/settings
 		    $(INSTALL_SHLIB) $$i "$$dest/`dirname $$i`" ;; \
 		  *.dylib) \
 		    $(INSTALL_SHLIB) $$i "$$dest/`dirname $$i`" ;; \
+		  *.mjs) \
+		    $(INSTALL_SCRIPT) $$i "$$dest/`dirname $$i`" ;; \
 		  *) \
 		    $(INSTALL_DATA) $$i "$$dest/`dirname $$i`" ;; \
 		esac; \
diff --git a/hadrian/src/Rules/Generate.hs b/hadrian/src/Rules/Generate.hs
index 9185710b3c90..5d2460fafeb1 100644
--- a/hadrian/src/Rules/Generate.hs
+++ b/hadrian/src/Rules/Generate.hs
@@ -211,7 +211,10 @@ copyRules = do
         prefix -/- "ghc-interp.js"     <~ return "."
         prefix -/- "template-hsc.h" <~ return (pkgPath hsc2hs -/- "data")
 
-        prefix -/- "post-link.mjs"     <~ pure "utils/jsffi"
+        prefix -/- "post-link.mjs" %> \file -> do
+            copyFile ("utils/jsffi" -/- makeRelative prefix file) file
+            makeExecutable file
+
         prefix -/- "prelude.js"        <~ pure "utils/jsffi"
 
         prefix -/- "html/**"           <~ return "utils/haddock/haddock-api/resources"
-- 
GitLab