From patchwork Sat Oct 30 14:59:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: david larsson X-Patchwork-Id: 34167 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 9F1AC27BBE3; Sat, 30 Oct 2021 16:00:45 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,T_DKIM_INVALID, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id D846F27BBE1 for ; Sat, 30 Oct 2021 16:00:44 +0100 (BST) Received: from localhost ([::1]:35318 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mgpqd-0002SA-W3 for patchwork@mira.cbaines.net; Sat, 30 Oct 2021 11:00:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37214) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mgppy-0002Rn-Bt for guix-patches@gnu.org; Sat, 30 Oct 2021 11:00:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:46601) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mgppx-0000bp-VY for guix-patches@gnu.org; Sat, 30 Oct 2021 11:00:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mgppx-0004DQ-St for guix-patches@gnu.org; Sat, 30 Oct 2021 11:00:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#51512] [PATCH]: gnu: Add bash-bcu. Resent-From: david larsson Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sat, 30 Oct 2021 15:00:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 51512 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 51512@debbugs.gnu.org X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.163560599716167 (code B ref -1); Sat, 30 Oct 2021 15:00:01 +0000 Received: (at submit) by debbugs.gnu.org; 30 Oct 2021 14:59:57 +0000 Received: from localhost ([127.0.0.1]:58147 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mgpps-0004Ch-Go for submit@debbugs.gnu.org; Sat, 30 Oct 2021 10:59:57 -0400 Received: from lists.gnu.org ([209.51.188.17]:38720) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mgppk-0004CR-KR for submit@debbugs.gnu.org; Sat, 30 Oct 2021 10:59:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37196) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mgppk-0002RL-BO for guix-patches@gnu.org; Sat, 30 Oct 2021 10:59:48 -0400 Received: from server0.selfhosted.xyz ([217.64.149.7]:48460) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mgppg-0000b3-2Y for guix-patches@gnu.org; Sat, 30 Oct 2021 10:59:47 -0400 Received: from server0.selfhosted.xyz (localhost [127.0.0.1]) by server0.selfhosted.xyz (Postfix) with ESMTP id 5EB72270C008 for ; Sat, 30 Oct 2021 16:59:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=selfhosted.xyz; s=dkim; t=1635605979; bh=Cx/twYtDLpeeT1vFOEudWkc054Cts8zYsMtq4bW8DMo=; h=Date:From:To:Subject; b=gvATYh5bJnZJt0VM5CixY6yG9mMQxBvFynUiUmxLe8/NkCrv/OKtRmwXnNS0GqarO BsztYkRVQvqDLhPJmtOPdZH3MkwzytVBrAldfdN7wRwh0FEK7Ok9/Aop2smiz5qUOx 1uXY5IY9RmBchhbBHholNkRf46REfEazSETQA9E9QpuU0upk32zrVMQF7iZrLatoY4 iYAj7Ji96FrT4ayOWhm5JBWk3b9+VXGd0P1BPSRVhaI9BOFviOfbYHeYgezxfceBo8 75O8NsCAGo/7u221LuiZRpHELRN2voSP+9dMAD8O+Mp0pxcY6m/UtzVKnFUD/h0CSP 0X/D2HIhZmdpw== X-Fuglu-Suspect: 84f1f5cc27fa4f34a40b53638ee78fe0 X-Fuglu-Spamstatus: NO Received: from webmail.selfhosted.xyz (office.selfhosted.xyz [192.168.1.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: mail@selfhosted.xyz) by server0.selfhosted.xyz (Postfix) with ESMTPSA for ; Sat, 30 Oct 2021 16:59:33 +0200 (CEST) MIME-Version: 1.0 Date: Sat, 30 Oct 2021 16:59:33 +0200 From: david larsson Message-ID: <3add15b77522d6e9ebd715a19d966666@selfhosted.xyz> X-Sender: david.larsson@selfhosted.xyz Received-SPF: pass client-ip=217.64.149.7; envelope-from=david.larsson@selfhosted.xyz; helo=server0.selfhosted.xyz X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FROM_SUSPICIOUS_NTLD=0.499, FROM_SUSPICIOUS_NTLD_FP=1.999, PDS_OTHER_BAD_TLD=0.076, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches Hi, This patch adds "bash-coding-utils" as the bash-bcu package. Best regards, David From b79e6173263acb8d77946a08e03d5b01a9f5f86c Mon Sep 17 00:00:00 2001 From: David Larsson Date: Fri, 29 Oct 2021 13:58:41 +0200 Subject: [PATCH] gnu: Add bash-bcu. * gnu/packages/bash.scm (bash-bcu): New variable. --- gnu/packages/bash.scm | 193 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 193 insertions(+) diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm index ed2931fd97..f89dcf5341 100644 --- a/gnu/packages/bash.scm +++ b/gnu/packages/bash.scm @@ -25,17 +25,34 @@ (define-module (gnu packages bash) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages) + #:use-module (gnu packages admin) #:use-module (gnu packages base) #:use-module (gnu packages bootstrap) #:use-module (gnu packages compression) + #:use-module (gnu packages curl) + #:use-module (gnu packages dns) + #:use-module (gnu packages ed) #:use-module (gnu packages elf) + #:use-module (gnu packages freedesktop) + #:use-module (gnu packages gawk) + #:use-module (gnu packages gtk) #:use-module (gnu packages ncurses) + #:use-module (gnu packages networking) #:use-module (gnu packages readline) #:use-module (gnu packages bison) #:use-module (gnu packages linux) #:use-module (gnu packages libffi) + #:use-module (gnu packages pcre) + #:use-module (gnu packages perl) + #:use-module (gnu packages php) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) #:use-module (gnu packages guile) + #:use-module (gnu packages guile-xyz) + #:use-module (gnu packages tcl) + #:use-module (gnu packages web) + #:use-module (gnu packages xml) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) @@ -448,3 +465,179 @@ in Bash, but you can use it to test any UNIX program.") function interface (FFI) directly in your shell. In other words, it allows you to call routines in shared libraries from within Bash.") (license license:expat))) + +(define-public bash-bcu + (let ((pyver (version-major+minor (package-version python))) + (guilever (version-major+minor (package-version guile-3.0)))) + (package + (name "bash-bcu") + (version "v0.2.0") + (home-page "https://gitlab.com/methuselah-0/bash-coding-utils.sh") + (source + (origin + (method git-fetch) + (uri (git-reference + (commit "40d6527a9effb4e18778c37bebaa9f3a58de12d6") + (url "https://gitlab.com/methuselah-0/bash-coding-utils.sh.git") + (recursive? #t))) + (sha256 + (base32 + "007g6wfybjr0ms32qikb545r11lgm3p98cd7dbzpfyh0grgn9vj1")))) + (inputs `(("bash-full" ,bash) + ("bindutils" ,isc-bind "utils") + ("coreutils" ,coreutils) + ("ctypes.sh" ,bash-ctypes) + ("curl" ,curl) + ("diffutils" ,diffutils) + ("ed" ,ed) + ("expect" ,expect) + ("find" ,findutils) + ("gawk" ,gawk) + ("grep" ,grep) + ("guile" ,guile-3.0) + ("guile-bash" ,guile-bash) + ("guile-daemon" ,guile-daemon) + ("inetutils" ,inetutils) + ("jq" ,jq) + ("libxml2-xpath0" ,libxml2-xpath0) + ("netcat" ,netcat) + ("nmap" ,nmap) + ("pcre/bin" ,pcre "bin") + ("perl" ,perl) + ("php" ,php) + ("prips" ,prips) + ("python" ,python) + ("python-elementpath" ,python-elementpath) + ("python-lxml" ,python-lxml) + ("python-netaddr" ,python-netaddr) + ("python-yq" ,python-yq) + ("sed" ,sed) + ("socat" ,socat) + ("util-linux" ,util-linux) + ("which" ,which) + ("xdg-utils" ,xdg-utils) + ("yad" ,yad))) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let* ((bashfull (assoc-ref %build-inputs "bash-full")) + ;; Some guile libraries such as gnu bash will need + ;; to be added to GUILE_LOAD_PATH + (guile-bash (assoc-ref %build-inputs "guile-bash")) + (g-bash-lib (string-append guile-bash + "/share/guile/site/" ,guilever)) + ;; Some python libraries needs added to PYTHONPATH + (p-elementpath-lib (string-append + (assoc-ref %build-inputs "python-elementpath") + "/lib/python" ,pyver "/site-packages")) + (p-lxml-lib (string-append + (assoc-ref %build-inputs "python-lxml") + "/lib/python" ,pyver "/site-packages")) + (p-netaddr-lib (string-append + (assoc-ref %build-inputs "python-netaddr") + "/lib/python" ,pyver "/site-packages")) + (p-lib (string-append + (assoc-ref %build-inputs "python") + "/lib/python" ,pyver "/site-packages")) + (pylibsline (string-append + p-elementpath-lib ":" p-lxml-lib + ":" p-netaddr-lib ":" p-lib)) + (out (assoc-ref %outputs "out")) + (bin (string-append out "/bin")) + ;; Everything but bcu.sh itself is only accessed + ;; internally by bcu so we put it in libexec. + (libexec (string-append out "/libexec/bcu"))) + (mkdir-p libexec) + (copy-recursively (assoc-ref %build-inputs "source") libexec) + ;; Create a bcu.sh wrapping script manually that ensures + ;; we prepend necessary PATHs. + (mkdir-p bin) + (let* ((binfile (string-append bin "/bcu.sh")) + (bcu-port (open-file binfile "a")) + (pathline (string-append + bashfull "/bin" + ":" (assoc-ref %build-inputs "bindutils") "/bin" + ":" (assoc-ref %build-inputs "coreutils") "/bin" + ":" (assoc-ref %build-inputs "ctypes.sh") "/bin" + ":" (assoc-ref %build-inputs "curl") "/bin" + ":" (assoc-ref %build-inputs "diffutils") "/bin" + ":" (assoc-ref %build-inputs "ed") "/bin" + ":" (assoc-ref %build-inputs "expect") "/bin" + ":" (assoc-ref %build-inputs "find") "/bin" + ":" (assoc-ref %build-inputs "gawk") "/bin" + ":" (assoc-ref %build-inputs "grep") "/bin" + ":" (assoc-ref %build-inputs "guile") "/bin" + ":" (assoc-ref %build-inputs "inetutils") "/bin" + ":" (assoc-ref %build-inputs "jq") "/bin" + ":" (assoc-ref %build-inputs "libxml2-xpath0") "/bin" + ":" (assoc-ref %build-inputs "netcat") "/bin" + ":" (assoc-ref %build-inputs "nmap") "/bin" + ":" (assoc-ref %build-inputs "pcre/bin") "/bin" + ":" (assoc-ref %build-inputs "perl") "/bin" + ":" (assoc-ref %build-inputs "php") "/bin" + ":" (assoc-ref %build-inputs "prips") "/bin" + ":" (assoc-ref %build-inputs "python") "/bin" + ":" (assoc-ref %build-inputs "python-yq") "/bin" + ":" (assoc-ref %build-inputs "sed") "/bin" + ":" (assoc-ref %build-inputs "socat") "/bin" + ":" (assoc-ref %build-inputs "util-linux") "/bin" + ":" (assoc-ref %build-inputs "which") "/bin" + ":" (assoc-ref %build-inputs "xdg-utils") "/bin" + ":" (assoc-ref %build-inputs "yad") "/bin"))) + (display (string-append "#!" bashfull "/bin/bash\n") bcu-port) + (display + (string-append + "[[ \"$_BCU_SH_LOADED\" == YES ]] || { \nexport PATH=\"" + pathline "${PATH:+:}${PATH}\"\nexport PYTHONPATH=\"" + pylibsline "${PYTHONPATH:+:}${PYTHONPATH}\"\nexport GUILE_LOAD_PATH=\"" + g-bash-lib "${GUILE_LOAD_PATH:+:}${GUILE_LOAD_PATH}\"\n" + ;; XDG_DATA_DIRS needs set for yad to load icons properly + "[[ -e /run/current-system/profile/share ]] && export XDG_DATA_DIRS=" + "/run/current-system/profile/share${XDG_DATA_DIRS:+:}${XDG_DATA_DIRS}\n" + ;; Ensure that the setuid version of ping is used + "[[ -e /run/setuid-programs/ping ]] && " + "ping(){ /run/setuid-programs/ping \"$@\" ; } && export -f ping\n" + "[[ -e /run/setuid-programs/ping6 ]] && " + "ping6(){ /run/setuid-programs/ping6 \"$@\" ; } && export -f ping6\n}\n") + bcu-port) + (display (string-append "source " libexec "/bcu.sh\n") bcu-port) + (close-port bcu-port) + (chmod binfile #o555) + (setenv "PATH" (string-append pathline ":" (getenv "PATH")))) + (for-each (lambda (file) + (substitute* file + (("~/\\.guix-profile/lib/bash/libguile-bash\\.so") + (string-append guile-bash "/lib/bash/libguile-bash.so")) + (("\"\\$GUIX_PROFILE\"/lib/bash/libguile-bash\\.so") + (string-append guile-bash "/lib/bash/libguile-bash.so")))) + (find-files out ".*\\.sh")) + (for-each (lambda (file) + (patch-shebang file)) + (find-files out ".*\\.(sh|scm|awk|php|py)$")) + ;; Setup PATH for tests + (setenv "PATH" (string-append bin ":" (getenv "PATH"))) + ;; Some tests need a HOME-directory + (setenv "HOME" "/tmp") + ;; Disable network tests, and all tests for setopts which + ;; don't work inside the Guix build environment + (call-with-output-file (string-append libexec "/disabled_tests.txt") + (lambda (port) + (display (string-append + "ip_of_test_1\nsetopts_test_1\nsetopts_test_2\nsetopts_test_3" + "\nsetopts_test_4\nsetopts_test_5\nsetopts_test_6\n") + port))) + (invoke (string-append libexec "/bcu-test.sh")))))) + (build-system trivial-build-system) + (synopsis "Bash functions and tools for software prototyping in Bash") + (description + (string-append + "Bash-bcu contains bash functions and wrappers that can be useful when" + " writing quick implementations of new programs. It helps you work with" + " JSON, XML, parallelization and installs some commonly used \"helper\"" + " programs used in Bash scripting. Just run @command{. bcu.sh}, type " + "@command{bcu__}, hit @command{TAB} to see available functions and give" + " any of them the @command{ --help} flag to see how to use it, or run " + "@command{bcu__docs} for the full html documentation.")) + (license license:gpl3)))) -- 2.31.0 From patchwork Tue May 23 04:55:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: david larsson X-Patchwork-Id: 50244 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id EB44827BBEA; Tue, 23 May 2023 05:56:27 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,FROM_SUSPICIOUS_NTLD,MAILING_LIST_MULTI,PDS_OTHER_BAD_TLD, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 204E027BBE2 for ; Tue, 23 May 2023 05:56:26 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q1K46-0007AT-NW; Tue, 23 May 2023 00:56:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q1K42-000784-96 for guix-patches@gnu.org; Tue, 23 May 2023 00:56:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1q1K42-0005gf-1G for guix-patches@gnu.org; Tue, 23 May 2023 00:56:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1q1K41-0006h3-TP for guix-patches@gnu.org; Tue, 23 May 2023 00:56:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#51512] [PATCH v6 2/3]: gnu: Add guile-bash-for-bash-coding-utils Resent-From: david larsson Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 23 May 2023 04:56:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51512 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 51512@debbugs.gnu.org Cc: Guix-patches Received: via spool by 51512-submit@debbugs.gnu.org id=B51512.168481773725587 (code B ref 51512); Tue, 23 May 2023 04:56:01 +0000 Received: (at 51512) by debbugs.gnu.org; 23 May 2023 04:55:37 +0000 Received: from localhost ([127.0.0.1]:37859 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q1K3c-0006eW-Ft for submit@debbugs.gnu.org; Tue, 23 May 2023 00:55:37 -0400 Received: from server0.selfhosted.xyz ([217.64.149.7]:57360) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q1K3a-0006da-AH for 51512@debbugs.gnu.org; Tue, 23 May 2023 00:55:35 -0400 Received: from server0.selfhosted.xyz (localhost [127.0.0.1]) by server0.selfhosted.xyz (Postfix) with ESMTP id A07C830F86C8; Tue, 23 May 2023 06:55:22 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=selfhosted.xyz; s=dkim; t=1684817728; bh=TqaoM/wXK5PVSZghVaLfAwBJYDKNb+CxnGiowDbWRfE=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=A7lb0pg4zfLS9DI3DIVE1qM2xUiCnj37deaEbwD14NhXrvuzJzJLFSuwVQz0MKP48 50KaRaoiJxUqobxfjTvSP3ovXH2/DorsXhBUfQ5G1mEspzY1L0e6o/dIdbeRQrtd2Y s2ihbsCGwrCognmWuXZHZmRAKbTRqFu7Pz61+momLdxIk1WYxWOVYSQajDAWDe83DK 1dXHKAfKa6aRJBuvfINloQ88qb+ir2WmIEgTpCCnQufoOduXr+QpYkuBNWaNtxWw5J k/7W9tYlXaRf7n6tkfzX0k5aW2JoixxhPZW0BaOtqZDBgDHKn6nIr0lbvBjPLimnVp BV/fEEmYuEULg== X-Fuglu-Suspect: d4af105c0b03435dbedbbfbe74ffab31 X-Fuglu-Spamstatus: NO Received: from webmail.selfhosted.xyz (office.selfhosted.xyz [192.168.1.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: mail@selfhosted.xyz) by server0.selfhosted.xyz (Postfix) with ESMTPSA; Tue, 23 May 2023 06:55:22 +0200 (CEST) MIME-Version: 1.0 Date: Tue, 23 May 2023 06:55:22 +0200 From: david larsson In-Reply-To: <3add15b77522d6e9ebd715a19d966666@selfhosted.xyz> References: <3add15b77522d6e9ebd715a19d966666@selfhosted.xyz> Message-ID: X-Sender: david.larsson@selfhosted.xyz X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches From 7f2df5fd5b6ec44170b44ac74cae554405d939b6 Mon Sep 17 00:00:00 2001 From: David Larsson Date: Tue, 23 May 2023 05:38:36 +0200 Subject: [PATCH 2/3] gnu: Add guile-bash-for-bash-coding-utils * gnu/packages/bash.scm (guile-bash-for-bash-coding-utils): New variable. --- gnu/local.mk | 1 + gnu/packages/bash.scm | 34 +++++++++++++++ .../patches/guile-bash-args-from-stdin.patch | 42 +++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 gnu/packages/patches/guile-bash-args-from-stdin.patch ++ return $retval ; + }" + symbol special-varname)))) + +-- +2.31.0 + -- 2.39.1 From 7f2df5fd5b6ec44170b44ac74cae554405d939b6 Mon Sep 17 00:00:00 2001 From: David Larsson Date: Tue, 23 May 2023 05:38:36 +0200 Subject: [PATCH 2/3] gnu: Add guile-bash-for-bash-coding-utils * gnu/packages/bash.scm (guile-bash-for-bash-coding-utils): New variable. --- gnu/local.mk | 1 + gnu/packages/bash.scm | 34 +++++++++++++++ .../patches/guile-bash-args-from-stdin.patch | 42 +++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 gnu/packages/patches/guile-bash-args-from-stdin.patch diff --git a/gnu/local.mk b/gnu/local.mk index c10fb01bb3..1db38d093c 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1302,6 +1302,7 @@ dist_patch_DATA = \ %D%/packages/patches/guile-1.8-cpp-4.5.patch \ %D%/packages/patches/guile-2.2-skip-oom-test.patch \ %D%/packages/patches/guile-2.2-skip-so-test.patch \ + %D%/packages/patches/guile-bash-args-from-stdin.patch \ %D%/packages/patches/guile-default-utf8.patch \ %D%/packages/patches/guile-2.2-default-utf8.patch \ %D%/packages/patches/guile-relocatable.patch \ diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm index 1650fdeb72..64d6e8d65e 100644 --- a/gnu/packages/bash.scm +++ b/gnu/packages/bash.scm @@ -40,6 +40,7 @@ (define-module (gnu packages bash) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages guile) + #:use-module (gnu packages guile-xyz) #:use-module (gnu packages version-control) #:use-module (gnu packages less) #:use-module (guix packages) @@ -540,3 +541,36 @@ (define-public pydaemon back as strings. Can be used over either of a unix or tcp socket.") (home-page "https://gitlab.com/methuselah-0/pydaemon") (license license:gpl3)))) + +(define-public guile-bash-for-bash-coding-utils + (let ((commit "1eabc563ca5692b3e08d84f1f0e6fd2283284469") + (revision "0")) + (package + (inherit guile2.0-bash) + (version (string-append "0.1.6-" revision "." (string-take commit 7))) + (name "guile-bash-for-bash-coding-utils") + (home-page (package-home-page guile2.0-bash)) + (source (origin + (method git-fetch) + (uri (git-reference + (commit commit) + (url home-page))) + (sha256 + (base32 + "097vny990wp2qpjij6a5a5gwc6fxzg5wk56inhy18iki5v6pif1p")) + (file-name (string-append name "-" version "-checkout")) + (patches (search-patches "guile-bash-args-from-stdin.patch")))) + (arguments (substitute-keyword-arguments (package-arguments guile2.0-bash) + ((#:tests? _ #f) #f) + ((#:phases phases #~%standard-phases) + #~(modify-phases #$phases + (add-after 'install 'install-guile + (lambda* (#:key inputs outputs #:allow-other-keys) + (copy-recursively + (string-append (assoc-ref outputs "out") + (assoc-ref inputs "guile") "/share") + (string-append (assoc-ref outputs "out") "/share")) + #t)))))) + (inputs (modify-inputs (package-inputs guile2.0-bash) + (replace "guile" guile-3.0-latest))) + (propagated-inputs (list bash))))) diff --git a/gnu/packages/patches/guile-bash-args-from-stdin.patch b/gnu/packages/patches/guile-bash-args-from-stdin.patch new file mode 100644 index 0000000000..ad42616c70 --- /dev/null +++ b/gnu/packages/patches/guile-bash-args-from-stdin.patch @@ -0,0 +1,42 @@ +From a124921666a16cb4e93f59a653f98b99c78eb2ca Mon Sep 17 00:00:00 2001 +From: David Larsson +Date: Thu, 11 Nov 2021 14:07:04 +0100 +Subject: [PATCH] Enable reading arguments from bash via stdin + +* lisp/gnu/bash.scm(define-bash-function): read from stdin +to SCM_ARGS array when it is open, and separate args by null +instead of newline if -z option is passed as $1. +--- + lisp/gnu/bash.scm | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +diff --git a/lisp/gnu/bash.scm b/lisp/gnu/bash.scm +index 199ebc0..e9dcea5 100644 +--- a/lisp/gnu/bash.scm ++++ b/lisp/gnu/bash.scm +@@ -326,10 +326,18 @@ + (hashq-set! *funcs* symbol thunk) + (unsafe-format/eval + "function ~a { +- SCM_ARGS=($@) ; +- local retval=$~a ; +- unset SCM_ARGS ; +- return $retval ; ++ local -a Input SCM_ARGS ; ++ [[ ! -t 0 ]] && mapfile -d '' Input ; ++ if [[ -n \"${Input[@]}\" ]]; then ++ if [[ \"$1\" == -z ]]; then ++ local -a SCM_ARGS=\"(${Input[*]@Q})\" ; ++ else ++ mapfile -t SCM_ARGS < <(printf '%s' \"${Input[@]}\"); fi ; ++ else ++ SCM_ARGS=(\"$@\"); fi ; ++ local retval=$~a ; ++ unset SCM_ARGS ; ++ return $retval ; + }" + symbol special-varname)))) + +-- +2.31.0 + -- 2.39.1 From patchwork Tue May 23 04:56:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: david larsson X-Patchwork-Id: 50245 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 9DF7927BBE9; Tue, 23 May 2023 05:57:18 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,FROM_SUSPICIOUS_NTLD,MAILING_LIST_MULTI,PDS_OTHER_BAD_TLD, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id D43F227BBE2 for ; Tue, 23 May 2023 05:57:15 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q1K54-0007Hx-EW; Tue, 23 May 2023 00:57:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q1K53-0007Hp-0A for guix-patches@gnu.org; Tue, 23 May 2023 00:57:05 -0400 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1q1K50-0005tT-Aj for guix-patches@gnu.org; Tue, 23 May 2023 00:57:04 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1q1K50-0006jG-7k for guix-patches@gnu.org; Tue, 23 May 2023 00:57:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#51512] [PATCH v6 3/3]: gnu: Add bash-coding-utils Resent-From: david larsson Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 23 May 2023 04:57:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51512 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 51512@debbugs.gnu.org Cc: Guix-patches Received: via spool by 51512-submit@debbugs.gnu.org id=B51512.168481780425827 (code B ref 51512); Tue, 23 May 2023 04:57:02 +0000 Received: (at 51512) by debbugs.gnu.org; 23 May 2023 04:56:44 +0000 Received: from localhost ([127.0.0.1]:37870 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q1K4g-0006iR-NV for submit@debbugs.gnu.org; Tue, 23 May 2023 00:56:44 -0400 Received: from server0.selfhosted.xyz ([217.64.149.7]:57640) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q1K4c-0006i7-HO for 51512@debbugs.gnu.org; Tue, 23 May 2023 00:56:41 -0400 Received: from server0.selfhosted.xyz (localhost [127.0.0.1]) by server0.selfhosted.xyz (Postfix) with ESMTP id 0FBFF30F86DE; Tue, 23 May 2023 06:56:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=selfhosted.xyz; s=dkim; t=1684817792; bh=Lp1b9iIpv7NQ09lybMzkB6obGjH9ELpq/OG7FhTFPPs=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=jTGbzi7g4TR3m0qi4/1PbrA5VfV9VXollZHc92fRHACL4USFP4npvTcwycLHLaAhq 7vkUWx86avwE5ZSABVHXVMngb9lmijhnNb7aZLNy2XF8DcVSDwCHEDmUHJ/+EjUooy gv0Oqt+MNJkrwKeW11Y14zfgsWPm108+LpG8Ru/VpRvzCIeVjmmQ4lM0/h07K1RC0b +4eyLlveEwefJJaXu8rotdddzR4UzzjEKVznWbgSbTYQC9lWL9jA/16+0HCPUsnolv cZaXiacukwjQYjuVdXwbVjQyVxacUS+dlZ06mVY3KCO3mfzfm9HWUXPB8yzb0ujmau r5SbwKih7sEQw== X-Fuglu-Suspect: 415de0b5342a422a9ec5bd04b1a38baf X-Fuglu-Spamstatus: NO Received: from webmail.selfhosted.xyz (office.selfhosted.xyz [192.168.1.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: mail@selfhosted.xyz) by server0.selfhosted.xyz (Postfix) with ESMTPSA; Tue, 23 May 2023 06:56:25 +0200 (CEST) MIME-Version: 1.0 Date: Tue, 23 May 2023 06:56:25 +0200 From: david larsson In-Reply-To: <3add15b77522d6e9ebd715a19d966666@selfhosted.xyz> References: <3add15b77522d6e9ebd715a19d966666@selfhosted.xyz> Message-ID: X-Sender: david.larsson@selfhosted.xyz X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches From bb7ab11b11058d609a89cad164308b5b52ebadca Mon Sep 17 00:00:00 2001 From: David Larsson Date: Tue, 23 May 2023 06:42:03 +0200 Subject: [PATCH 3/3] gnu: Add bash-coding-utils * gnu/packages/bash.scm (bash-coding-utils) (org-html-themes/methuselah-0): new variables. --- gnu/packages/bash.scm | 260 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 260 insertions(+) "/disabled_tests.txt") + (lambda _ + (format #t "~{~a~%~}" + (list "ip_of_test_1" + "setopts_test_4" + "web_media_server_test_1" + "web_api_server_test_1" + "find_gui_test_1")))) + + ;; Set up a minimal test environment & run the tests. + (when tests? + (setenv "PATH" (string-append bin ":" + bash "/bin:" + (getenv "PATH"))) + (setenv "SHELL" + (string-append bash "/bin/bash")) + (for-each (lambda (test-input) + (setenv "PATH" + (string-append + (assoc-ref %build-inputs test-input) + "/bin:" (getenv "PATH")))) + (list "coreutils")) + (setenv "HOME" "/tmp") + (with-directory-excursion bcu-root + (invoke "./bcu-test.sh") + ;; No need to keep passed tests in the final output + (for-each delete-file + (list "bcu-test.sh" + "disabled_tests.txt")))))))) + (inputs (list bash bash-ctypes coreutils + diffutils file findutils + gawk guile-3.0 guile-bash-for-bash-coding-utils + jq libxml2-xpath0 + lsof + nmap + ;; org-html-themes is bundled upstream as a git submodule, + ;; but we package it separately and copy it manually above. + org-html-themes/methuselah-0 + pcre2 perl php + procps + pydaemon python python-elementpath python-lxml + python-netaddr python-yq + sed + socat + tree ugrep util-linux which + xdg-utils )) + ;; the bash shell needs to be the same version + ;; as guile-bash is compiled against + (propagated-inputs (list bash)) + (home-page "https://git.sr.ht/~methuselah-0/bash-coding-utils") + (synopsis "Functions and tools for software prototyping in Bash") + (description + "Bash-Coding-Utils is a library of Bash functions and wrappers that can +be useful when writing quick implementations of new programs. It helps you +work with JSON, XML, API's and parallelization, and installs some helper +programs commonly used in Bash scripting. Just run @command{. bcu.sh}, type +@command{bcu__}, hit @key{TAB} to see available functions and give any of them +the @code{--help} flag to see how to use it, or run @command{bcu__docs} for +the full HTML documentation.") + (license license:gpl3)))) -- 2.39.1 From bb7ab11b11058d609a89cad164308b5b52ebadca Mon Sep 17 00:00:00 2001 From: David Larsson Date: Tue, 23 May 2023 06:42:03 +0200 Subject: [PATCH 3/3] gnu: Add bash-coding-utils * gnu/packages/bash.scm (bash-coding-utils) (org-html-themes/methuselah-0): new variables. --- gnu/packages/bash.scm | 260 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 260 insertions(+) diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm index 64d6e8d65e..986ec68b3f 100644 --- a/gnu/packages/bash.scm +++ b/gnu/packages/bash.scm @@ -31,17 +31,28 @@ (define-module (gnu packages bash) #:use-module (gnu packages bootstrap) #:use-module (gnu packages compression) #:use-module (gnu packages elf) + #:use-module (gnu packages file) + #:use-module (gnu packages freedesktop) + #:use-module (gnu packages gawk) #:use-module (gnu packages ncurses) #:use-module (gnu packages networking) #:use-module (gnu packages readline) #:use-module (gnu packages bison) #:use-module (gnu packages linux) #:use-module (gnu packages libffi) + #:use-module (gnu packages lsof) + #:use-module (gnu packages pcre) + #:use-module (gnu packages perl) + #:use-module (gnu packages php) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) #:use-module (gnu packages guile) #:use-module (gnu packages guile-xyz) + #:use-module (gnu packages search) #:use-module (gnu packages version-control) + #:use-module (gnu packages web) + #:use-module (gnu packages xml) #:use-module (gnu packages less) #:use-module (guix packages) #:use-module (guix download) @@ -574,3 +585,252 @@ (define-public guile-bash-for-bash-coding-utils (inputs (modify-inputs (package-inputs guile2.0-bash) (replace "guile" guile-3.0-latest))) (propagated-inputs (list bash))))) + +(define org-html-themes/methuselah-0 + ;; A form of https://github.com/fniessen/org-html-themes but not + ;; drop-in compatible (using that would break the BCU docs). + (let ((commit "cce6e288649d6555cb74583f3c02a1e4e97fa1f8") + (revision "0")) + (package + (name "org-html-themes") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (commit commit) + (url "https://gitlab.com/methuselah-0/org-html-themes.git"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ka40r5a7xc522wc03v3rwfwq3abb8c1h8sr3hw5v1gsws9s18y9")))) + (build-system copy-build-system) + (home-page "https://gitlab.com/methuselah-0/org-html-themes") + (synopsis "Export Org mode files to HTML") + (description + "The Org-HMTL framework provides cross-browser themes for exporting Org +documents to cross-browser HTML mark-up.") + (license license:gpl3)))) + +(define-public bash-coding-utils + (let ((commit "f1f0ed8bc39db2d5a2b6d3c5aca3e5cbadebfb29") + (revision "0")) + (package + (name "bash-coding-utils") + (version (git-version "0.3.0" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (commit commit) + (url "https://git.sr.ht/~methuselah-0/bash-coding-utils") + (recursive? #t)) ) + (sha256 + (base32 "1vpp91nsp0gyp5n4kkq0cjsndry9wclxrcr5y41fi1g35vw3m3zz")) + (file-name (git-file-name name version)))) + (build-system trivial-build-system) + (arguments + (list #:modules '((guix build utils)) + #:builder + #~(begin + (use-modules (guix build utils) + (ice-9 ftw) + (ice-9 match) + (srfi srfi-26)) + (let* ((bash #$(this-package-input "bash")) + (bin (string-append #$output "/bin")) + (bcu.sh (string-append bin "/bcu.sh")) + (share (string-append #$output "/share")) + (doc (string-append share "/doc/" #$name)) + ;; Everything but bcu.sh itself is only ever accessed + ;; internally by bcu, so put it all in share/. + (bcu-root (string-append share "/bcu")) + ;; XXX We should honour the without-tests transformation! + (tests? (not #$(%current-target-system)))) + + ;; Copy the ‘source’ to the output and replace submodules. + (let ((source #$(package-source this-package))) + (with-directory-excursion source + (mkdir-p (string-append bcu-root "/submodules")) + (for-each (lambda (file) + (copy-recursively file + (string-append bcu-root + "/" file))) + (list "bcu.sh" + "dependency_paths.sh" + "bcu-test.sh" + "docs" + "src")) + (copy-recursively + #$(package-source (this-package-input + "org-html-themes")) + (string-append bcu-root + "/submodules/org-html-themes")))) + ;; Patch absolute file name references. + (let* ((original-path (getenv "PATH")) + (shebang-inputs '(#$@(map (lambda (name) + (this-package-input name)) + '("guile" + "python")))) + (shebang-path (string-join + (map (cut string-append <> "/bin") + (cons bash shebang-inputs)) + ":"))) + (setenv "PATH" shebang-path) + (for-each patch-shebang + (find-files #$output "\\.(sh|scm|py)$")) + (setenv "PATH" original-path)) + + ;; Add paths to dependencies - defined in + ;; dependency_paths.sh, except the libguile-bash.so + ;; file. + (substitute* (find-files #$output "\\.sh$") + (("[^ ]*(/lib/bash/libguile-bash\\.so)" _ library) + (string-append + #$(this-package-input "guile-bash-for-bash-coding-utils") + library))) + + (substitute* (find-files #$output "dependency_paths\\.sh$") + (("=ctypes.sh") (string-append "=" #$(this-package-input "bash-ctypes") "/bin/ctypes.sh")) + (("=diff") (string-append "=" #$(this-package-input "diffutils") "/bin/diff")) + (("=ping") (string-append "=" "/run/setuid-programs/ping")) + (("=ps") (string-append "=" #$(this-package-input "procps") "/bin/ps")) + (("=file") (string-append "=" #$(this-package-input "findutils") "/bin/file")) + (("=find") (string-append "=" #$(this-package-input "findutils") "/bin/find")) + (("=flock") (string-append "=" #$(this-package-input "util-linux") "/bin/flock")) + (("=gawk") (string-append "=" #$(this-package-input "gawk") "/bin/gawk")) + (("=ugrep") (string-append "=" #$(this-package-input "ugrep") "/bin/ugrep")) + (("=jq") (string-append "=" #$(this-package-input "jq") "/bin/jq")) + (("=lsof") (string-append "=" #$(this-package-input "lsof") "/bin/lsof")) + (("=nmap") (string-append "=" #$(this-package-input "nmap") "/bin/nmap")) + (("=perl") (string-append "=" #$(this-package-input "perl") "/bin/perl")) + (("=php") (string-append "=" #$(this-package-input "php") "/bin/php")) + (("=ps") (string-append "=" #$(this-package-input "procps") "/bin/ps")) + (("=pydaemon.sh") (string-append "=" #$(this-package-input "pydaemon") "/bin/pydaemon.sh")) + (("=sed") (string-append "=" #$(this-package-input "sed") "/bin/sed")) + (("=socat") (string-append "=" #$(this-package-input "socat") "/bin/socat")) + (("=tree") (string-append "=" #$(this-package-input "tree") "/bin/tree")) + (("=pcre2grep") (string-append "=" #$(this-package-input "pcre2") "/bin/pcre2grep")) + (("=which") (string-append "=" #$(this-package-input "which") "/bin/which")) + (("=xargs") (string-append "=" #$(this-package-input "findutils") "/bin/xargs")) + (("=xdg-open") (string-append "=" #$(this-package-input "xdg-utils") "/bin/xdg-open")) + (("=xmllint") (string-append "=" #$(this-package-input "libxml2-xpath0") "/bin/xmllint")) + (("export GUILE_LOAD_PATH=(.*)$") + (string-append "export GUILE_LOAD_PATH=\"" + (string-join + '(#$@(map (lambda (name) + (file-append (this-package-input name) + "/share/guile/site/" + (version-major+minor + (package-version + (this-package-input + "guile"))))) + '("guile-bash-for-bash-coding-utils"))) + ":") + "${GUILE_LOAD_PATH:+:}${GUILE_LOAD_PATH}\"\n")) + (("export BCUPYTHONVERSION=(.*)$" _) + (string-append "export BCUPYTHONVERSION=" + #$(version-major+minor + (package-version + (this-package-input + "python"))))) + (("export BCUPYTHON=python(.*)$" _) + (string-append "export BCUPYTHON=" + #$(file-append (this-package-input "python") + "/bin/python" + (version-major+minor + (package-version + (this-package-input + "python")))) + "\n")) + (("export PYTHONPATH=.*" all) + (string-append "export PYTHONPATH=\"" + (string-join + '(#$@(map (lambda (name) + (file-append (this-package-input name) + "/lib/python" + (version-major+minor + (package-version + (this-package-input + "python"))) + "/site-packages")) + '("python" + "python-elementpath" + "python-lxml" + "python-netaddr"))) + ":") + "${PYTHONPATH:+:}${PYTHONPATH}\"\n")) + (("export XDG_DATA_DIRS=(.*)$") + (string-append + "[[ -e /run/current-system/profile/share ]] && " + "export XDG_DATA_DIRS=" + "/run/current-system/profile/share" + "${XDG_DATA_DIRS:+:}${XDG_DATA_DIRS}\n"))) + + ;; Symlink to bcu.sh from the output bin directory. + (mkdir-p bin) + (symlink (string-append bcu-root "/bcu.sh") bcu.sh) + (chmod bcu.sh #o555) + + ;; Disable network and gui tests, and one test for setopts which + ;; doesn't work inside the Guix build environment. + (with-output-to-file (string-append bcu-root "/disabled_tests.txt") + (lambda _ + (format #t "~{~a~%~}" + (list "ip_of_test_1" + "setopts_test_4" + "web_media_server_test_1" + "web_api_server_test_1" + "find_gui_test_1")))) + + ;; Set up a minimal test environment & run the tests. + (when tests? + (setenv "PATH" (string-append bin ":" + bash "/bin:" + (getenv "PATH"))) + (setenv "SHELL" + (string-append bash "/bin/bash")) + (for-each (lambda (test-input) + (setenv "PATH" + (string-append + (assoc-ref %build-inputs test-input) + "/bin:" (getenv "PATH")))) + (list "coreutils")) + (setenv "HOME" "/tmp") + (with-directory-excursion bcu-root + (invoke "./bcu-test.sh") + ;; No need to keep passed tests in the final output + (for-each delete-file + (list "bcu-test.sh" + "disabled_tests.txt")))))))) + (inputs (list bash bash-ctypes coreutils + diffutils file findutils + gawk guile-3.0 guile-bash-for-bash-coding-utils + jq libxml2-xpath0 + lsof + nmap + ;; org-html-themes is bundled upstream as a git submodule, + ;; but we package it separately and copy it manually above. + org-html-themes/methuselah-0 + pcre2 perl php + procps + pydaemon python python-elementpath python-lxml + python-netaddr python-yq + sed + socat + tree ugrep util-linux which + xdg-utils )) + ;; the bash shell needs to be the same version + ;; as guile-bash is compiled against + (propagated-inputs (list bash)) + (home-page "https://git.sr.ht/~methuselah-0/bash-coding-utils") + (synopsis "Functions and tools for software prototyping in Bash") + (description + "Bash-Coding-Utils is a library of Bash functions and wrappers that can +be useful when writing quick implementations of new programs. It helps you +work with JSON, XML, API's and parallelization, and installs some helper +programs commonly used in Bash scripting. Just run @command{. bcu.sh}, type +@command{bcu__}, hit @key{TAB} to see available functions and give any of them +the @code{--help} flag to see how to use it, or run @command{bcu__docs} for +the full HTML documentation.") + (license license:gpl3)))) -- 2.39.1