unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
blob df17be214e4ff2666757035096b6c8cf7f45858c 5185 bytes (raw)
name: gnu/packages/appimage.scm 	 # note: path name is non-authoritative(*)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
 
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2024 Noé Lopez <noelopez@free.fr>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages appimage)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (gnu packages base)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages file-systems)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages)
  #:use-module (guix build-system gnu)
  #:use-module (guix download)
  #:use-module (guix gexp)
  #:use-module (guix git-download)
  #:use-module (guix packages)
  #:use-module (guix utils))

(define fuse-for-appimage
  (package
    (inherit fuse)
    (name "fuse")
    (version "3.16.2")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://github.com/libfuse/libfuse/releases/"
                           "download/fuse-" version "/fuse-" version ".tar.gz"))
       (sha256
        (base32 "11yfl2w2a445hllyzlakq97n32g06972vxpmh7lpbclnj9fhb5zp"))))
    (arguments
     (substitute-keyword-arguments (package-arguments fuse)
       ((#:configure-flags original-flags #~(list))
        #~(append #$original-flags '("--default-library=static")))))))

(define squashfuse-for-appimage
    (package
      (inherit squashfuse)
      (arguments
       (list
        #:configure-flags
        #~'("CFLAGS=-ffunction-sections -fdata-sections -Os -no-pie"
            "LDFLAGS=-static")
        #:phases
        #~(modify-phases %standard-phases
            (add-after 'install 'install-private-headers
              (lambda _
                (install-file "fuseprivate.h"
                              (string-append #$output
                                             "/include/squashfuse/")))))))
      (inputs (list fuse-for-appimage
                    `(,zstd "lib")
                    `(,zstd "static")
                    `(,zlib "out")
                    `(,zlib "static")))))

(define-public appimage-type2-runtime
  (let ((revision "0")
        ;; No releases, just the latest commit.
        (commit "47b665594856b4e8928f8932adcf6d13061d8c30"))
    (package
      (name "appimage-type2-runtime")
      (version (git-version "continuous" revision commit))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/AppImage/type2-runtime")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256
          (base32 "0954crhlbapxis96g1s0vfpf78ybr64zvjalak387ksxj560g44x"))))
      (arguments
       (list
        #:make-flags
        #~(list "-Csrc/runtime" "runtime-fuse3"
                (string-append "CFLAGS=" "-I" #$fuse-2 "/include/fuse/"
                               " -DGIT_COMMIT='\"" "guix-" #$version "\"'"
                               " -D_FILE_OFFSET_BITS=64"
                               " -static"))
        #:modules
        `((guix build gnu-build-system)
          (guix build utils)
          (ice-9 binary-ports))
        #:phases #~(modify-phases %standard-phases
                     (delete 'configure)
                     (delete 'check)    ; No tests.
                     (replace 'install
                       (lambda _
                         (install-file "src/runtime/runtime-fuse3"
                                       (string-append #$output "/bin"))))
                     ;; Must be after all elf reliant phases.
                     (add-after 'make-dynamic-linker-cache 'set-magic-bytes
                       (lambda _
                         (let ((port (open (string-append #$output
                                            "/bin/runtime-fuse3")
                                           (logior O_WRONLY))))
                           (seek port 8 SEEK_SET)
                           (put-bytevector port #vu8(#x41 #x49 #x02))
                           (close-port port)))))
        #:disallowed-references (list squashfuse-for-appimage
                                      fuse-for-appimage zstd zlib)))
      ;; Only needed at build time.
      (inputs (list squashfuse-for-appimage fuse-for-appimage
                    `(,zstd "static")
                    `(,zlib "static")))
      (build-system gnu-build-system)
      (home-page "https://github.com/AppImage/type2-runtime")
      (synopsis "Runtime for executing AppImages")
      (description "The runtime is the executable part of every AppImage, it
mounts the payload via FUSE and executes the entrypoint.")
      (license license:expat))))

debug log:

solving df17be214e ...
found df17be214e in https://yhetil.org/guix-patches/ca12b1b7f176bb6ae81eb2ec844d90fd9421d290.1730475702.git.noelopez@free.fr/ ||
	https://yhetil.org/guix-patches/ca12b1b7f176bb6ae81eb2ec844d90fd9421d290.1730673402.git.noelopez@free.fr/

applying [1/1] https://yhetil.org/guix-patches/ca12b1b7f176bb6ae81eb2ec844d90fd9421d290.1730475702.git.noelopez@free.fr/
diff --git a/gnu/packages/appimage.scm b/gnu/packages/appimage.scm
new file mode 100644
index 0000000000..df17be214e

Checking patch gnu/packages/appimage.scm...
Applied patch gnu/packages/appimage.scm cleanly.

skipping https://yhetil.org/guix-patches/ca12b1b7f176bb6ae81eb2ec844d90fd9421d290.1730673402.git.noelopez@free.fr/ for df17be214e
index at:
100644 df17be214e4ff2666757035096b6c8cf7f45858c	gnu/packages/appimage.scm

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).