From 8b8aadaa868bd5ae3f5293b2a7ddb51698e3e6e4 Mon Sep 17 00:00:00 2001 From: J Reece Wilson Date: Sun, 30 Jun 2024 03:29:48 +0100 Subject: [PATCH] [*] Added update libc scripts and improved support for debian build boxes --- Core/BuildHooks/BuildHooks.lua | 89 ++++++++++++++++++++++++++-------- 1 file changed, 68 insertions(+), 21 deletions(-) diff --git a/Core/BuildHooks/BuildHooks.lua b/Core/BuildHooks/BuildHooks.lua index 17bc1e6..3cfbabe 100644 --- a/Core/BuildHooks/BuildHooks.lua +++ b/Core/BuildHooks/BuildHooks.lua @@ -98,22 +98,51 @@ local function addUserDestCopy(name, type, config, platformName, arch, dir, proj io.writefile(outputPath .. ".exe", "#!/bin/bash\nchmod +x \"$(dirname \"$0\")/ld-Aurora.System.Linux.x86_64.so\"\nchmod +x \"$(dirname \"$0\")/".. fileName .. "\"\n\"$(dirname \"$0\")/ld-Aurora.System.Linux.x86_64.so\" \"$(dirname \"$0\")/".. fileName .. "\" $@") end - postbuildcommands("cp -f /lib64/ld-linux-x86-64.so.2 \"" .. dir .. "/ld-Aurora.System.Linux.x86_64.so\"") - postbuildcommands("cp -f /lib64/libc.so.6 \"" .. dir .. "/libc." .. platformSuffix .. ".so\"") - postbuildcommands("cp -f /lib64/libm.so.6 \"" .. dir .. "/libm." .. platformSuffix .. ".so\"") - postbuildcommands("cp -f /lib64/libgcc_s.so.1 \"" .. dir .. "/libgcc." .. platformSuffix .. ".so\"") + local kUpdateLib64String = "#!/bin/bash\n\ntest -e /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 && cp -f /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 ld-Aurora.System.Linux.x86_64.so || echo skipped\ntest -e /lib/x86_64-linux-gnu/libc.so.6 && cp -f /lib/x86_64-linux-gnu/libc.so.6 libc.System.Linux.x86_64.so || echo skipped\ntest -e /lib/x86_64-linux-gnu/libm.so.6 && cp -f /lib/x86_64-linux-gnu/libm.so.6 libm.System.Linux.x86_64.so || echo skipped\ntest -e /lib64/ld-linux-x86-64.so.2 && cp -f /lib64/ld-linux-x86-64.so.2 ld-Aurora.System.Linux.x86_64.so || echo skipped\ntest -e /lib64/libc.so.6 && cp -f /lib64/libc.so.6 libc.System.Linux.x86_64.so || echo skipped\ntest -e /lib64/libm.so.6 && cp -f /lib64/libm.so.6 libm.System.Linux.x86_64.so || echo skipped\n\nif which patchelf >/dev/null; then\n\n patchelf --replace-needed libc.so.6 libc.System.Linux.x86_64.so libm.System.Linux.x86_64.so\n patchelf --replace-needed libgcc_s.so.1 libgcc.System.Linux.x86_64.so libm.System.Linux.x86_64.so\n \n patchelf --replace-needed libm.so.6 libm.System.Linux.x86_64.so libc.System.Linux.x86_64.so\n patchelf --replace-needed libgcc_s.so.1 libgcc.System.Linux.x86_64.so libc.System.Linux.x86_64.so\n \n patchelf --replace-needed libc.so.6 libc.System.Linux.x86_64.so libgcc.System.Linux.x86_64.so\n patchelf --replace-needed libm.so.6 libm.System.Linux.x86_64.so libgcc.System.Linux.x86_64.so\n\nfi" + io.writefile(dir .. "/update_libc64.sh", kUpdateLib64String) + + if (os.isdir("/lib/x86_64-linux-gnu")) then + postbuildcommands("test -e /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 && cp -f /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 \"" .. dir .. "/ld-Aurora.System.Linux.x86_64.so\" || echo SKIP") + postbuildcommands("test -e /lib/x86_64-linux-gnu/libc.so.6 && cp -f /lib/x86_64-linux-gnu/libc.so.6 \"" .. dir .. "/libc." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib/x86_64-linux-gnu/libm.so.6 && cp -f /lib/x86_64-linux-gnu/libm.so.6 \"" .. dir .. "/libm." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib/x86_64-linux-gnu/libgcc_s.so.1 && cp -f /lib/x86_64-linux-gnu/libgcc_s.so.1 \"" .. dir .. "/libgcc." .. platformSuffix .. ".so\" || echo SKIP") + else + postbuildcommands("test -e /lib64/ld-linux-x86-64.so.2 && cp -f /lib64/ld-linux-x86-64.so.2 \"" .. dir .. "/ld-Aurora.System.Linux.x86_64.so\" || echo SKIP") + postbuildcommands("test -e /lib64/libc.so.6 && cp -f /lib64/libc.so.6 \"" .. dir .. "/libc." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib64/libm.so.6 && cp -f /lib64/libm.so.6 \"" .. dir .. "/libm." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib64/libgcc_s.so.1 && cp -f /lib64/libgcc_s.so.1 \"" .. dir .. "/libgcc." .. platformSuffix .. ".so\" || echo SKIP") + end else if (isExec) then postbuildcommands("patchelf --set-interpreter \"ld-Aurora.System.Linux.x86_32.so\" \"" .. outputPath .. "\"") io.writefile(outputPath .. ".exe", "#!/bin/bash\nchmod +x \"$(dirname \"$0\")/ld-Aurora.System.Linux.x86_32.so\"\nchmod +x \"$(dirname \"$0\")/".. fileName .. "\"\n\"$(dirname \"$0\")/ld-Aurora.System.Linux.x86_32.so\" \"$(dirname \"$0\")/".. fileName .. "\" $@") end + + local kUpdateLib32String = "#!/bin/bash\n\ntest -e /lib/i386-linux-gnu/ld-linux.so.2 && cp -f /lib/i386-linux-gnu/ld-linux.so.2 ld-Aurora.System.Linux.x86_32.so || echo skipped\ntest -e /lib/i386-linux-gnu/libc.so.6 && cp -f /lib/i386-linux-gnu/libc.so.6 libc.System.Linux.x86_32.so || echo skipped\ntest -e /lib/i386-linux-gnu/libm.so.6 && cp -f /lib/i386-linux-gnu/libm.so.6 libm.System.Linux.x86_32.so || echo skipped\ntest -e /lib/ld-linux.so.2 && cp -f /lib/ld-linux.so.2 ld-Aurora.System.Linux.x86_32.so || echo skipped\ntest -e /lib/libc.so.6 && cp -f /lib/libc.so.6 libc.System.Linux.x86_32.so || echo skipped\ntest -e /lib/libm.so.6 && cp -f /lib/libm.so.6 libm.System.Linux.x86_32.so || echo skipped\n\nif which patchelf >/dev/null; then\n\n patchelf --replace-needed libc.so.6 libc.System.Linux.x86_32.so libm.System.Linux.x86_32.so\n patchelf --replace-needed libgcc_s.so.1 libgcc.System.Linux.x86_32.so libm.System.Linux.x86_32.so\n \n patchelf --replace-needed libm.so.6 libm.System.Linux.x86_32.so libc.System.Linux.x86_32.so\n patchelf --replace-needed libgcc_s.so.1 libgcc.System.Linux.x86_32.so libc.System.Linux.x86_32.so\n \n patchelf --replace-needed libc.so.6 libc.System.Linux.x86_32.so libgcc.System.Linux.x86_32.so\n patchelf --replace-needed libm.so.6 libm.System.Linux.x86_32.so libgcc.System.Linux.x86_32.so\n \nfi" + io.writefile(dir .. "/update_libc32.sh", kUpdateLib32String) - postbuildcommands("cp -f /lib/ld-linux.so.2 \"" .. dir .. "/ld-Aurora.System.Linux.x86_32.so\"") - postbuildcommands("cp -f /lib/libc.so.6 \"" .. dir .. "/libc." .. platformSuffix .. ".so\"") - postbuildcommands("cp -f /lib/libm.so.6 \"" .. dir .. "/libm." .. platformSuffix .. ".so\"") - postbuildcommands("cp -f /lib/libgcc_s.so.1 \"" .. dir .. "/libgcc." .. platformSuffix .. ".so\"") + if (os.isdir("/lib/i386-linux-gnu")) then + postbuildcommands("test -e /lib/i386-linux-gnu/ld-linux.so.2 && cp -f /lib/i386-linux-gnu/ld-linux.so.2 \"" .. dir .. "/ld-Aurora.System.Linux.x86_32.so\" || echo SKIP") + postbuildcommands("test -e /lib/i386-linux-gnu/libc.so.6 && cp -f /lib/i386-linux-gnu/libc.so.6 \"" .. dir .. "/libc." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib/i386-linux-gnu/libm.so.6 && cp -f /lib/i386-linux-gnu/libm.so.6 \"" .. dir .. "/libm." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib/i386-linux-gnu/libgcc_s.so.1 && cp -f /lib/i386-linux-gnu/libgcc_s.so.1 \"" .. dir .. "/libgcc." .. platformSuffix .. ".so\" || echo SKIP") + else + postbuildcommands("test -e /lib/ld-linux.so.2 && cp -f /lib/ld-linux.so.2 \"" .. dir .. "/ld-Aurora.System.Linux.x86_32.so\" || echo SKIP") + postbuildcommands("test -e /lib/libc.so.6 && cp -f /lib/libc.so.6 \"" .. dir .. "/libc." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib/libm.so.6 && cp -f /lib/libm.so.6 \"" .. dir .. "/libm." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib/libgcc_s.so.1 && cp -f /lib/libgcc_s.so.1 \"" .. dir .. "/libgcc." .. platformSuffix .. ".so\" || echo SKIP") + end end + postbuildcommands("patchelf --replace-needed libc.so.6 libc." .. platformSuffix .. ".so \"" .. dir .. "/libm." .. platformSuffix .. ".so\"") + postbuildcommands("patchelf --replace-needed libgcc_s.so.1 libgcc." .. platformSuffix .. ".so \"" .. dir .. "/libm." .. platformSuffix .. ".so\"") + + postbuildcommands("patchelf --replace-needed libm.so.6 libm." .. platformSuffix .. ".so \"" .. dir .. "/libc." .. platformSuffix .. ".so\"") + postbuildcommands("patchelf --replace-needed libgcc_s.so.1 libgcc." .. platformSuffix .. ".so \"" .. dir .. "/libc." .. platformSuffix .. ".so\"") + + postbuildcommands("patchelf --replace-needed libc.so.6 libc." .. platformSuffix .. ".so \"" .. dir .. "/libgcc." .. platformSuffix .. ".so\"") + postbuildcommands("patchelf --replace-needed libm.so.6 libm." .. platformSuffix .. ".so \"" .. dir .. "/libgcc." .. platformSuffix .. ".so\"") + if (os.isfile(dir .. "/libunwind-x86_64.so.8")) then postbuildcommands("patchelf --replace-needed libc.so.6 libc." .. "System.Linux.x86_64" .. ".so \"" .. dir .. "/libunwind-x86_64.so.8\"") postbuildcommands("patchelf --replace-needed libm.so.6 libm." .. "System.Linux.x86_64" .. ".so \"" .. dir .. "/libunwind-x86_64.so.8\"") @@ -166,22 +195,40 @@ local function patchPortableElf(name, type, config, platform, platformName, arch postbuildcommands("patchelf --replace-needed libgcc_s.so.1 libgcc." .. platformSuffix .. ".so \"" .. outputPath .. "\"") if (arch == "x86_64" or arch == "ARM64" or arch == "aarch64" or arch == "mips64") then - postbuildcommands("cp -f /lib64/ld-linux-x86-64.so.2 \"" .. "%{cfg.targetdir}/ld-Aurora.System.Linux.x86_64.so\"") - postbuildcommands("cp -f /lib64/libc.so.6 \"" .. "%{cfg.targetdir}/libc." .. platformSuffix .. ".so\"") - postbuildcommands("cp -f /lib64/libm.so.6 \"" .. "%{cfg.targetdir}/libm." .. platformSuffix .. ".so\"") - postbuildcommands("cp -f /lib64/libgcc_s.so.1 \"" .. "%{cfg.targetdir}/libgcc." .. platformSuffix .. ".so\"") + if (os.isdir("/lib/x86_64-linux-gnu")) then + postbuildcommands("test -e /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 && cp -f /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 \"" .. "%{cfg.targetdir}/ld-Aurora.System.Linux.x86_64.so\" || echo SKIP") + postbuildcommands("test -e /lib/x86_64-linux-gnu/libc.so.6 && cp -f /lib/x86_64-linux-gnu/libc.so.6 \"" .. "%{cfg.targetdir}/libc." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib/x86_64-linux-gnu/libm.so.6 && cp -f /lib/x86_64-linux-gnu/libm.so.6 \"" .. "%{cfg.targetdir}/libm." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib/x86_64-linux-gnu/libgcc_s.so.1 && cp -f /lib/x86_64-linux-gnu/libgcc_s.so.1 \"" .. "%{cfg.targetdir}/libgcc." .. platformSuffix .. ".so\" || echo SKIP") + else + postbuildcommands("test -e /lib64/ld-linux-x86-64.so.2 && cp -f /lib64/ld-linux-x86-64.so.2 \"" .. "%{cfg.targetdir}/ld-Aurora.System.Linux.x86_64.so\" || echo SKIP") + postbuildcommands("test -e /lib64/libc.so.6 && cp -f /lib64/libc.so.6 \"" .. "%{cfg.targetdir}/libc." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib64/libm.so.6 && cp -f /lib64/libm.so.6 \"" .. "%{cfg.targetdir}/libm." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib64/libgcc_s.so.1 && cp -f /lib64/libgcc_s.so.1 \"" .. "%{cfg.targetdir}/libgcc." .. platformSuffix .. ".so\" || echo SKIP") + end else - postbuildcommands("cp -f /lib/ld-linux.so.2 \"" .. "%{cfg.targetdir}/ld-Aurora.System.Linux.x86_32.so\"") - postbuildcommands("cp -f /lib/libc.so.6 \"" .. "%{cfg.targetdir}/libc." .. platformSuffix .. ".so\"") - postbuildcommands("cp -f /lib/libm.so.6 \"" .. "%{cfg.targetdir}/libm." .. platformSuffix .. ".so\"") - postbuildcommands("cp -f /lib/libgcc_s.so.1 \"" .. "%{cfg.targetdir}/libgcc." .. platformSuffix .. ".so\"") + if (os.isdir("/lib/i386-linux-gnu")) then + postbuildcommands("test -e /lib/i386-linux-gnu/ld-linux.so.2 && cp -f /lib/i386-linux-gnu/ld-linux.so.2 \"" .."%{cfg.targetdir}/ld-Aurora.System.Linux.x86_32.so\" || echo SKIP") + postbuildcommands("test -e /lib/i386-linux-gnu/libc.so.6 && cp -f /lib/i386-linux-gnu/libc.so.6 \"" .."%{cfg.targetdir}/libc." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib/i386-linux-gnu/libm.so.6 && cp -f /lib/i386-linux-gnu/libm.so.6 \"" .."%{cfg.targetdir}/libm." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib/i386-linux-gnu/libgcc_s.so.1 && cp -f /lib/i386-linux-gnu/libgcc_s.so.1 \"" .."%{cfg.targetdir}/libgcc." .. platformSuffix .. ".so\" || echo SKIP") + else + postbuildcommands("test -e /lib/ld-linux.so.2 && cp -f /lib/ld-linux.so.2 \"" .. "%{cfg.targetdir}/ld-Aurora.System.Linux.x86_32.so\" || echo SKIP") + postbuildcommands("test -e /lib/libc.so.6 && cp -f /lib/libc.so.6 \"" .. "%{cfg.targetdir}/libc." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib/libm.so.6 && cp -f /lib/libm.so.6 \"" .. "%{cfg.targetdir}/libm." .. platformSuffix .. ".so\" || echo SKIP") + postbuildcommands("test -e /lib/libgcc_s.so.1 && cp -f /lib/libgcc_s.so.1 \"" .. "%{cfg.targetdir}/libgcc." .. platformSuffix .. ".so\" || echo SKIP") + end end - postbuildcommands("patchelf --replace-needed libc.so.6 libc." .. platformSuffix .. ".so \"%{cfg.targetdir}/libm." .. platformSuffix .. ".so\"") - postbuildcommands("patchelf --replace-needed libm.so.6 libm." .. platformSuffix .. ".so \"%{cfg.targetdir}/libm." .. platformSuffix .. ".so\"") - - postbuildcommands("patchelf --replace-needed libc.so.6 libc." .. platformSuffix .. ".so \"%{cfg.targetdir}/libgcc." .. platformSuffix .. ".so\"") - postbuildcommands("patchelf --replace-needed libm.so.6 libm." .. platformSuffix .. ".so \"%{cfg.targetdir}/libgcc." .. platformSuffix .. ".so\"") + postbuildcommands("patchelf --replace-needed libc.so.6 libc." .. platformSuffix .. ".so \"%{cfg.targetdir}/libm." .. platformSuffix .. ".so\"") + postbuildcommands("patchelf --replace-needed libgcc_s.so.1 libgcc." .. platformSuffix .. ".so \"%{cfg.targetdir}/libm." .. platformSuffix .. ".so\"") + + postbuildcommands("patchelf --replace-needed libm.so.6 libm." .. platformSuffix .. ".so \"%{cfg.targetdir}/libc." .. platformSuffix .. ".so\"") + postbuildcommands("patchelf --replace-needed libgcc_s.so.1 libgcc." .. platformSuffix .. ".so \"%{cfg.targetdir}/libc." .. platformSuffix .. ".so\"") + + postbuildcommands("patchelf --replace-needed libc.so.6 libc." .. platformSuffix .. ".so \"%{cfg.targetdir}/libgcc." .. platformSuffix .. ".so\"") + postbuildcommands("patchelf --replace-needed libm.so.6 libm." .. platformSuffix .. ".so \"%{cfg.targetdir}/libgcc." .. platformSuffix .. ".so\"") + end local function addDest(name, projectType, dest)