$(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
--- /dev/null
+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);
+}
(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