diff options
Diffstat (limited to 'gnu/packages/version-control.scm')
-rw-r--r-- | gnu/packages/version-control.scm | 656 |
1 files changed, 322 insertions, 334 deletions
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index f950fa050e..02e393808c 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -33,7 +33,7 @@ ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org> ;;; Copyright © 2020, 2021, 2022 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2021 Greg Hogan <code@greghogan.com> -;;; Copyright © 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim@guixotic.coop> ;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2021 Léo Le Bouter <lle-bout@zaclys.net> ;;; Copyright © 2021 LibreMiami <packaging-guix@libremiami.org> @@ -111,10 +111,6 @@ #:use-module (gnu packages boost) #:use-module (gnu packages check) #:use-module (gnu packages cook) - #:use-module (gnu packages crates-compression) - #:use-module (gnu packages crates-io) - #:use-module (gnu packages crates-vcs) - #:use-module (gnu packages crates-web) #:use-module (gnu packages crypto) #:use-module (gnu packages curl) #:use-module (gnu packages databases) @@ -172,6 +168,8 @@ #:use-module (gnu packages xml) #:use-module (gnu packages emacs) #:use-module (gnu packages compression) + #:use-module (gnu packages qt) + #:use-module (gnu packages rust) #:use-module (gnu packages sdl) #:use-module (gnu packages swig) #:use-module (gnu packages sync) @@ -187,7 +185,7 @@ (define-public breezy (package (name "breezy") - (version "3.3.9") + (version "3.3.11") (source (origin (method url-fetch) @@ -199,35 +197,41 @@ (snippet '(for-each delete-file (find-files "." "\\pyx.c$"))) (sha256 (base32 - "1n6mqd1iy50537kb4lsr52289yyr1agmkxpchxlhb9682zr8nn62")))) - (build-system cargo-build-system) + "0fxv7ca6qbrj6bvrbfgjrd9ldppa8zq8hc461rikh85c5xg9rjqi")))) + (build-system python-build-system) (arguments (list - #:cargo-inputs (list rust-lazy-static-1 - rust-pyo3-0.22 - rust-regex-1) - #:install-source? #f #:modules - '((guix build cargo-build-system) - ((guix build python-build-system) #:prefix py:) + '(((guix build cargo-build-system) #:prefix cargo:) + (guix build python-build-system) (guix build utils)) #:imported-modules `(,@%cargo-build-system-modules ,@%python-build-system-modules) #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'ensure-no-mtimes-pre-1980 - (assoc-ref py:%standard-phases 'ensure-no-mtimes-pre-1980)) - (add-after 'ensure-no-mtimes-pre-1980 'enable-bytecode-determinism - (assoc-ref py:%standard-phases 'enable-bytecode-determinism)) - (add-after 'enable-bytecode-determinism 'ensure-no-cythonized-files - (assoc-ref py:%standard-phases 'ensure-no-cythonized-files)) + (add-after 'unpack 'prepare-cargo-build-system + (lambda args + (for-each + (lambda (phase) + (format #t "Running cargo phase: ~a~%" phase) + (apply (assoc-ref cargo:%standard-phases phase) + #:cargo-target #$(cargo-triplet) + args)) + '(unpack-rust-crates + configure + check-for-pregenerated-files + patch-cargo-checksums)))) (add-after 'unpack 'patch-test-shebangs (lambda _ (substitute* (append (find-files "breezy/bzr/tests") (find-files "breezy/tests")) (("#!/bin/sh") (format #f "#!~a" (which "sh")))))) + (add-after 'unpack 'relax-gcc-14-strictness + (lambda _ + (setenv "CFLAGS" + (string-append "-g -O2 -Wno-error=implicit-function-declaration")))) (add-before 'build 'adjust-for-python-3.10 (lambda _ (substitute* '("breezy/doc_generate/__init__.py" @@ -235,24 +239,7 @@ ;; AttributeError: module 'datetime' has no attribute 'UTC' ;; This only works for python >= 3.11 (("datetime.UTC") "datetime.timezone.utc")))) - (replace 'build - (assoc-ref py:%standard-phases 'build)) - (delete 'check) ;moved after the install phase - (replace 'install - (assoc-ref py:%standard-phases 'install)) - (add-after 'install 'add-install-to-pythonpath - (assoc-ref py:%standard-phases 'add-install-to-pythonpath)) - (add-after 'add-install-to-pythonpath 'add-install-to-path - (assoc-ref py:%standard-phases 'add-install-to-path)) - (add-after 'add-install-to-path 'install-completion - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bash (string-append out "/share/bash-completion" - "/completions"))) - (install-file "contrib/bash/brz" bash)))) - (add-after 'add-install-to-path 'wrap - (assoc-ref py:%standard-phases 'wrap)) - (add-after 'wrap 'check + (replace 'check (lambda* (#:key tests? #:allow-other-keys) (when tests? (setenv "BZR_EDITOR" "nano") @@ -270,35 +257,42 @@ ;; Unknown Failure "-x" "breezy.tests.test_plugins.TestLoadPluginAt.test_compiled_loaded" "-x" "breezy.tests.test_plugins.TestPlugins.test_plugin_get_path_pyc_only" - "-x" "breezy.tests.test_selftest.TestActuallyStartBzrSubprocess.test_start_and_stop_bzr_subprocess_send_signal")))) - (add-before 'strip 'rename-pth-file - (assoc-ref py:%standard-phases 'rename-pth-file))))) - (native-inputs (list gettext-minimal - python-wrapper - python-cython - python-setuptools - python-setuptools-gettext - python-setuptools-rust - python-tomli - python-wheel - ;; tests - nano - python-testtools - python-packaging - python-subunit)) - (inputs (list python-configobj - python-dulwich - python-fastbencode - python-fastimport - python-launchpadlib - python-merge3 - python-paramiko - python-gpg - python-patiencediff - python-pygithub - python-pyyaml - python-tzlocal - python-urllib3)) + "-x" "breezy.tests.test_selftest.TestActuallyStartBzrSubprocess.test_start_and_stop_bzr_subprocess_send_signal" + ;; AttributeError: module 'paramiko' has no attribute 'DSSKey' + "-x" "breezy.tests.test_transport.TestSSHConnections.test_bzr_connect_to_bzr_ssh"))))))) + (native-inputs + (append + (list gettext-minimal + python-cython-0 + python-setuptools + python-setuptools-gettext + python-setuptools-rust + python-tomli + python-wheel + rust + `(,rust "cargo") + ;; tests + nano + python-testtools + python-packaging + python-subunit) + (or (and=> (%current-target-system) + (compose list make-rust-sysroot)) + '()))) + (inputs (cons* python-configobj + python-dulwich + python-fastbencode + python-fastimport + python-launchpadlib + python-merge3 + python-paramiko + python-gpg + python-patiencediff + python-pygithub + python-pyyaml + python-tzlocal + python-urllib3 + (cargo-inputs 'breezy))) (home-page "https://www.breezy-vcs.org/") (synopsis "Decentralized revision control system") (description @@ -324,14 +318,14 @@ Python 3.3 and later, rather than on Python 2.") (define-public git-minimal (package (name "git-minimal") - (version "2.50.1") + (version "2.51.0") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/software/scm/git/git-" version ".tar.xz")) (sha256 (base32 - "1i4gbin7ah9azaz68j10q9qkdq2bcyv2vm0lvppg3n6bvqv6qgky")))) + "0qhbk6wd5iy4pz6skp121kgcc5q64rkybfl7rpaqirf23hjw59v0")))) (build-system gnu-build-system) (arguments (list @@ -345,9 +339,8 @@ Python 3.3 and later, rather than on Python 2.") #:disallowed-references (list bash perl) #:test-target "test" #:configure-flags - (if (%current-target-system) - git-cross-configure-flags - #~(list)) + #~(cons "--with-gitconfig=/etc/gitconfig" + #$(if (%current-target-system) git-cross-configure-flags #~(list))) #:make-flags #~(list "V=1" ;more verbose compilation (string-append "SHELL_PATH=" @@ -826,7 +819,12 @@ everything from small to very large projects with speed and efficiency.") version ".tar.xz")) (sha256 (base32 - "0if0vqn3fj22p95a0125zpgwz3mqfqxqnvwa7fkf7b00wh0c1wyz")))))) + "0if0vqn3fj22p95a0125zpgwz3mqfqxqnvwa7fkf7b00wh0c1wyz")))) + ;; Temporary measure to prevent unneccessary package rebuilds. + (arguments + (substitute-keyword-arguments (package-arguments git-minimal) + ((#:configure-flags flags #~'()) + (if (%current-target-system) git-cross-configure-flags #~(list))))))) (define-public python-klaus (package @@ -1039,20 +1037,19 @@ the date of the most recent commit that modified them (define-public git-spice (package (name "git-spice") - (version "0.11.0") + (version "0.15.2") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/abhinav/git-spice") - (commit (string-append "v" version)))) + (url "https://github.com/abhinav/git-spice") + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0fgdi0gmax808aazmzl75wny2klfcz5gbs8v82zhifgiza01xzqy")))) + (base32 "1cymx784rrdrbhsfacdl30pgimzxfwkjr93cjkh2v37r8dv5145y")))) (build-system go-build-system) (arguments (list - #:go go-1.24 #:import-path "go.abhg.dev/gs" #:install-source? #f #:build-flags @@ -1063,32 +1060,11 @@ the date of the most recent commit that modified them ;; XXX: Tests failing with various reasons: requiring ;; networking config or write access, or outbound access, check ;; if some of them may be fixed. - (list "TestAuthenticationFlow_PAT/pat" - "TestDeviceFlowAuthenticator" - "TestScript/auth_detect_forge" - "TestScript/auth_explicit_forge" - "TestScript/auth_insecure_storage" - "TestScript/auth_prompt_forge" - "TestScript/branch_create_below_with_downstack_history" - "TestScript/branch_create_no_verify" - "TestScript/branch_onto_two_stacks_with_downstack_history" - "TestScript/branch_restack_conflict_no_edit" - "TestScript/branch_split_reassign_submitted" - "TestScript/branch_submit_.*" - "TestScript/commit_amend_no_verify" - "TestScript/commit_create_no_verify" - "TestScript/commit_split_no_verify" - "TestScript/downstack_submit" - "TestScript/issue369_branch_submit_pr_template_cache_.*" - "TestScript/issue398_repo_sync_many_merged" - "TestScript/repo_sync_.*" - "TestScript/stack_edit_inserted_at_bottom_with_.*" - "TestScript/stack_submit" - "TestScript/stack_submit_.*" - "TestScript/submit_update_only" - "TestScript/upstack_submit_main" + (list "TestScript" + "TestSelectAuthenticator/oauth_public" "TestSelectAuthenticator/oauth" - "TestSelectAuthenticator/oauth_public") + "TestAuthenticationFlow_PAT/pat" + "TestDeviceFlowAuthenticator") "|")) #:phases #~(modify-phases %standard-phases @@ -1123,7 +1099,6 @@ the date of the most recent commit that modified them go-github-com-charmbracelet-bubbles go-github-com-charmbracelet-bubbletea go-github-com-charmbracelet-lipgloss - go-github-com-charmbracelet-log go-github-com-cli-browser go-github-com-creack-pty go-github-com-dustin-go-humanize @@ -1138,6 +1113,7 @@ the date of the most recent commit that modified them go-gitlab-com-gitlab-org-api-client-go go-go-abhg-dev-io-ioutil go-go-abhg-dev-komplete + go-go-abhg-dev-log-silog go-go-abhg-dev-testing-stub go-go-uber-org-mock go-golang-org-x-oauth2 @@ -1156,7 +1132,7 @@ provides an integration with GitHub and GitLab.") (define-public got (package (name "got") - (version "0.116") + (version "0.118.1") (source (origin (method url-fetch) (uri @@ -1165,7 +1141,7 @@ provides an integration with GitHub and GitLab.") version ".tar.gz")) (sha256 (base32 - "1zsdisaqv1q612a7jws9qd8n1gm9ilz5mnprkpgvdhc27gblm9p8")))) + "0l56kfq5r9nb4046n63cv1agwjgdggzi31q76p2sjvyy3rwkihbp")))) (inputs (list libevent `(,util-linux "lib") @@ -1644,7 +1620,6 @@ collaboration using typical untrusted file hosts or services.") (build-system go-build-system) (arguments (list - #:go go-1.24 #:import-path "github.com/Apteryks/git-repo-go" #:build-flags #~(list "-ldflags" (string-append @@ -1809,7 +1784,7 @@ supports AGit-Flow and lifts the requirement to use a manifest file.") bash-minimal openssl python - python-docutils + python-docutils-0.19 python-markdown python-pygments zlib @@ -1959,16 +1934,19 @@ default) of the repository.") (define-public python-gitdb (package (name "python-gitdb") - (version "4.0.2") + (version "4.0.12") (source (origin (method url-fetch) (uri (pypi-uri "gitdb" version)) (sha256 (base32 - "0l113fphn6msjl3cl3kyf332b6lal7daxdd0nfma0x9ipfb013jr")))) - (build-system python-build-system) + "0wdmzngk870944nc6q5sphzv29jzhgddbh7vzhk366hrbn2izxsy")))) + (build-system pyproject-build-system) (arguments - `(#:phases (modify-phases %standard-phases + ;; One test fails, probably due to low ulimit: ValueError: Expected to + ;; write 1000 objects into pack, but received only 0 from iterators. + `(#:test-flags '("-k" "not test_pack_writing") + #:phases (modify-phases %standard-phases (add-before 'check 'create-test-repository (lambda _ (mkdir "/tmp/testrepo") @@ -1990,16 +1968,15 @@ default) of the repository.") ;; The repository checkout must be a "bare" clone. (invoke "git" "clone" "--bare" "/tmp/testrepo" "/tmp/testrepo.git"))) - (replace 'check + (add-before 'check 'pre-check (lambda _ (setenv "GITDB_TEST_GIT_REPO_BASE" "/tmp/testrepo.git") ;; Skip tests that must be run from the gitdb repository. - (setenv "TRAVIS" "1") - (invoke "nosetests" "-v")))))) + (setenv "TRAVIS" "1")))))) (propagated-inputs (list python-smmap)) (native-inputs - (list git-minimal/pinned python-nose)) + (list git-minimal/pinned python-pytest python-setuptools python-wheel)) (home-page "https://github.com/gitpython-developers/gitdb") (synopsis "Python implementation of the Git object database") (description @@ -2012,14 +1989,14 @@ allowing to handle large objects with a small memory footprint.") (define-public python-gitpython (package (name "python-gitpython") - (version "3.1.24") + (version "3.1.44") (source (origin (method url-fetch) - (uri (pypi-uri "GitPython" version)) + (uri (pypi-uri "gitpython" version)) (sha256 (base32 - "1rarp97cpjnhi106k2yhb7kygdyflmlgq0icxv3ggzl4wvszv0yz")))) - (build-system python-build-system) + "0scj4hqk6msyzqvq70wk6583qzwn33w601hvn0c59gskcar30zn8")))) + (build-system pyproject-build-system) (arguments (list #:tests? #f ;XXX: tests can only be run within the GitPython repository #:phases @@ -2034,9 +2011,9 @@ allowing to handle large objects with a small memory footprint.") (inputs (list git-minimal/pinned)) (propagated-inputs - (list python-gitdb python-typing-extensions)) + (list python-gitdb)) (native-inputs - (list python-ddt python-nose)) + (list python-setuptools)) (home-page "https://github.com/gitpython-developers/GitPython") (synopsis "Python library for interacting with Git repositories") (description @@ -2203,7 +2180,7 @@ lot easier.") (define-public stgit-2 (package (name "stgit") - (version "2.4.12") + (version "2.5.3") (source (origin (method git-fetch) @@ -2212,36 +2189,10 @@ lot easier.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0kp3gwmxcjvphg1s0san0vyis8dsdaf02xsflc2b7kkg8m0r0mi3")) - (modules '((guix build utils))) - (snippet - '(begin (substitute* (find-files "." "^Cargo\\.toml$") - (("\"~([[:digit:]]+(\\.[[:digit:]]+)*)" _ version) - (string-append "\"^" version))))))) + (base32 "0pxhl7fnycs4bx46x9m8v33lsf5hwp0fhqyihlr4sf7ms4b7adsc")))) (build-system cargo-build-system) (arguments - `(#:cargo-inputs (("rust-anstyle" ,rust-anstyle-1) - ("rust-anyhow" ,rust-anyhow-1) - ("rust-bstr" ,rust-bstr-1) - ("rust-bzip2-rs" ,rust-bzip2-rs-0.1) - ("rust-clap" ,rust-clap-4) - ("rust-ctrlc" ,rust-ctrlc-3) - ("rust-curl" ,rust-curl-0.4) - ("rust-encoding_rs" ,rust-encoding-rs-0.8) - ("rust-flate2" ,rust-flate2-1) - ("rust-gix" ,rust-gix-0.66) - ("rust-indexmap" ,rust-indexmap-2) - ("rust-is-terminal" ,rust-is-terminal-0.4) - ("rust-jiff" ,rust-jiff-0.1) - ("rust-serde" ,rust-serde-1) - ("rust-serde-json" ,rust-serde-json-1) - ("rust-strsim" ,rust-strsim-0.10) - ("rust-tar" ,rust-tar-0.4) - ("rust-tempfile" ,rust-tempfile-3) - ("rust-termcolor" ,rust-termcolor-1) - ("rust-thiserror" ,rust-thiserror-1) - ("rust-winnow" ,rust-winnow-0.6)) - #:install-source? #f + `(#:install-source? #f #:phases (modify-phases %standard-phases (add-after 'build 'build-extras @@ -2269,7 +2220,7 @@ lot easier.") perl texinfo xmlto)) - (inputs (list openssl zlib curl)) + (inputs (cons* openssl zlib curl (cargo-inputs 'stgit-2))) (home-page "https://stacked-git.github.io/") (synopsis "Stacked Git (StGit) manages Git commits as a stack of patches") (description "StGit uses a patch stack workflow. Each individual patch @@ -2294,6 +2245,7 @@ Features include: (package (inherit stgit-2) (name "emacs-stgit") + (version "0.17.1") ;from stgit.el (build-system emacs-build-system) (arguments (list @@ -2301,13 +2253,20 @@ Features include: #:lisp-directory "contrib" #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'patch-version-executables + (lambda* (#:key inputs #:allow-other-keys) + (emacs-substitute-variables "stgit.el" + ("stgit-stg-program" (search-input-file inputs "/bin/stg"))) + (emacs-substitute-variables "stgit.el" + ("stgit-git-program" (search-input-file inputs "/bin/git"))))) (add-before 'install-license-files 'leave-lisp-directory (lambda _ (chdir "..")))))) + (inputs (list stgit-2 git)) (synopsis "Emacs major mode for StGit interaction") (description "This package a interactive tool to interact with git branches using StGit.") - (license license:gpl3+))) + (license license:gpl2+))) (define-public stgit (package @@ -2757,101 +2716,134 @@ execution of any hook written in any language before every commit.") (define-public python-pre-commit (deprecated-package "python-pre-commit" pre-commit)) -(define-public mercurial - (package - (name "mercurial") - (version "6.9.5") - (source (origin - (method url-fetch) - (uri (string-append "https://www.mercurial-scm.org/" - "release/mercurial-" version ".tar.gz")) - (patches (search-patches "mercurial-hg-extension-path.patch")) - (sha256 - (base32 - "1zb5rjqs5z0y900hml0v4wsmv59cdhi50a8kcbjxdp79z7p2mwnk")))) - (build-system gnu-build-system) - (arguments - `(#:make-flags - (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) - #:phases - (modify-phases %standard-phases - (delete 'configure) - (add-after 'unpack 'patch-tests - (lambda _ - (substitute* (find-files "tests" "\\.(t|py)$") - (("/bin/sh") - (which "sh")) - (("/usr/bin/env") - (which "env"))))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (with-directory-excursion "tests" - ;; The following tests are known to fail. - (for-each delete-file - '(;; XXX: This test calls 'run-tests.py --with-hg= - ;; `which hg`' and fails because there is no hg on - ;; PATH from before (that's why we are building it!)? - "test-hghave.t" +;; XXX: This is a temporary helper to avoid recompiling mercurial/pinned. +;; If you update mercurial, don't touch it but work around it. +;; If you update mercurial/pinned, include that in mercurial, and use inheritance +;; for mercurial/pinned. +(define mercurial-check-phase + #~(lambda* (#:key tests? #:allow-other-keys) + (with-directory-excursion "tests" + ;; The following tests are known to fail. + (for-each delete-file + '(;; XXX: This test calls 'run-tests.py --with-hg= + ;; `which hg`' and fails because there is no hg on + ;; PATH from before (that's why we are building it!)? + "test-hghave.t" + + ;; This test is missing a debug line + ;; mmapping $TESTTMP/a/.hg/store/00changelog.i (no-pure !) + ;; but the relevant output is correct. + "test-revlog-mmapindex.t" - ;; This test is missing a debug line - ;; mmapping $TESTTMP/a/.hg/store/00changelog.i (no-pure !) - ;; but the relevant output is correct. - "test-revlog-mmapindex.t" + ;; This test creates a shebang spanning multiple + ;; lines which is difficult to substitute. It + ;; only tests the test runner itself, which gets + ;; thoroughly tested during the check phase anyway. + "test-run-tests.t" - ;; This test creates a shebang spanning multiple - ;; lines which is difficult to substitute. It - ;; only tests the test runner itself, which gets - ;; thoroughly tested during the check phase anyway. - "test-run-tests.t" + ;; These tests fail because the program is not + ;; connected to a TTY in the build container. + "test-nointerrupt.t" + "test-transaction-rollback-on-sigpipe.t" - ;; These tests fail because the program is not - ;; connected to a TTY in the build container. - "test-nointerrupt.t" - "test-transaction-rollback-on-sigpipe.t" + ;; FIXME: This gets killed but does not receive an interrupt. + "test-commandserver.t" - ;; FIXME: This gets killed but does not receive an interrupt. - "test-commandserver.t" + ;; These tests get unexpected warnings about using + ;; deprecated functionality in Python, but otherwise + ;; succeed; try enabling for later Mercurial versions. + "test-demandimport.py" + "test-patchbomb-tls.t" + ;; Similarly, this gets a more informative error + ;; message from Python 3.10 than it expects. + "test-http-bad-server.t" - ;; These tests get unexpected warnings about using - ;; deprecated functionality in Python, but otherwise - ;; succeed; try enabling for later Mercurial versions. - "test-demandimport.py" - "test-patchbomb-tls.t" - ;; Similarly, this gets a more informative error - ;; message from Python 3.10 than it expects. - "test-http-bad-server.t" + ;; Only works when run in a hg-repo, not in an + ;; extracted tarball + "test-doctest.py" - ;; Only works when run in a hg-repo, not in an - ;; extracted tarball - "test-doctest.py" + ;; TODO: the fqaddr() call fails in the build + ;; container, causing these server tests to fail. + "test-hgwebdir.t" + "test-http-branchmap.t" + "test-pull-bundle.t" + "test-push-http.t" + "test-serve.t" + "test-subrepo-deep-nested-change.t" + "test-subrepo-recursion.t" + ;; FIXME: Investigate why it failed. + "test-convert-darcs.t")) + (when tests? + (invoke "./run-tests.py" + ;; ‘make check’ does not respect ‘-j’. + (string-append "-j" (number->string + (parallel-job-count))) + ;; The default time-outs are too low for many systems. + ;; Raise them generously: Guix enforces its own. + "--timeout" "86400" + "--slowtimeout" "86400" + ;; The test suite takes a long time and produces little + ;; output by default. Prevent timeouts due to silence. + "-v"))))) - ;; TODO: the fqaddr() call fails in the build - ;; container, causing these server tests to fail. - "test-hgwebdir.t" - "test-http-branchmap.t" - "test-pull-bundle.t" - "test-push-http.t" - "test-serve.t" - "test-subrepo-deep-nested-change.t" - "test-subrepo-recursion.t" - ;; FIXME: Investigate why it failed. - "test-convert-darcs.t")) - (when tests? - (invoke "./run-tests.py" - ;; ‘make check’ does not respect ‘-j’. - (string-append "-j" (number->string - (parallel-job-count))) - ;; The default time-outs are too low for many systems. - ;; Raise them generously: Guix enforces its own. - "--timeout" "86400" - "--slowtimeout" "86400" - ;; The test suite takes a long time and produces little - ;; output by default. Prevent timeouts due to silence. - "-v")))))))) +(define-public mercurial + (package + (name "mercurial") + (version "7.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.mercurial-scm.org/" + "release/mercurial-" version ".tar.gz")) + (patches (search-patches "mercurial-hg-extension-path.patch")) + (sha256 + (base32 "1jz54akdnsp5frlbsr2xg71kbp2919v61gkkx7c7bi1q7k421ng8")))) + (build-system gnu-build-system) + (arguments + (list + #:imported-modules `((guix build python-build-system) + ,@%default-gnu-imported-modules) + #:modules '((guix build gnu-build-system) + ((guix build python-build-system) #:prefix py:) + (guix build utils)) + #:make-flags + #~(list (string-append "PREFIX=" #$output)) + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'patch-tests + (lambda* (#:key inputs #:allow-other-keys) + (substitute* (find-files "tests" "\\.(t|py)$") + (("/bin/sh") + (search-input-file inputs "bin/sh")) + (("/usr/bin/env") + (search-input-file inputs "bin/env"))))) + (add-before 'check 'configure-check + (lambda* (#:key tests? #:allow-other-keys) + (with-directory-excursion "tests" + (substitute* "run-tests.py" + ;; XXX: Adapt pip call to build daemon chroot. + (("b\"install\", b\"\\.\"") + "b\"install\", b\"--no-build-isolation\", b\".\"") + ;; XXX: Log the actual PYTHONPATH. + (("\"PYTHONPATH\"") + "\"GUIX_PYTHONPATH\""))))) + (add-before 'configure-check 'add-install-to-pythonpath + (assoc-ref py:%standard-phases 'add-install-to-pythonpath)) + (add-after 'install 'wrap + (assoc-ref py:%standard-phases 'wrap)) + (delete 'check) + (add-after 'wrap 'check #$mercurial-check-phase) + (add-after 'check 'python-sanity-check + (lambda* (#:key inputs outputs #:allow-other-keys) + ((assoc-ref py:%standard-phases 'sanity-check) + #:inputs `(("sanity-check.py" . ,#$(default-sanity-check.py)) + ,@inputs) + #:outputs outputs)))))) (native-inputs (list python-docutils ;; The following inputs are only needed to run the tests. - python-nose unzip which)) + python-setuptools python-setuptools-scm python-wheel unzip which)) (inputs (list python-wrapper)) ;; Find third-party extensions. @@ -2867,6 +2859,38 @@ efficiently handles projects of any size and offers an easy and intuitive interface.") (license license:gpl2+))) +(define-public mercurial/pinned + (package + (inherit mercurial) + (version "6.9.5") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.mercurial-scm.org/" + "release/mercurial-" version ".tar.gz")) + (patches (search-patches "mercurial-hg-extension-path.patch")) + (sha256 + (base32 "1zb5rjqs5z0y900hml0v4wsmv59cdhi50a8kcbjxdp79z7p2mwnk")))) + (arguments + (list + #:make-flags + #~(list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'patch-tests + (lambda _ + (substitute* (find-files "tests" "\\.(t|py)$") + (("/bin/sh") + (which "sh")) + (("/usr/bin/env") + (which "env"))))) + (replace 'check #$mercurial-check-phase)))) + (native-inputs + (list python-docutils + ;; The following inputs are only needed to run the tests. + python-nose unzip which)))) + (define-public python-hg-evolve (package (name "python-hg-evolve") @@ -2951,6 +2975,7 @@ changeset itself; there won't be any extra commits. Either GnuPG or OpenSSL can be used for signing.") (license license:gpl2)))) ;per commitsigs.py +;; XXX: Not maintained since 2019. (define-public heatwave (package (name "heatwave") @@ -2962,6 +2987,10 @@ can be used for signing.") (sha256 (base32 "1zzwmb9hvbyswzjgap02rrq8p44hb6xlzk1wd8w01mh2vva0xlx7")))) (build-system pyproject-build-system) + (arguments + (list #:tests? #f)) ;no tests in PyPI + (native-inputs + (list python-setuptools)) (propagated-inputs (list python-click python-gitpython @@ -3024,14 +3053,14 @@ following features: (define-public subversion (package (name "subversion") - (version "1.14.3") + (version "1.14.5") (source (origin (method url-fetch) (uri (string-append "mirror://apache/subversion/" "subversion-" version ".tar.bz2")) (sha256 (base32 - "0h54l4p2dlk1rm4zm428hi6ij6xpqxqlqmvkhmz5yhq9392zv7ll")))) + "18a4avism0a7b1siikkm6v2snhanlmqqzl4p8hspp2vbfvkjk2p7")))) (build-system gnu-build-system) (arguments (list @@ -3100,6 +3129,20 @@ usage; and its ability to support the needs of a wide variety of users and projects, from individuals to large-scale enterprise operations.") (license license:asl2.0))) +(define-public subversion/pinned + (hidden-package + (package + (inherit subversion) + (name "subversion") + (version "1.14.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://apache/subversion/" + "subversion-" version ".tar.bz2")) + (sha256 + (base32 "0h54l4p2dlk1rm4zm428hi6ij6xpqxqlqmvkhmz5yhq9392zv7ll"))))))) + (define-public rcs (package (name "rcs") @@ -3816,72 +3859,11 @@ a built-in wiki, built-in file browsing, built-in tickets system, etc.") (uri (crate-uri "pijul" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1lk261rrk4xy60d4akfn8mrrqxls28kf9mzrjcrxdzbdysml66n5")) - (snippet - #~(begin (use-modules (guix build utils)) - (substitute* "Cargo.toml" - (("\"= ?([[:digit:]]+(\\.[[:digit:]]+)*)" _ version) - (string-append "\"^" version))))))) + (base32 "1lk261rrk4xy60d4akfn8mrrqxls28kf9mzrjcrxdzbdysml66n5")))) (build-system cargo-build-system) (arguments (list #:install-source? #f - #:cargo-inputs - (list rust-anyhow-1 - rust-async-trait-0.1 - rust-atty-0.2 - rust-byteorder-1 - rust-bytes-1 - rust-canonical-path-2 - rust-chrono-0.4 - rust-clap-4 - rust-clap-complete-4 - rust-ctrlc-3 - rust-data-encoding-2 - rust-dateparser-0.1 - rust-dirs-next-2 - rust-edit-0.1 - rust-env-logger-0.8 - rust-futures-0.3 - rust-futures-util-0.3 - rust-git2-0.13 - rust-human-panic-1 - rust-hyper-0.14 - rust-ignore-0.4 - rust-keyring-2 - rust-lazy-static-1 - rust-libpijul-1 - rust-log-0.4 - rust-open-3 - rust-pager-0.16 - rust-path-slash-0.1 - rust-pijul-config-0.0.1 - rust-pijul-identity-0.0.1 - rust-pijul-interaction-0.0.1 - rust-pijul-remote-1 - rust-pijul-repository-0.0.1 - rust-ptree-0.4 - rust-rand-0.8 - rust-regex-1 - rust-reqwest-0.11 - rust-sanakirja-1 - rust-serde-1 - rust-serde-derive-1 - rust-serde-json-1 - rust-tempfile-3 - rust-termcolor-1 - rust-thiserror-1 - rust-thrussh-0.33 - rust-thrussh-config-0.5 - rust-thrussh-keys-0.21 - rust-tokio-1 - rust-toml-0.5 - rust-url-2 - rust-validator-0.15 - rust-whoami-1) - #:cargo-development-inputs - (list rust-exitcode-1 - rust-expectrl-0.7) #:phases #~(modify-phases %standard-phases (add-after 'install 'install-extras @@ -3920,7 +3902,7 @@ a built-in wiki, built-in file browsing, built-in tickets system, etc.") (list this-package) '()) (list pkg-config))) - (inputs (list libsodium openssl)) + (inputs (cons* libsodium openssl (cargo-inputs 'pijul))) (home-page "https://nest.pijul.com/pijul/pijul") (synopsis "Distributed version control system") (description "This package provides pijul, a sound and fast distributed @@ -4207,28 +4189,28 @@ will reconstruct the object along its delta-base chain and return it.") (define-public git-lfs (package (name "git-lfs") - (version "3.6.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/git-lfs/git-lfs") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "02819i3sd9qjw89lcpv6rmhfqaxkz1pddqw8havw3ysmcmhmb7yd")))) + (version "3.7.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/git-lfs/git-lfs") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1wxx7i29n4gk8s78xq4hacc1ylwi6bq4b6y2bjx8fs9p7z4awnqh")))) (build-system go-build-system) (arguments (list #:embed-files #~(list "children" "nodes" "text") - #:import-path "github.com/git-lfs/git-lfs" + #:import-path "github.com/git-lfs/git-lfs/v3" #:install-source? #f #:test-flags #~(list "-skip" "TestHistoryRewriterUpdatesRefs") #:phases #~(modify-phases %standard-phases (add-after 'unpack 'patch-/bin/sh (lambda* (#:key inputs #:allow-other-keys) - (substitute* "src/github.com/git-lfs/git-lfs/lfs/hook.go" + (substitute* "src/github.com/git-lfs/git-lfs/v3/lfs/hook.go" (("/bin/sh") (search-input-file inputs "bin/sh"))))) ;; Only build the man pages if ruby-asciidoctor is available. @@ -4237,21 +4219,25 @@ will reconstruct the object along its delta-base chain and return it.") ;; Without this, the binary generated in 'build ;; phase won't have any embedded usage-text. (lambda _ - (with-directory-excursion "src/github.com/git-lfs/git-lfs" + (with-directory-excursion "src/github.com/git-lfs/git-lfs/v3" (invoke "make" "mangen")))) (add-after 'build 'build-man-pages (lambda _ - (with-directory-excursion "src/github.com/git-lfs/git-lfs" + (with-directory-excursion "src/github.com/git-lfs/git-lfs/v3" (invoke "make" "man")))) (add-after 'install 'install-man-pages (lambda* (#:key outputs #:allow-other-keys) - (with-directory-excursion "src/github.com/git-lfs/git-lfs/man" + (with-directory-excursion "src/github.com/git-lfs/git-lfs/v3/man" (for-each (lambda (manpage) (install-file manpage (string-append #$output "/share/man/man1"))) (find-files "." "^git-lfs.*\\.1$")))))) - #~())))) + #~()) + (add-after 'install 'rename-binary + (lambda _ + (with-directory-excursion (string-append #$output "/bin") + (rename-file "v3" "git-lfs"))))))) (native-inputs (append (list git-minimal go-github-com-avast-retry-go @@ -4260,6 +4246,7 @@ will reconstruct the object along its delta-base chain and return it.") go-github-com-git-lfs-go-netrc go-github-com-git-lfs-pktline go-github-com-git-lfs-wildmatch-v2 + go-github-com-golang-groupcache go-github-com-jmhodges-clock go-github-com-leonelquinteros-gotext go-github-com-mattn-go-isatty @@ -4277,7 +4264,7 @@ will reconstruct the object along its delta-base chain and return it.") (if (supported-package? ruby-asciidoctor/minimal) (list ronn-ng ruby-asciidoctor/minimal) '()))) - (home-page "https://git-lfs.github.com/") + (home-page "https://git-lfs.com/") (synopsis "Git extension for versioning large files") (description "Git Large File Storage (LFS) replaces large files such as audio samples, @@ -4301,6 +4288,7 @@ file contents on a remote server.") (build-system go-build-system) (arguments (list + #:go go-1.23 #:import-path "git.sr.ht/~ngraves/lfs-s3")) (inputs (list git-lfs)) (propagated-inputs @@ -4609,7 +4597,7 @@ TkDiff is included for browsing and merging your changes.") (define-public qgit (package (name "qgit") - (version "2.11") + (version "2.12") (source (origin (method git-fetch) (uri (git-reference @@ -4618,12 +4606,20 @@ TkDiff is included for browsing and merging your changes.") (file-name (git-file-name name version)) (sha256 (base32 - "11948zzszi28js3pbxlss8r85jlb6fizxm8f5ljqk67m5qxk2v0f")))) + "16gy1xyn4xa3bjziphcdixbf6qv3bcs81z2k9j6biwpzs1ingkdb")) + ;; TODO: Remove this patch in the next update since it is fixed + ;; in the next commit. + (patches + (search-patches "qgit-2.12-fix-search-style.patch")))) (build-system qt-build-system) (arguments - (list #:tests? #f)) ;no tests + (list #:qtbase qtbase + #:tests? #f)) ;no tests (propagated-inputs (list git)) + (inputs + (list qt5compat + qtwayland)) (home-page "https://github.com/tibirna/qgit") (synopsis "Graphical front-end for git") (description @@ -4847,7 +4843,7 @@ developer workflow, and project and release management.") (define-public hut (package (name "hut") - (version "0.6.0") + (version "0.7.0") (source (origin (method git-fetch) @@ -4856,19 +4852,11 @@ developer workflow, and project and release management.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "14cia976i2jdzyzw4wk9fhkh6zqgmb09ryf31ys24smmfcdfxyf1")) - (modules '((guix build utils))) - (snippet - #~(begin - ;; XXX: Module name has been changed upstream, it's already - ;; adjusted on master, consider to remove in the next refresh - ;; cycle. - (substitute* (find-files "." "\\.go$") - (("git.sr.ht/~emersion/go-scfg") - "codeberg.org/emersion/go-scfg")))))) + (base32 "0scw4nvm3qpg7l6anhljkixn3g36k03ikg6pl0hs76a3wkf89km5")))) (build-system go-build-system) (arguments (list + #:go go-1.23 #:import-path "git.sr.ht/~xenrox/hut" #:phases #~(modify-phases %standard-phases |