diff --git a/rekahsoft-gnu/packages/golang.scm b/rekahsoft-gnu/packages/golang.scm index 4dc99da..a5de980 100644 --- a/rekahsoft-gnu/packages/golang.scm +++ b/rekahsoft-gnu/packages/golang.scm @@ -30,6 +30,7 @@ #:use-module (gnu packages admin) #:use-module (gnu packages gcc) #:use-module (gnu packages golang) + #:use-module (gnu packages golang-web) #:use-module (gnu packages base) #:use-module (gnu packages check) #:use-module (gnu packages gnupg) diff --git a/rekahsoft-gnu/packages/python-xyz.scm b/rekahsoft-gnu/packages/python-xyz.scm index 995773c..a5de4b2 100644 --- a/rekahsoft-gnu/packages/python-xyz.scm +++ b/rekahsoft-gnu/packages/python-xyz.scm @@ -22,7 +22,10 @@ #:use-module (gnu packages) #:use-module (gnu packages check) #:use-module (gnu packages cmake) + #:use-module (gnu packages commencement) #:use-module (gnu packages glib) + #:use-module (gnu packages groff) + #:use-module (gnu packages libffi) #:use-module (gnu packages maths) #:use-module (gnu packages python) #:use-module (gnu packages python-build) @@ -31,11 +34,15 @@ #:use-module (gnu packages python-xyz) #:use-module (gnu packages serialization) #:use-module (gnu packages sphinx) + #:use-module (gnu packages time) + #:use-module (gnu packages tls) #:use-module (gnu packages xml) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix build-system python) + #:use-module (guix build-system pyproject) #:use-module (srfi srfi-1)) ;; TODO: Candidate for upstream @@ -223,7 +230,6 @@ bindings for Python 3.") (license license:bsd-3))) ;; python-prompt-toolkit-2 was removed upstream from guix's channel; added here as awscliv2 depends on it - ;; awscliv2 depends on 'prompt-toolkit<3.0.29,>=3.0.24', however upstream 3.0.29 is packaged (define-public python-prompt-toolkit-3.0.28 (package/inherit python-prompt-toolkit @@ -235,11 +241,23 @@ bindings for Python 3.") (sha256 (base32 "0l0nnm9fvs8lklk2qq8mylb9jrlxvlqzpmqr4n7rdhl63rmx274z")))))) +;; awscliv2 is a little bit of a packaging mess. They vendor multiple modified +;; forks of software also maintained by the same company. Namely: +;; +;; - botocore@2.0.0dev155 and some of its dependencies: +;; - python-six@1.10.0 +;; - Fragments (exceptions only) were extracted from: +;; - requests +;; - urllib3 +;; - s3transfer@0.5.1 +;; +;; botocore@2.0.0dev155 is incompatable with the same upstream version. For example: +;; https://github.com/aws/aws-cli/blob/2.15.4/awscli/botocore/httpchecksum.py +;; does not exist upstream (see: https://github.com/boto/botocore/tree/7083e5c204e139dc41f646e0ad85286b5e7c0c23/botocore) (define-public awscliv2 (package - (inherit awscli) (name "awscliv2") - (version "2.7.18") + (version "2.15.6") (source (origin (method git-fetch) (uri (git-reference @@ -248,59 +266,45 @@ bindings for Python 3.") (file-name (git-file-name name version)) (sha256 (base32 - "10p6433spz3lw5jwnw0kflp3fh629chiscp868slld6x2kp80gi4")))) - (native-inputs `(("python-distro" ,python-distro-1.5) - ("python-docutils" ,python-docutils-0.15) - ("python-s3transfer" ,python-s3transfer) - ("python-awscrt" ,python-awscrt) - ("python-prompt-toolkit" ,python-prompt-toolkit-3.0.28) - ("python-ruamel.yaml" ,python-ruamel.yaml-0.15) - ("python-cryptography" ,python-cryptography-3.3.2) - ("python-botocore" ,python-botocore-2.0.0dev155))) - (propagated-inputs `(,@(fold alist-delete - (package-propagated-inputs awscli) - '("python-botocore")))) + "02lq4zxnksx1ab8lyzbyl1lay884xbrxp77rbhn5mrfib9mqmvs0")))) + (native-inputs (list python-distro-1.5 + python-docutils-0.15 + python-awscrt-0.19.18 + python-flit-core + python-prompt-toolkit-3.0.28 + python-ruamel.yaml + python-cryptography + python-botocore-2.0.0dev155)) + (inputs + (list groff + python-colorama-for-awscli + python-docutils-0.15 + python-pyyaml + python-rsa)) + (build-system pyproject-build-system) (arguments - `(#:phases (modify-phases %standard-phases - (add-before 'build 'removed-vendored - (lambda* _ - (for-each delete-file-recursively - '("awscli/botocore" "awscli/s3transfer")) - (symlink (string-append (assoc-ref %build-inputs - "python-botocore") - "/lib/python" - (python-version (assoc-ref - %build-inputs - "python")) - "/site-packages/botocore") - "awscli/botocore") - (symlink (string-append (assoc-ref %build-inputs - "python-s3transfer") - "/lib/python" - (python-version (assoc-ref - %build-inputs - "python")) - "/site-packages/s3transfer") - "awscli/s3transfer") #t)) - (add-after 'install 'generate-completions + `(#:build-backend "backends.pep517" + #:phases (modify-phases %standard-phases + (add-after 'unpack 'use-cryptography-v41 + (lambda _ + (substitute* '("pyproject.toml") + (("cryptography>=3.3.2,<40.0.2") "cryptography>=3.3.2")))) + (add-after 'unpack 'fix-reference-to-groff + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "awscli/help.py" + (("if not self._exists_on_path\\('groff'\\):") "") + (("raise ExecutableNotFoundError\\('groff'\\)") "") + (("cmdline = \\['groff'") + (string-append "cmdline = ['" + (search-input-file inputs "bin/groff") + "'"))))) + (add-after 'install 'install-completions (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) - (python-version (python-version (assoc-ref inputs - "python"))) - (data (string-append out "/lib/python" - python-version - "/site-packages/awscli/data")) (bash-completion (string-append out - "/share/bash-completion/completions")) + "/share/bash-completion/completions")) (zsh-site-functions (string-append out - "/share/zsh/site-functions"))) - (mkdir-p data) - (add-installed-pythonpath inputs outputs) - - (invoke "python" "scripts/gen-ac-index" - "--index-location" - (string-append data "/ac.index")) - + "/share/zsh/site-functions"))) (mkdir-p bash-completion) (call-with-output-file (string-append bash-completion "/aws") @@ -308,19 +312,21 @@ bindings for Python 3.") (format port (string-join (list "complete" "-C" (string-append out - "/bin/aws_completer") + "/bin/aws_completer") "aws"))))) (mkdir-p zsh-site-functions) (rename-file (string-append out - "/bin/aws_zsh_completer.sh") + "/bin/aws_zsh_completer.sh") (string-append zsh-site-functions "/_aws")) #t)))) ;; FIXME: Tests currently fail #:tests? #f)) + (home-page "https://aws.amazon.com/cli/") (synopsis "Command line client for AWS v2") - (description "AWS CLI v2 provides a unified command line interface to the -Amazon Web Services (AWS) API."))) + (description "AWS CLI provides a unified command line interface to the +Amazon Web Services (AWS) API.") + (license license:asl2.0))) (define-public python-jmespath-0.10 (package @@ -344,30 +350,6 @@ Amazon Web Services (AWS) API."))) (base32 "14nz51cqlnxmgfqqilxyvjwwa5xfivdvlm0d0b1qzgcgwdm7an0f")))))) -(define-public python-ruamel.yaml-0.15 - (package - (inherit python-ruamel.yaml) - (name "python-ruamel.yaml") - (version "0.15.100") - (source (origin - (method url-fetch) - (uri (pypi-uri "ruamel.yaml" version)) - (sha256 - (base32 - "1r5j9n2jdq48z0k4bdia1f7krn8f2x3y49i9ba9iks2rg83g6hlf")))))) - -(define-public python-cryptography-3.3.2 - (package - (inherit python-cryptography) - (name "python-cryptography") - (version "3.3.2") - (source (origin - (method url-fetch) - (uri (pypi-uri "cryptography" version)) - (sha256 - (base32 - "1vcvw4lkw1spiq322pm1256kail8nck6bbgpdxx3pqa905wd6q2s")))))) - (define-public python-awscrt (package (name "python-awscrt") @@ -379,8 +361,30 @@ Amazon Web Services (AWS) API."))) (base32 "1cmfkcv2zzirxsb989vx1hvna9nv24pghcvypl0zaxsjphv97mka")))) (build-system python-build-system) - (native-inputs `(("cmake" ,cmake))) - (propagated-inputs `(("python-boto3" ,python-boto3))) + (arguments + '(#:tests? #f)) + (native-inputs `(,cmake ,gcc-toolchain-10)) +; (propagated-inputs `(("python-boto3" ,python-boto3))) + (home-page "https://github.com/awslabs/aws-crt-python") + (synopsis "Common runtime for AWS Python projects") + (description "Common runtime for AWS Python projects") + (license license:asl2.0))) + +(define-public python-awscrt-0.19.18 + (package + (name "python-awscrt") + (version "0.19.18") + (source (origin + (method url-fetch) + (uri (pypi-uri "awscrt" version)) + (sha256 + (base32 + "17f8j3n9zsywad48pnq1mz6r9i9y7jdcaliy7zm85q5yivynw2rm")))) + (build-system pyproject-build-system) + (arguments + '(#:tests? #f)) + (native-inputs `(,cmake)) +; (propagated-inputs `(("python-boto3" ,python-boto3))) (home-page "https://github.com/awslabs/aws-crt-python") (synopsis "Common runtime for AWS Python projects") (description "Common runtime for AWS Python projects") @@ -404,6 +408,8 @@ Amazon Web Services (AWS) API."))) "0lr98h80fgs6kplv52y92pcf1ba4041zq26wdfsfjkg84py9q83a")))) (propagated-inputs `(("python-awscrt" ,python-awscrt) ("python-jmespath" ,python-jmespath-0.10) + ("python-urllib3" ,python-urllib3) + ("python-dateutil" ,python-dateutil) ,@(package-propagated-inputs python-awscrt)))))) (define-public python-htmlark diff --git a/rekahsoft-gnu/packages/terraform.scm b/rekahsoft-gnu/packages/terraform.scm index 8e68749..59247d4 100644 --- a/rekahsoft-gnu/packages/terraform.scm +++ b/rekahsoft-gnu/packages/terraform.scm @@ -27,14 +27,8 @@ #:use-module (guix git-download) #:use-module (guix build-system go) #:use-module (guix build-system trivial) - #:use-module (rekahsoft-gnu packages golang)) - -(define (search-rekahsoft-gnu-patches patch) - (parameterize ((%patch-path (map (lambda (directory) - (string-append directory - "/rekahsoft-gnu/packages/patches")) - %load-path))) - (search-patches patch))) + #:use-module (rekahsoft-gnu packages golang) + #:use-module (rekahsoft-gnu utils)) ;; TODO: Uses vendored dependencies (define-public terraform-0.13 diff --git a/rekahsoft-gnu/utils.scm b/rekahsoft-gnu/utils.scm new file mode 100644 index 0000000..940df96 --- /dev/null +++ b/rekahsoft-gnu/utils.scm @@ -0,0 +1,29 @@ +;; (C) Copyright Collin J. Doering 2023 +;; +;; This program 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. +;; +;; This program 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 this program. If not, see . + +;; File: util.scm +;; Author: Collin J. Doering +;; Date: Dec 30, 2023 + +(define-module (rekahsoft-gnu utils) + #:use-module (gnu packages) + #:export (search-rekahsoft-gnu-patches)) + +(define (search-rekahsoft-gnu-patches patch) + (parameterize ((%patch-path (map (lambda (directory) + (string-append directory + "/rekahsoft-gnu/packages/patches")) + %load-path))) + (search-patches patch)))