]> Nutra Git (v2) - gamesguru/feather.git/commitdiff
guix: remove zig
authortobtoht <tob@featherwallet.org>
Sun, 23 Feb 2025 07:18:06 +0000 (08:18 +0100)
committertobtoht <tob@featherwallet.org>
Sun, 23 Feb 2025 07:57:56 +0000 (08:57 +0100)
contrib/depends/packages/flatstart.mk
contrib/depends/patches/flatstart/main.S [new file with mode: 0644]
contrib/depends/patches/flatstart/main.c [new file with mode: 0644]
contrib/guix/manifest.scm

index 742be901135653341d64d018a3ac81f832379dda..3125775203a08c6412ff471912b660484287d5d1 100644 (file)
@@ -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 (file)
index 0000000..ca70e50
--- /dev/null
@@ -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 (file)
index 0000000..2da7a21
--- /dev/null
@@ -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);
+}
index ccaf8a56eb18e07049bbd90d61e1e2d5bbaa2f6e..32572cd73035050b7237d4857c47b1e4dbb5352e 100644 (file)
@@ -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