guix-packages/ambrevar/streetsofrage: Add working non-containerized version
parent
9ab568f06e
commit
3b3a3c22e6
|
@ -8,6 +8,7 @@
|
|||
#:use-module (gnu packages gcc)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages elf)
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages sdl)
|
||||
;; #:use-module (gnu packages pulseaudio)
|
||||
|
@ -22,10 +23,11 @@
|
|||
,@(package-arguments package64)))))
|
||||
|
||||
(define-public zlib32 (to32 zlib))
|
||||
(define-public glibc32 (to32 glibc))
|
||||
|
||||
(define-public streets-of-rage-remake
|
||||
(define-public streets-of-rage-remake-containerized
|
||||
(package
|
||||
(name "streets-of-rage-remake")
|
||||
(name "streets-of-rage-remake-containerized")
|
||||
(version "5.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
|
@ -58,6 +60,7 @@
|
|||
("alsa-lib" ,(to32 alsa-lib))
|
||||
("sdl" ,(to32 sdl))
|
||||
("sdl-mixer" ,(to32 sdl-mixer))
|
||||
("libpng" ,(to32 libpng-1.2))
|
||||
;; ("pulseaudio" (to32 pulseaudio))
|
||||
))
|
||||
;; (inputs
|
||||
|
@ -114,30 +117,39 @@
|
|||
(for-each (lambda (f) (rename-file (string-append "bennugd/" f)
|
||||
(string-append "data/" f)))
|
||||
'("libbgdrtm.so" "libcrypto.so.1.0.0" "libdraw.so"))
|
||||
(with-directory-excursion "data"
|
||||
(for-each (lambda (f) (rename-file f
|
||||
(string-append "lib" (basename f))))
|
||||
(find-files "." "mod.*")))
|
||||
;; TODO: Patch the executable to use the right RPATH to its dependent libraries.
|
||||
(let* ((bash (assoc-ref %build-inputs "bash"))
|
||||
(zlib (assoc-ref %build-inputs "zlib"))
|
||||
(sdl (assoc-ref %build-inputs "sdl"))
|
||||
(sdl-mixer (assoc-ref %build-inputs "sdl-mixer"))
|
||||
(libpng (assoc-ref %build-inputs "libpng"))
|
||||
(glibc (assoc-ref %build-inputs "glibc"))
|
||||
(sorr (string-append out "/sorr"))
|
||||
(sorr-real (string-append out "/bgdi"))
|
||||
(sorr-data (string-append out "/share/streetsofrageremake/SorR.dat")))
|
||||
;; Wrap program:
|
||||
(call-with-output-file sorr
|
||||
(lambda (p)
|
||||
(format p "\
|
||||
;; Wrap program:
|
||||
(call-with-output-file sorr
|
||||
(lambda (p)
|
||||
;; Expose /dev/snd for sound.
|
||||
(format p "\
|
||||
#!~a/bin/bash
|
||||
guix environment --container \
|
||||
--share=/tmp/.X11-unix/ \
|
||||
--share=/dev/snd \
|
||||
--expose=~a/lib=/lib \
|
||||
--ad-hoc streets-of-rage-remake coreutils -- \
|
||||
env LD_LIBRARY_PATH=\"~a/lib:~a/lib:~a/lib:~a/lib:~a${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH\" \
|
||||
env DISPLAY=$DISPLAY LD_LIBRARY_PATH=\"~a/lib:~a/lib:~a/lib:~a/lib:~a/lib:~a${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH\" \
|
||||
~a ~a \"$@\"~%"
|
||||
bash
|
||||
glibc ; Need to be exposed to /lib, or else it won't start.
|
||||
glibc zlib sdl sdl-mixer (string-append out "/data") ; (string-append out "/bennugd")
|
||||
sorr-real sorr-data)))
|
||||
(chmod sorr #o755))
|
||||
bash
|
||||
glibc ; Need to be exposed to /lib, or else it won't start.
|
||||
glibc zlib sdl sdl-mixer libpng (string-append out "/data") ; (string-append out "/bennugd")
|
||||
sorr-real sorr-data)))
|
||||
;; libmod_map.so: cannot open shared object file: No such file or directory
|
||||
(chmod sorr 493))
|
||||
#t))))
|
||||
(home-page "http://www.sorrcommunity.com/t148-sor-v5-for-linux-debian-download-links")
|
||||
(synopsis "Remake of the classic Streets of Rage 1, 2 and 3")
|
||||
|
@ -146,29 +158,104 @@ guix environment --container \
|
|||
"No URL"
|
||||
""))))
|
||||
|
||||
;; guix environment --container --link-profile --network --expose=/gnu/store/rqh1nhjvgdyzyfw164lah2pzwgr2ywx9-glibc32-2.28/lib=/lib coreutils streets-of-rage-remake -- ldd /gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/bgdi
|
||||
|
||||
;; guix environment --container --link-profile --network --expose=/gnu/store/rqh1nhjvgdyzyfw164lah2pzwgr2ywx9-glibc32-2.28/lib=/lib coreutils streets-of-rage-remake -- env LD_LIBRARY_PATH=/gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/data:/gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/bennugd /gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/bgdi
|
||||
|
||||
;; guix environment --container --link-profile --network --expose=/gnu/store/bb3jg758jgxgslv16b8g3vsji6s56l12-zlib32-1.2.11/lib=/lib --expose=/gnu/store/rqh1nhjvgdyzyfw164lah2pzwgr2ywx9-glibc32-2.28/lib=/lib coreutils streets-of-rage-remake -- ls /lib
|
||||
|
||||
;; TODO: How to build union of dirs? Make union package?
|
||||
;; guix environment --container --link-profile --network --expose=/gnu/store/bb3jg758jgxgslv16b8g3vsji6s56l12-zlib32-1.2.11/lib=/zlib --expose=/gnu/store/rqh1nhjvgdyzyfw164lah2pzwgr2ywx9-glibc32-2.28/lib=/lib coreutils streets-of-rage-remake -- env LD_LIBRARY_PATH=/gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/data:/gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/bennugd:/zlib /gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/bgdi
|
||||
|
||||
;; guix environment --container --link-profile --network --expose=/gnu/store/bb3jg758jgxgslv16b8g3vsji6s56l12-zlib32-1.2.11/lib=/zlib --expose=/gnu/store/rqh1nhjvgdyzyfw164lah2pzwgr2ywx9-glibc32-2.28/lib=/lib coreutils streets-of-rage-remake -- env LD_LIBRARY_PATH=/gnu/store/2min05ipil5bjx5ab2d5j2c3i4ama8ph-streets-of-rage-remake-5.1/data:/gnu/store/2min05ipil5bjx5ab2d5j2c3i4ama8ph-streets-of-rage-remake-5.1/bennugd:/zlib /gnu/store/2min05ipil5bjx5ab2d5j2c3i4ama8ph-streets-of-rage-remake-5.1/bgdi /gnu/store/2min05ipil5bjx5ab2d5j2c3i4ama8ph-streets-of-rage-remake-5.
|
||||
|
||||
;; guix environment --container --link-profile --network --expose=/gnu/store/bb3jg758jgxgslv16b8g3vsji6s56l12-zlib32-1.2.11/lib=/zlib --expose=/gnu/store/rqh1nhjvgdyzyfw164lah2pzwgr2ywx9-glibc32-2.28/lib=/lib coreutils streets-of-rage-remake -- env LD_LIBRARY_PATH=/gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/data:/gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/bennugd:/zlib /gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/bgdi /gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/SorR.dat
|
||||
;; /gnu/store/ypk09ld0nxiyh9qb8zc8xfgkhwricycb-alsa-lib32-1.1.7/share/aclocal'
|
||||
|
||||
;; guix environment --container --link-profile --network --expose=/gnu/store/rqh1nhjvgdyzyfw164lah2pzwgr2ywx9-glibc32-2.28/lib=/lib coreutils streets-of-rage-remake -- ldd /gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/bgdi
|
||||
|
||||
;; guix environment --container --link-profile --network --expose=/gnu/store/bb3jg758jgxgslv16b8g3vsji6s56l12-zlib32-1.2.11/lib=/zlib --expose=/gnu/store/rqh1nhjvgdyzyfw164lah2pzwgr2ywx9-glibc32-2.28/lib=/lib coreutils streets-of-rage-remake -- env LD_LIBRARY_PATH=/gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/data:/gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/bennugd:/zlib:/gnu/store/ypk09ld0nxiyh9qb8zc8xfgkhwricycb-alsa-lib32-1.1.7/lib /gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/bgdi /gnu/store/ibm8jmj3ds1fsq6hkiin178f4127y89x-streets-of-rage-remake-5.1/SorR.dat
|
||||
|
||||
|
||||
;; UTILS:
|
||||
;; guix environment --container --link-profile --network coreutils streets-of-rage-remake -- ls /gnu/store
|
||||
|
||||
|
||||
;; (setq SORR_PATH "/gnu/store/7w0m1c2g2wpkn63inc1373hbmzhj2yj8-streets-of-rage-remake-5.1")
|
||||
|
||||
;; guix environment --container --link-profile --network --expose=/gnu/store/bb3jg758jgxgslv16b8g3vsji6s56l12-zlib32-1.2.11/lib=/zlib --expose=/gnu/store/rqh1nhjvgdyzyfw164lah2pzwgr2ywx9-glibc32-2.28/lib=/lib coreutils streets-of-rage-remake -- env LD_LIBRARY_PATH=$SORR_PATH/data:$SORR_PATH/bennugd:/zlib:/gnu/store/ypk09ld0nxiyh9qb8zc8xfgkhwricycb-alsa-lib32-1.1.7/lib $SORR_PATH/bgdi $SORR_PATH/SorR.dat
|
||||
(define-public streets-of-rage-remake
|
||||
(package
|
||||
(name "streets-of-rage-remake")
|
||||
(version "5.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://launchpad.net/~ubuntugames/+archive/ubuntu/games/+files/sorr_"
|
||||
version ".orig.tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1gld4i6ma265j7jw06c1drfp7pbg3n8dpm4lg9xgg28dkl5flwai"))))
|
||||
(build-system trivial-build-system)
|
||||
(inputs
|
||||
`(("bash" ,bash-minimal)
|
||||
;; ("coreutils" ,coreutils)
|
||||
("glibc" ,(to32 glibc))
|
||||
("zlib" ,(to32 zlib))
|
||||
("alsa-lib" ,(to32 alsa-lib))
|
||||
("sdl" ,(to32 sdl))
|
||||
("sdl-mixer" ,(to32 sdl-mixer))
|
||||
("libpng" ,(to32 libpng-1.2))
|
||||
;; ("pulseaudio" (to32 pulseaudio))
|
||||
))
|
||||
;; (inputs
|
||||
;; `(("glibc" ,glibc32)))
|
||||
(native-inputs
|
||||
`(("patchelf" ,(to32 patchelf))
|
||||
("tar" ,tar)
|
||||
("gzip" ,gzip)))
|
||||
(arguments
|
||||
`(#:modules ((guix build utils))
|
||||
#:builder
|
||||
(begin
|
||||
(use-modules (guix build utils))
|
||||
(let ((out (assoc-ref %outputs "out")))
|
||||
(setenv "PATH" (string-append
|
||||
(assoc-ref %build-inputs "gzip") "/bin:"
|
||||
(assoc-ref %build-inputs "patchelf") "/bin:"
|
||||
(assoc-ref %build-inputs "tar") "/bin"))
|
||||
(invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
|
||||
(mkdir-p out)
|
||||
(copy-recursively "." out)
|
||||
(chdir out)
|
||||
;; (mkdir-p "share/applications/")
|
||||
;; (rename-file "sorr.desktop" "share/applications/sorr.desktop")
|
||||
;; (mkdir-p "share/icons/hicolor/48x48/apps/")
|
||||
;; (rename-file "sorr.png" "share/icons/hicolor/48x48/apps/sorr.png")
|
||||
;; (mkdir-p "bin")
|
||||
;; (rename-file "bgdi" "bin/bgdi")
|
||||
;; (rename-file "data" "lib")
|
||||
;; (mkdir-p "bin")
|
||||
;; (rename-file "bennugd/libbgdrtm.so" "lib/libbgdrtm.so")
|
||||
;; (mkdir-p "share/streetsofrageremake")
|
||||
;; (for-each (lambda (f) (rename-file f (string-append "share/streetsofrageremake/" f)))
|
||||
;; '("SorMaker.dat" "SorR.dat" "manual" "manual.html"
|
||||
;; "mod" "palettes" "Readme.txt"))
|
||||
(delete-file "sorr")
|
||||
;; Remove the unneeded executable bit.
|
||||
(for-each (lambda (file)
|
||||
(chmod file #o644))
|
||||
(find-files "." ".*"))
|
||||
(chmod "bgdi" #o755)
|
||||
;; TODO: Sort out data from bennugd:
|
||||
(for-each (lambda (f) (rename-file (string-append "bennugd/" f)
|
||||
(string-append "data/" f)))
|
||||
'("libbgdrtm.so" "libcrypto.so.1.0.0" "libdraw.so"))
|
||||
(with-directory-excursion "data"
|
||||
(for-each (lambda (f) (rename-file f
|
||||
(string-append "lib" (basename f))))
|
||||
(find-files "." "mod.*")))
|
||||
;; TODO: Patch the executable to use the right RPATH to its dependent libraries.
|
||||
(let* ((bash (assoc-ref %build-inputs "bash"))
|
||||
(zlib (assoc-ref %build-inputs "zlib"))
|
||||
(sdl (assoc-ref %build-inputs "sdl"))
|
||||
(sdl-mixer (assoc-ref %build-inputs "sdl-mixer"))
|
||||
(libpng (assoc-ref %build-inputs "libpng"))
|
||||
(glibc (assoc-ref %build-inputs "glibc"))
|
||||
(sorr (string-append out "/sorr"))
|
||||
(sorr-real (string-append out "/bgdi"))
|
||||
(sorr-data (string-append out "/share/streetsofrageremake/SorR.dat")))
|
||||
(invoke "patchelf" "--set-interpreter" (string-append glibc "/lib/ld-linux.so.2")
|
||||
(string-append out "/bgdi"))
|
||||
(for-each (lambda (f)
|
||||
(invoke "patchelf" "--set-rpath"
|
||||
(string-append
|
||||
(string-append out "/data") ":"
|
||||
(string-append sdl "/lib") ":"
|
||||
(string-append sdl-mixer "/lib") ":"
|
||||
(string-append libpng "/lib") ":"
|
||||
(string-append zlib "/lib"))
|
||||
f))
|
||||
(append (list (string-append out "/bgdi"))
|
||||
(find-files "data" ".*")))
|
||||
)
|
||||
#t))))
|
||||
(home-page "http://www.sorrcommunity.com/t148-sor-v5-for-linux-debian-download-links")
|
||||
(synopsis "Remake of the classic Streets of Rage 1, 2 and 3")
|
||||
(description "Remake of the classic Streets of Rage 1, 2 and 3")
|
||||
(license ((@@ (guix licenses) license) "No license"
|
||||
"No URL"
|
||||
""))))
|
||||
|
|
Loading…
Reference in New Issue