[PATCH] gnu: Add qdk.

  • Open
  • quality assurance status badge
Details
One participant
  • Danny Milosavljevic
Owner
unassigned
Submitted by
Danny Milosavljevic
Severity
normal
D
D
Danny Milosavljevic wrote on 19 Jun 2020 02:39
(address . guix-patches@gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200619003913.9790-1-dannym@scratchpost.org
* gnu/packages/embedded.scm (qdk): New variable.
---
gnu/packages/embedded.scm | 256 ++++++++++++++++++++++++++++++++++++++
1 file changed, 256 insertions(+)

Toggle diff (283 lines)
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 9be1065de2..c0fc534320 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -39,18 +39,23 @@
#:use-module (gnu packages autotools)
#:use-module ((gnu packages base) #:prefix base:)
#:use-module (gnu packages bison)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages dejagnu)
#:use-module (gnu packages flex)
+ #:use-module (gnu packages gawk)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gdb)
+ #:use-module (gnu packages gnupg)
#:use-module (gnu packages guile)
#:use-module (gnu packages libftdi)
#:use-module (gnu packages libusb)
+ #:use-module (gnu packages linux)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages rsync)
#:use-module (gnu packages swig)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages xorg)
@@ -1352,3 +1357,254 @@ simplifies configuration and is also pluggable: you can write your own west
this feature to provide conveniences for building applications, flashing and
debugging them, and more.")
(license license:expat)))
+
+(define-public qdk
+ (package
+ (name "qdk")
+ (version "2.3.11")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/qnap-dev/QDK.git")
+ (commit (string-append "v" version))))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "1zp045b1wqwjq2aah46dv08bz9i841acrmy328q5i8filbndvjx1"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; No tests
+ #:make-flags '("CC=gcc")
+ #:modules
+ ((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 regex)
+ (ice-9 match)
+ (ice-9 rdelim)
+ (ice-9 textual-ports)
+ (srfi srfi-1))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-references
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (define (substitute-without-HERE file pattern+procs)
+ "PATTERN+PROCS is a list of regexp/two-argument-procedure pairs.
+For each line of FILE, and for each PATTERN that it matches, call the
+corresponding PROC as (PROC LINE MATCHES); PROC must return the line that will
+be written as a substitution of the original line. Be careful about using '$'
+to match the end of a line; by itself it won't match the terminating newline
+of a line.
+
+HERE document contents are ignored."
+ (let ((rx+proc (map (match-lambda
+ (((? regexp? pattern) . proc)
+ (cons pattern proc))
+ ((pattern . proc)
+ (cons (make-regexp pattern regexp/extended)
+ proc)))
+ pattern+procs)))
+ (with-atomic-file-replacement file
+ (lambda (in out)
+ (let loop ((line (read-line in 'concat))
+ (in-HERE? #f))
+ (if (eof-object? line)
+ #t
+ (let ((line (fold (lambda (r+p line)
+ (match r+p
+ ((regexp . proc)
+ (match (list-matches regexp line)
+ ((and m+ (_ _ ...))
+ (proc line m+))
+ (_ line)))))
+ line
+ rx+proc)))
+ (display line out)
+ (loop (read-line in 'concat)
+ (or (and in-HERE? (not (string-contains line "EOF"))
+ (string-contains line "<<-EOF")))))))))))
+;; That was copied from guix/build/utils.scm.
+(define-syntax let-matches
+ ;; Helper macro for `substitute*'.
+ (syntax-rules (_)
+ ((let-matches index match (_ vars ...) body ...)
+ (let-matches (+ 1 index) match (vars ...)
+ body ...))
+ ((let-matches index match (var vars ...) body ...)
+ (let ((var (match:substring match index)))
+ (let-matches (+ 1 index) match (vars ...)
+ body ...)))
+ ((let-matches index match () body ...)
+ (begin body ...))))
+
+ (define (make-substitutor callback)
+ (lambda (l m+)
+ ;; Iterate over matches M+ and return the
+ ;; modified line based on L.
+ (let loop ((m* m+) ; matches
+ (o 0) ; offset in L
+ (r '())) ; result
+ (match m*
+ (()
+ (let ((r (cons (substring l o) r)))
+ (string-concatenate-reverse r)))
+ ((m . rest)
+ (let-matches 0 m (v) ; or ()
+ (loop rest
+ (match:end m)
+ (cons*
+ (callback l m+)
+ (substring l o (match:start m))
+ r))))))))
+ (substitute-without-HERE "shared/bin/qbuild"
+ `(("command -v awk" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append "command -v " (assoc-ref inputs "gawk") "/bin/gawk"))))
+ ("command -v cmp" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append "command -v " (assoc-ref inputs "diffutils")
+ "/bin/cmp"))))
+ ("command -v python2" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append "command -v " (assoc-ref inputs "python-2") "/bin/python2"))))
+ ("command -v md5sum" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append "command -v " (assoc-ref inputs "coreutils") "/bin/md5sum"))))
+ ("command -v gpg2" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append "command -v " (assoc-ref inputs "gnupg") "/bin/gpg"))))
+ ("qpkg_encrypt " .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref outputs "out")
+ "/share/QDK/bin/qpkg_encrypt "))))
+ ;("/usr/bin" . ,(lambda (line matches)
+ ; "/bin"))
+ ("/usr/bin/hexdump\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "util-linux")
+ "/bin/hexdump"))))
+ ("/usr/bin/rsync\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "rsync") "/bin/rsync"))))
+ ("/usr/bin/expr\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/expr"))))
+ ("/usr/bin/bunzip2\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "bzip2")
+ "/bin/bunzip2"))))
+ ("/usr/local/sbin/7z\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "p7zip") "/bin/7z"))))
+ ("/usr/bin/whoami\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/whoami"))))
+ ("/usr/bin/tail\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/tail"))))
+ ("/usr/bin/basename\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/basename"))))
+ ("/bin/grep\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "grep") "/bin/grep"))))
+ ("/bin/sed\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "sed") "/bin/sed"))))
+ ("/bin/dd\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils") "/bin/dd"))))
+ ("/bin/ls\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils") "/bin/ls"))))
+ ("/bin/rm\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils") "/bin/rm"))))
+ ("/bin/cp\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils") "/bin/cp"))))
+ ("/bin/cut\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/cut"))))
+ ("/bin/tar\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "tar") "/bin/tar"))))
+ ("/bin/gzip\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "gzip") "/bin/gzip"))))
+ ("/bin/mkdir\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/mkdir"))))
+ ("/bin/cat\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/cat"))))
+ ("/bin/echo\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/echo"))))
+ ("/bin/uname\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/uname"))))
+ ("/etc/config/qdk.conf" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref outputs "out")
+ "/etc/config/qdk.conf"))))
+ ("/usr/bin" .
+ ,(lambda (line matches)
+ "@ERROR@"))
+ ("\\</bin" .
+ ,(lambda (line matches)
+ "@ERROR@"))))
+ (call-with-input-file "shared/bin/qbuild"
+ (lambda (port)
+ (when (string-contains (get-string-all port) "@ERROR@")
+ (error "Unpatched references remain"))))
+ #t))
+ (add-after 'patch-references 'chdir
+ (lambda _
+ (chdir "src")
+ #t))
+ (delete 'configure)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (chdir "..")
+ ;; See InstallUbuntu.sh.
+ (let* ((out (assoc-ref outputs "out"))
+ (share (string-append out "/share/QDK"))
+ (etc (string-append out "/etc/config"))
+ (bin (string-append out "/bin")))
+ (mkdir-p share)
+ (copy-recursively "shared" share)
+ (mkdir-p etc)
+ (install-file "shared/qdk.conf" etc)
+ (substitute* (string-append etc "/qdk.conf")
+ (("^QDK_PATH_P=.*")
+ (string-append "QDK_PATH_P=" (dirname share) "\n")))
+ ;; For user convenience--not in original InstallUbuntu.sh.
+ (install-file "shared/bin/qbuild" bin)
+ #t))))))
+ (native-inputs
+ `(("bzip2" ,bzip2)
+ ("coreutils" ,base:coreutils)
+ ("diffutils" ,base:diffutils)
+ ("gawk" ,gawk)
+ ("gnupg" ,gnupg)
+ ("grep" ,base:grep)
+ ("gzip" ,gzip)
+ ("p7zip" ,p7zip)
+ ("python-2" ,python-2)
+ ("rsync" ,rsync)
+ ("sed" ,base:sed)
+ ("tar" ,base:tar)
+ ("util-linux" ,util-linux)))
+ (synopsis "QNAP development kit for developing NAS apps")
+ (description "This package provides the QNAP development kit.")
+ (home-page "https://www.qnap.com/event/dev/en/p_qdk.php")
+ (license license:gpl2+)))
D
D
Danny Milosavljevic wrote on 19 Jun 2020 02:41
[PATCH v2] gnu: Add qdk.
(address . 41942@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200619004154.10013-1-dannym@scratchpost.org
* gnu/packages/embedded.scm (qdk): New variable.
---
gnu/packages/embedded.scm | 259 ++++++++++++++++++++++++++++++++++++++
1 file changed, 259 insertions(+)

Toggle diff (286 lines)
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 9be1065de2..e24054543e 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -39,18 +39,23 @@
#:use-module (gnu packages autotools)
#:use-module ((gnu packages base) #:prefix base:)
#:use-module (gnu packages bison)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages dejagnu)
#:use-module (gnu packages flex)
+ #:use-module (gnu packages gawk)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gdb)
+ #:use-module (gnu packages gnupg)
#:use-module (gnu packages guile)
#:use-module (gnu packages libftdi)
#:use-module (gnu packages libusb)
+ #:use-module (gnu packages linux)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages rsync)
#:use-module (gnu packages swig)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages xorg)
@@ -1352,3 +1357,257 @@ simplifies configuration and is also pluggable: you can write your own west
this feature to provide conveniences for building applications, flashing and
debugging them, and more.")
(license license:expat)))
+
+(define-public qdk
+ (package
+ (name "qdk")
+ (version "2.3.11")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/qnap-dev/QDK.git")
+ (commit (string-append "v" version))))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "1zp045b1wqwjq2aah46dv08bz9i841acrmy328q5i8filbndvjx1"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; No tests
+ #:make-flags '("CC=gcc")
+ #:modules
+ ((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 regex)
+ (ice-9 match)
+ (ice-9 rdelim)
+ (ice-9 textual-ports)
+ (srfi srfi-1))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-references
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (define (substitute-without-HERE file pattern+procs)
+ "PATTERN+PROCS is a list of regexp/two-argument-procedure pairs.
+For each line of FILE, and for each PATTERN that it matches, call the
+corresponding PROC as (PROC LINE MATCHES); PROC must return the line that will
+be written as a substitution of the original line. Be careful about using '$'
+to match the end of a line; by itself it won't match the terminating newline
+of a line.
+
+HERE document contents are ignored."
+ (let ((rx+proc (map (match-lambda
+ (((? regexp? pattern) . proc)
+ (cons pattern proc))
+ ((pattern . proc)
+ (cons (make-regexp pattern regexp/extended)
+ proc)))
+ pattern+procs)))
+ (with-atomic-file-replacement file
+ (lambda (in out)
+ (let loop ((line (read-line in 'concat))
+ (in-HERE? #f))
+ (if (eof-object? line)
+ #t
+ (let ((line (fold (lambda (r+p line)
+ (match r+p
+ ((regexp . proc)
+ (match (list-matches regexp line)
+ ((and m+ (_ _ ...))
+ (proc line m+))
+ (_ line)))))
+ line
+ rx+proc)))
+ (display line out)
+ (loop (read-line in 'concat)
+ (if (string-contains line "<<-EOF")
+ #t
+ (if (string-contains line "EOF")
+ #f
+ in-HERE?))))))))))
+;; That was copied from guix/build/utils.scm.
+(define-syntax let-matches
+ ;; Helper macro for `substitute*'.
+ (syntax-rules (_)
+ ((let-matches index match (_ vars ...) body ...)
+ (let-matches (+ 1 index) match (vars ...)
+ body ...))
+ ((let-matches index match (var vars ...) body ...)
+ (let ((var (match:substring match index)))
+ (let-matches (+ 1 index) match (vars ...)
+ body ...)))
+ ((let-matches index match () body ...)
+ (begin body ...))))
+
+ (define (make-substitutor callback)
+ (lambda (l m+)
+ ;; Iterate over matches M+ and return the
+ ;; modified line based on L.
+ (let loop ((m* m+) ; matches
+ (o 0) ; offset in L
+ (r '())) ; result
+ (match m*
+ (()
+ (let ((r (cons (substring l o) r)))
+ (string-concatenate-reverse r)))
+ ((m . rest)
+ (let-matches 0 m (v) ; or ()
+ (loop rest
+ (match:end m)
+ (cons*
+ (callback l m+)
+ (substring l o (match:start m))
+ r))))))))
+ (substitute-without-HERE "shared/bin/qbuild"
+ `(("command -v awk" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append "command -v " (assoc-ref inputs "gawk") "/bin/gawk"))))
+ ("command -v cmp" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append "command -v " (assoc-ref inputs "diffutils")
+ "/bin/cmp"))))
+ ("command -v python2" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append "command -v " (assoc-ref inputs "python-2") "/bin/python2"))))
+ ("command -v md5sum" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append "command -v " (assoc-ref inputs "coreutils") "/bin/md5sum"))))
+ ("command -v gpg2" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append "command -v " (assoc-ref inputs "gnupg") "/bin/gpg"))))
+ ("qpkg_encrypt " .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref outputs "out")
+ "/share/QDK/bin/qpkg_encrypt "))))
+ ;("/usr/bin" . ,(lambda (line matches)
+ ; "/bin"))
+ ("/usr/bin/hexdump\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "util-linux")
+ "/bin/hexdump"))))
+ ("/usr/bin/rsync\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "rsync") "/bin/rsync"))))
+ ("/usr/bin/expr\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/expr"))))
+ ("/usr/bin/bunzip2\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "bzip2")
+ "/bin/bunzip2"))))
+ ("/usr/local/sbin/7z\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "p7zip") "/bin/7z"))))
+ ("/usr/bin/whoami\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/whoami"))))
+ ("/usr/bin/tail\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/tail"))))
+ ("/usr/bin/basename\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/basename"))))
+ ("/bin/grep\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "grep") "/bin/grep"))))
+ ("/bin/sed\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "sed") "/bin/sed"))))
+ ("/bin/dd\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils") "/bin/dd"))))
+ ("/bin/ls\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils") "/bin/ls"))))
+ ("/bin/rm\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils") "/bin/rm"))))
+ ("/bin/cp\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils") "/bin/cp"))))
+ ("/bin/cut\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/cut"))))
+ ("/bin/tar\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "tar") "/bin/tar"))))
+ ("/bin/gzip\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "gzip") "/bin/gzip"))))
+ ("/bin/mkdir\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/mkdir"))))
+ ("/bin/cat\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/cat"))))
+ ("/bin/echo\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/echo"))))
+ ("/bin/uname\\>" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/uname"))))
+ ("/etc/config/qdk.conf" .
+ ,(make-substitutor (lambda (line matches)
+ (string-append (assoc-ref outputs "out")
+ "/etc/config/qdk.conf"))))
+ ("/usr/bin" .
+ ,(lambda (line matches)
+ "@ERROR@"))
+ ("\\</bin" .
+ ,(lambda (line matches)
+ "@ERROR@"))))
+ (call-with-input-file "shared/bin/qbuild"
+ (lambda (port)
+ (when (string-contains (get-string-all port) "@ERROR@")
+ (error "Unpatched references remain"))))
+ #t))
+ (add-after 'patch-references 'chdir
+ (lambda _
+ (chdir "src")
+ #t))
+ (delete 'configure)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (chdir "..")
+ ;; See InstallUbuntu.sh.
+ (let* ((out (assoc-ref outputs "out"))
+ (share (string-append out "/share/QDK"))
+ (etc (string-append out "/etc/config"))
+ (bin (string-append out "/bin")))
+ (mkdir-p share)
+ (copy-recursively "shared" share)
+ (mkdir-p etc)
+ (install-file "shared/qdk.conf" etc)
+ (substitute* (string-append etc "/qdk.conf")
+ (("^QDK_PATH_P=.*")
+ (string-append "QDK_PATH_P=" (dirname share) "\n")))
+ ;; For user convenience--not in original InstallUbuntu.sh.
+ (install-file "shared/bin/qbuild" bin)
+ #t))))))
+ (native-inputs
+ `(("bzip2" ,bzip2)
+ ("coreutils" ,base:coreutils)
+ ("diffutils" ,base:diffutils)
+ ("gawk" ,gawk)
+ ("gnupg" ,gnupg)
+ ("grep" ,base:grep)
+ ("gzip" ,gzip)
+ ("p7zip" ,p7zip)
+ ("python-2" ,python-2)
+ ("rsync" ,rsync)
+ ("sed" ,base:sed)
+ ("tar" ,base:tar)
+ ("util-linux" ,util-linux)))
+ (synopsis "QNAP development kit for developing NAS apps")
+ (description "This package provides the QNAP development kit.")
+ (home-page "https://www.qnap.com/event/dev/en/p_qdk.php")
+ (license license:gpl2+)))
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 41942@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 41942
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch