From: tobtoht Date: Sun, 23 Feb 2025 07:18:06 +0000 (+0100) Subject: guix: remove zig X-Git-Url: https://git.nutra.tk/v2?a=commitdiff_plain;h=e2f790d86a8cf4e2ecf16190df92a05ed388c39e;p=gamesguru%2Ffeather.git guix: remove zig --- diff --git a/contrib/depends/packages/flatstart.mk b/contrib/depends/packages/flatstart.mk index 742be901..31257752 100644 --- a/contrib/depends/packages/flatstart.mk +++ b/contrib/depends/packages/flatstart.mk @@ -3,12 +3,17 @@ $(package)_version=a148fb86c30968eeb30dc6ac3384ad2a16690520 $(package)_download_path=https://github.com/tobtoht/ln-guix-store/archive/ $(package)_file_name=$($(package)_version).tar.gz $(package)_sha256_hash=e9694fcda4f9fcb00374da7a439b881296c0ce67ea98ca44bf2830d1a364365b +$(package)_patches=main.c main.S + +define $(package)_preprocess_cmds + cp -f $($(package)_patch_dir)/main.c $($(package)_patch_dir)/main.S . +endef define $(package)_build_cmds - zig build-exe ln-guix-store.zig -target x86_64-linux-none -OReleaseSmall + $($(package)_cc) -nostdlib -fno-unwind-tables -fno-asynchronous-unwind-tables -fdata-sections -Wl,--gc-sections -Wa,--noexecstack -fno-builtin -fno-stack-protector -static -o startup main.c main.S endef define $(package)_stage_cmds mkdir -p $($(package)_staging_prefix_dir)/bin && \ - cp ln-guix-store $($(package)_staging_prefix_dir)/bin/startup + cp startup $($(package)_staging_prefix_dir)/bin/ endef diff --git a/contrib/depends/patches/flatstart/main.S b/contrib/depends/patches/flatstart/main.S new file mode 100644 index 00000000..ca70e506 --- /dev/null +++ b/contrib/depends/patches/flatstart/main.S @@ -0,0 +1,34 @@ + .text + .global m_symlink + .global m_exit + .global m_mkdir + .global m_execve + .global _start + +_start: + pop %rdi + mov %rsp, %rsi + lea 8(%rsi, %rdi, 8), %rdx + call start_c + mov $60, %rax + xor %rdi, %rdi + syscall + +m_symlink: + mov $88, %rax + syscall + ret + +m_mkdir: + mov $83, %rax + syscall + ret + +m_execve: + mov $59, %rax + syscall + ret + +m_exit: + mov $60, %rax + syscall diff --git a/contrib/depends/patches/flatstart/main.c b/contrib/depends/patches/flatstart/main.c new file mode 100644 index 00000000..2da7a21e --- /dev/null +++ b/contrib/depends/patches/flatstart/main.c @@ -0,0 +1,31 @@ +extern long m_symlink(const char *target, const char *linkpath); +extern long m_mkdir(const char *pathname, unsigned int mode); +extern long m_execve(const char *filename, char *const argv[], char *const envp[]); +extern void m_exit(int status); + +void start_c(int argc, char **argv, char **envp) { + m_symlink("/app/gnu", "/gnu"); + + // Qt expects certs to be here, see: qtbase/src/network/ssl/qsslsocket.cpp + m_mkdir("/etc/ssl", 0755); + m_symlink("/app/profile/etc/ssl/certs", "/etc/ssl/certs"); + + // Stops Qt from complaining about not running in a utf-8 locale + m_mkdir("/run/current-system", 0755); + m_symlink("/app/profile/lib/locale", "/run/current-system/locale"); + + // Launch Feather + const char *exec_path = "/app/feather"; + int new_argc = argc; + char *new_argv[new_argc + 1]; + + new_argv[0] = (char *)exec_path; + for (int i = 1; i < new_argc; i++) { + new_argv[i] = argv[i]; + } + new_argv[new_argc] = 0; + + long ret = m_execve(exec_path, new_argv, envp); + + m_exit((int)ret); +} diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm index ccaf8a56..32572cd7 100644 --- a/contrib/guix/manifest.scm +++ b/contrib/guix/manifest.scm @@ -499,12 +499,13 @@ inspecting signatures in Mach-O binaries.") (make-mingw-pthreads-cross-toolchain "x86_64-w64-mingw32") nsis-x86_64 nss-certs - osslsigncode)) + osslsigncode + gettext-minimal ;; used to build libgpg-error in depends + )) ((string-contains target "-linux-") (list (make-bitcoin-cross-toolchain target) squashfs-tools - zig ;; used to build flatstart in depends )) ((string-contains target "darwin") (list