gnu: libgit2: Update to 0.99.0.
* gnu/packages/patches/libgit2-avoid-python.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/version-control.scm (libgit2): Update to 0.99.0. [source](patches): Remove 'libgit2-avoid-python.patch'. [source](snippet): Preserve bundled copy of http-parser. [arguments]: Remove "-DUSE_SHA1DC" from #:configure-flags, which is no longer optional and enabled by default. Add "-DUSE_NTLMCLIENT=OFF" and "-DREGEX_BACKEND=pcre2". Add phase 'fix-pcre2-reference'. [inputs]: Remove HTTP-PARSER. [propagated-inputs]: Add PCRE2. [native-inputs]: Remove GUILE-2.2. Add PYTHON.
This commit is contained in:
		
							parent
							
								
									2f894cbc6a
								
							
						
					
					
						commit
						0a7aa6922b
					
				
					 3 changed files with 30 additions and 337 deletions
				
			
		|  | @ -1096,7 +1096,6 @@ dist_patch_DATA =						\ | ||||||
|   %D%/packages/patches/libexif-CVE-2018-20030.patch		\
 |   %D%/packages/patches/libexif-CVE-2018-20030.patch		\
 | ||||||
|   %D%/packages/patches/libextractor-exiv2.patch			\
 |   %D%/packages/patches/libextractor-exiv2.patch			\
 | ||||||
|   %D%/packages/patches/libgeotiff-adapt-test-script-for-proj-6.2.patch		\
 |   %D%/packages/patches/libgeotiff-adapt-test-script-for-proj-6.2.patch		\
 | ||||||
|   %D%/packages/patches/libgit2-avoid-python.patch		\
 |  | ||||||
|   %D%/packages/patches/libgit2-mtime-0.patch			\
 |   %D%/packages/patches/libgit2-mtime-0.patch			\
 | ||||||
|   %D%/packages/patches/libgnome-encoding.patch			\
 |   %D%/packages/patches/libgnome-encoding.patch			\
 | ||||||
|   %D%/packages/patches/libgnomeui-utf8.patch			\
 |   %D%/packages/patches/libgnomeui-utf8.patch			\
 | ||||||
|  |  | ||||||
|  | @ -1,322 +0,0 @@ | ||||||
| This provides a Guile reimplementation of clar's "generate.py". |  | ||||||
| It makes it possible for us to remove Python from libgit2's build-time |  | ||||||
| dependencies. |  | ||||||
| libgit2 is used in order to fetch a lot of sources for guix packages. |  | ||||||
| Both Python2 and Python3 builds acted up in the past. |  | ||||||
| Hence this patch which makes the number of libgit2 dependencies very |  | ||||||
| small. |  | ||||||
| The reimplementation tries to keep as close as possible to the original |  | ||||||
| in both structure and runtime effect.  Some things are thus overly |  | ||||||
| convoluted just to make them the same as in the original. |  | ||||||
| 
 |  | ||||||
| Both implementations basically do: |  | ||||||
| 
 |  | ||||||
| grep -r 'test_.*__.*' . > clar.suite |  | ||||||
| 
 |  | ||||||
| It is important that the directory traversal order of the original and |  | ||||||
| the reimplementation stay the same. |  | ||||||
| 
 |  | ||||||
| diff -ruN orig/libgit2-0.27.7/tests/CMakeLists.txt libgit2-0.27.7/tests/CMakeLists.txt
 |  | ||||||
| --- orig/libgit2-0.27.7/tests/CMakeLists.txt	1970-01-01 01:00:00.000000000 +0100
 |  | ||||||
| +++ libgit2-0.27.7/tests/CMakeLists.txt	2019-03-04 11:13:06.640118979 +0100
 |  | ||||||
| @@ -1,10 +1,3 @@
 |  | ||||||
| -FIND_PACKAGE(PythonInterp)
 |  | ||||||
| -
 |  | ||||||
| -IF(NOT PYTHONINTERP_FOUND)
 |  | ||||||
| -  MESSAGE(FATAL_ERROR "Could not find a python interpeter, which is needed to build the tests. "
 |  | ||||||
| -    "Make sure python is available, or pass -DBUILD_CLAR=OFF to skip building the tests")
 |  | ||||||
| -ENDIF()
 |  | ||||||
| -
 |  | ||||||
|  SET(CLAR_FIXTURES "${CMAKE_CURRENT_SOURCE_DIR}/resources/") |  | ||||||
|  SET(CLAR_PATH "${CMAKE_CURRENT_SOURCE_DIR}") |  | ||||||
|  ADD_DEFINITIONS(-DCLAR_FIXTURE_PATH=\"${CLAR_FIXTURES}\") |  | ||||||
| @@ -21,7 +14,7 @@
 |  | ||||||
|   |  | ||||||
|  ADD_CUSTOM_COMMAND( |  | ||||||
|  	OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/clar.suite |  | ||||||
| -	COMMAND ${PYTHON_EXECUTABLE} generate.py -o "${CMAKE_CURRENT_BINARY_DIR}" -f -xonline -xstress -xperf .
 |  | ||||||
| +	COMMAND guile generate.scm -o "${CMAKE_CURRENT_BINARY_DIR}" -f -x online -x stress -x perf .
 |  | ||||||
|  	DEPENDS ${SRC_TEST} |  | ||||||
|  	WORKING_DIRECTORY ${CLAR_PATH} |  | ||||||
|  ) |  | ||||||
| diff -ruN orig/libgit2-0.27.7/tests/generate.scm libgit2-0.27.7/tests/generate.scm
 |  | ||||||
| --- orig/libgit2-0.27.7/tests/generate.scm	1970-01-01 01:00:00.000000000 +0100
 |  | ||||||
| +++ libgit2-0.27.7/tests/generate.scm	2019-03-04 12:18:00.688040975 +0100
 |  | ||||||
| @@ -0,0 +1,277 @@
 |  | ||||||
| +;; -*- geiser-scheme-implementation: guile -*-
 |  | ||||||
| +
 |  | ||||||
| +;;; Implementation: Danny Milosavljevic <dannym@scratchpost.org>
 |  | ||||||
| +;;; Based on: Implementation in Python by Vicent Marti.
 |  | ||||||
| +;;; License: ISC, like the original generate.py in clar.
 |  | ||||||
| +
 |  | ||||||
| +(use-modules (ice-9 ftw))
 |  | ||||||
| +(use-modules (ice-9 regex))
 |  | ||||||
| +(use-modules (ice-9 getopt-long))
 |  | ||||||
| +(use-modules (ice-9 rdelim))
 |  | ||||||
| +(use-modules (ice-9 match))
 |  | ||||||
| +(use-modules (ice-9 textual-ports))
 |  | ||||||
| +(use-modules (srfi srfi-1))
 |  | ||||||
| +
 |  | ||||||
| +(define (render-callback cb)
 |  | ||||||
| +  (if cb
 |  | ||||||
| +      (string-append "    { \"" (assoc-ref cb "short-name") "\", &"
 |  | ||||||
| +                     (assoc-ref cb "symbol") " }")
 |  | ||||||
| +      "    { NULL, NULL }"))
 |  | ||||||
| +
 |  | ||||||
| +(define (replace needle replacement haystack)
 |  | ||||||
| +  "Replace all occurences of NEEDLE in HAYSTACK by REPLACEMENT.
 |  | ||||||
| +NEEDLE is a regular expression."
 |  | ||||||
| +  (regexp-substitute/global #f needle haystack 'pre replacement 'post))
 |  | ||||||
| +
 |  | ||||||
| +(define (skip-comments* text)
 |  | ||||||
| +  (call-with-input-string
 |  | ||||||
| +   text
 |  | ||||||
| +   (lambda (port)
 |  | ||||||
| +     (let loop ((result '())
 |  | ||||||
| +                (section #f))
 |  | ||||||
| +       (define (consume-char)
 |  | ||||||
| +         (cons (read-char port) result))
 |  | ||||||
| +       (define (skip-char)
 |  | ||||||
| +         (read-char port)
 |  | ||||||
| +         result)
 |  | ||||||
| +       (match section
 |  | ||||||
| +        (#f
 |  | ||||||
| +         (match (peek-char port)
 |  | ||||||
| +          (#\/ (loop (consume-char) 'almost-in-block-comment))
 |  | ||||||
| +          (#\" (loop (consume-char) 'in-string-literal))
 |  | ||||||
| +          (#\' (loop (consume-char) 'in-character-literal))
 |  | ||||||
| +          ((? eof-object?) result)
 |  | ||||||
| +          (_ (loop (consume-char) section))))
 |  | ||||||
| +        ('almost-in-block-comment
 |  | ||||||
| +         (match (peek-char port)
 |  | ||||||
| +          (#\* (loop (consume-char) 'in-block-comment))
 |  | ||||||
| +          (#\/ (loop (consume-char) 'in-line-comment))
 |  | ||||||
| +          ((? eof-object?) result)
 |  | ||||||
| +          (_ (loop (consume-char) #f))))
 |  | ||||||
| +        ('in-line-comment
 |  | ||||||
| +         (match (peek-char port)
 |  | ||||||
| +          (#\newline (loop (consume-char) #f))
 |  | ||||||
| +          ((? eof-object?) result)
 |  | ||||||
| +          (_ (loop (skip-char) section))))
 |  | ||||||
| +        ('in-block-comment
 |  | ||||||
| +         (match (peek-char port)
 |  | ||||||
| +           (#\* (loop (skip-char) 'almost-out-of-block-comment))
 |  | ||||||
| +           ((? eof-object?) result)
 |  | ||||||
| +           (_ (loop (skip-char) section))))
 |  | ||||||
| +        ('almost-out-of-block-comment
 |  | ||||||
| +         (match (peek-char port)
 |  | ||||||
| +           (#\/ (loop (cons (read-char port) (cons #\* result)) #f))
 |  | ||||||
| +           (#\* (loop (skip-char) 'almost-out-of-block-comment))
 |  | ||||||
| +           ((? eof-object?) result)
 |  | ||||||
| +           (_ (loop (skip-char) 'in-block-comment))))
 |  | ||||||
| +        ('in-string-literal
 |  | ||||||
| +         (match (peek-char port)
 |  | ||||||
| +           (#\\ (loop (consume-char) 'in-string-literal-escape))
 |  | ||||||
| +           (#\" (loop (consume-char) #f))
 |  | ||||||
| +           ((? eof-object?) result)
 |  | ||||||
| +           (_ (loop (consume-char) section))))
 |  | ||||||
| +        ('in-string-literal-escape
 |  | ||||||
| +         (match (peek-char port)
 |  | ||||||
| +           ((? eof-object?) result)
 |  | ||||||
| +           (_ (loop (consume-char) 'in-string-literal))))
 |  | ||||||
| +        ('in-character-literal
 |  | ||||||
| +         (match (peek-char port)
 |  | ||||||
| +           (#\\ (loop (consume-char) 'in-character-literal-escape))
 |  | ||||||
| +           (#\' (loop (consume-char) #f))
 |  | ||||||
| +           ((? eof-object?) result)
 |  | ||||||
| +           (_ (loop (consume-char) section))))
 |  | ||||||
| +        ('in-character-literal-escape
 |  | ||||||
| +         (match (peek-char port)
 |  | ||||||
| +           ((? eof-object?) result)
 |  | ||||||
| +           (_ (loop (consume-char) 'in-character-literal)))))))))
 |  | ||||||
| +
 |  | ||||||
| +(define (skip-comments text)
 |  | ||||||
| +  (list->string (reverse (skip-comments* text))))
 |  | ||||||
| +
 |  | ||||||
| +(define (maybe-only items)
 |  | ||||||
| +  (match items
 |  | ||||||
| +   ((a) a)
 |  | ||||||
| +   (_ #f)))
 |  | ||||||
| +
 |  | ||||||
| +(define (Module name path excludes)
 |  | ||||||
| +  (let* ((clean-name (replace "_" "::" name))
 |  | ||||||
| +         (enabled (not (any (lambda (exclude)
 |  | ||||||
| +                              (string-prefix? exclude clean-name))
 |  | ||||||
| +                            excludes))))
 |  | ||||||
| +    (define (parse contents)
 |  | ||||||
| +      (define (cons-match match prev)
 |  | ||||||
| +        (cons
 |  | ||||||
| +         `(("declaration" . ,(match:substring match 1))
 |  | ||||||
| +           ("symbol" . ,(match:substring match 2))
 |  | ||||||
| +           ("short-name" . ,(match:substring match 3)))
 |  | ||||||
| +         prev))
 |  | ||||||
| +      (let* ((contents (skip-comments contents))
 |  | ||||||
| +             (entries (fold-matches (make-regexp
 |  | ||||||
| +                                     (string-append "^(void\\s+(test_"
 |  | ||||||
| +                                                    name
 |  | ||||||
| +                                                    "__(\\w+))\\s*\\(\\s*void\\s*\\))\\s*\\{")
 |  | ||||||
| +                                     regexp/newline)
 |  | ||||||
| +                                    contents
 |  | ||||||
| +                                    '()
 |  | ||||||
| +                                    cons-match))
 |  | ||||||
| +             (entries (reverse entries))
 |  | ||||||
| +             (callbacks (filter (lambda (entry)
 |  | ||||||
| +                                   (match (assoc-ref entry "short-name")
 |  | ||||||
| +                                    ("initialize" #f)
 |  | ||||||
| +                                    ("cleanup" #f)
 |  | ||||||
| +                                    (_ #t)))
 |  | ||||||
| +                                entries)))
 |  | ||||||
| +        (if (> (length callbacks) 0)
 |  | ||||||
| +            `(("name" . ,name)
 |  | ||||||
| +              ("enabled" . ,(if enabled "1" "0"))
 |  | ||||||
| +              ("clean-name" . ,clean-name)
 |  | ||||||
| +              ("initialize" . ,(maybe-only (filter-map (lambda (entry)
 |  | ||||||
| +                                                      (match (assoc-ref entry "short-name")
 |  | ||||||
| +                                                       ("initialize" entry)
 |  | ||||||
| +                                                       (_ #f)))
 |  | ||||||
| +                                                     entries)))
 |  | ||||||
| +              ("cleanup" . ,(maybe-only (filter-map (lambda (entry)
 |  | ||||||
| +                                                   (match (assoc-ref entry "short-name")
 |  | ||||||
| +                                                    ("cleanup" entry)
 |  | ||||||
| +                                                    (_ #f)))
 |  | ||||||
| +                                                  entries)))
 |  | ||||||
| +              ("callbacks" . ,callbacks))
 |  | ||||||
| +            #f)))
 |  | ||||||
| +
 |  | ||||||
| +    (define (refresh path)
 |  | ||||||
| +      (and (file-exists? path)
 |  | ||||||
| +           (parse (call-with-input-file path get-string-all))))
 |  | ||||||
| +    (refresh path)))
 |  | ||||||
| +
 |  | ||||||
| +(define (generate-TestSuite path output excludes)
 |  | ||||||
| +    (define (load)
 |  | ||||||
| +        (define enter? (const #t))
 |  | ||||||
| +        (define (leaf file stat result)
 |  | ||||||
| +          (let* ((module-root (string-drop (dirname file)
 |  | ||||||
| +                                           (string-length path)))
 |  | ||||||
| +                 (module-root (filter-map (match-lambda
 |  | ||||||
| +                                           ("" #f)
 |  | ||||||
| +                                           (a a))
 |  | ||||||
| +                                          (string-split module-root #\/))))
 |  | ||||||
| +            (define (make-module path)
 |  | ||||||
| +              (let* ((name (string-join (append module-root (list (string-drop-right (basename path) (string-length ".c")))) "_"))
 |  | ||||||
| +                     (name (replace "-" "_" name)))
 |  | ||||||
| +                (Module name path excludes)))
 |  | ||||||
| +            (if (string-suffix? ".c" file)
 |  | ||||||
| +                (let ((module (make-module file)))
 |  | ||||||
| +                  (if module
 |  | ||||||
| +                      (cons module result)
 |  | ||||||
| +                      result))
 |  | ||||||
| +                result)))
 |  | ||||||
| +        (define (down dir stat result)
 |  | ||||||
| +          result)
 |  | ||||||
| +        (define (up file state result)
 |  | ||||||
| +          result)
 |  | ||||||
| +        (define skip (const #f))
 |  | ||||||
| +        (file-system-fold enter? leaf down up skip error '() path))
 |  | ||||||
| +
 |  | ||||||
| +    (define (CallbacksTemplate module)
 |  | ||||||
| +      (string-append "static const struct clar_func _clar_cb_"
 |  | ||||||
| +                     (assoc-ref module "name") "[] = {\n"
 |  | ||||||
| +                     (string-join (map render-callback
 |  | ||||||
| +                                       (assoc-ref module "callbacks"))
 |  | ||||||
| +                                  ",\n")
 |  | ||||||
| +                     "\n};\n"))
 |  | ||||||
| +
 |  | ||||||
| +    (define (DeclarationTemplate module)
 |  | ||||||
| +      (string-append (string-join (map (lambda (cb)
 |  | ||||||
| +                                         (string-append "extern "
 |  | ||||||
| +                                                        (assoc-ref cb "declaration")
 |  | ||||||
| +                                                        ";"))
 |  | ||||||
| +                                       (assoc-ref module "callbacks"))
 |  | ||||||
| +                                  "\n")
 |  | ||||||
| +                     "\n"
 |  | ||||||
| +                     (if (assoc-ref module "initialize")
 |  | ||||||
| +                         (string-append "extern " (assoc-ref (assoc-ref module "initialize") "declaration") ";\n")
 |  | ||||||
| +                         "")
 |  | ||||||
| +                     (if (assoc-ref module "cleanup")
 |  | ||||||
| +                         (string-append "extern " (assoc-ref (assoc-ref module "cleanup") "declaration") ";\n")
 |  | ||||||
| +                         "")))
 |  | ||||||
| +
 |  | ||||||
| +    (define (InfoTemplate module)
 |  | ||||||
| +      (string-append "
 |  | ||||||
| +    {
 |  | ||||||
| +        \"" (assoc-ref module "clean-name") "\",
 |  | ||||||
| +    " (render-callback (assoc-ref module "initialize")) ",
 |  | ||||||
| +    " (render-callback (assoc-ref module "cleanup")) ",
 |  | ||||||
| +        _clar_cb_" (assoc-ref module "name") ", "
 |  | ||||||
| +        (number->string (length (assoc-ref module "callbacks")))
 |  | ||||||
| +        ", " (assoc-ref module "enabled") "
 |  | ||||||
| +    }"))
 |  | ||||||
| +
 |  | ||||||
| +    (define (Write data)
 |  | ||||||
| +      (define (name< module-a module-b)
 |  | ||||||
| +        (string<? (assoc-ref module-a "name")
 |  | ||||||
| +                  (assoc-ref module-b "name")))
 |  | ||||||
| +      (define modules (sort (load) name<))
 |  | ||||||
| +
 |  | ||||||
| +      (define (suite-count)
 |  | ||||||
| +        (length modules))
 |  | ||||||
| +
 |  | ||||||
| +      (define (callback-count)
 |  | ||||||
| +        (fold + 0 (map (lambda (entry)
 |  | ||||||
| +                         (length (assoc-ref entry "callbacks")))
 |  | ||||||
| +                         modules)))
 |  | ||||||
| +
 |  | ||||||
| +      (define (display-x value)
 |  | ||||||
| +        (display value data))
 |  | ||||||
| +
 |  | ||||||
| +      (for-each (compose display-x DeclarationTemplate) modules)
 |  | ||||||
| +      (for-each (compose display-x CallbacksTemplate) modules)
 |  | ||||||
| +
 |  | ||||||
| +      (display-x "static struct clar_suite _clar_suites[] = {")
 |  | ||||||
| +      (display-x (string-join (map InfoTemplate modules) ","))
 |  | ||||||
| +      (display-x "\n};\n")
 |  | ||||||
| +
 |  | ||||||
| +      (let ((suite-count-str (number->string (suite-count)))
 |  | ||||||
| +            (callback-count-str (number->string (callback-count))))
 |  | ||||||
| +        (display-x "static const size_t _clar_suite_count = ")
 |  | ||||||
| +        (display-x suite-count-str)
 |  | ||||||
| +        (display-x ";\n")
 |  | ||||||
| +
 |  | ||||||
| +        (display-x "static const size_t _clar_callback_count = ")
 |  | ||||||
| +        (display-x callback-count-str)
 |  | ||||||
| +        (display-x ";\n")
 |  | ||||||
| +
 |  | ||||||
| +        (display (string-append "Written `clar.suite` ("
 |  | ||||||
| +                                callback-count-str
 |  | ||||||
| +                                " tests in "
 |  | ||||||
| +                                suite-count-str
 |  | ||||||
| +                                " suites)"))
 |  | ||||||
| +        (newline))
 |  | ||||||
| +      #t)
 |  | ||||||
| +
 |  | ||||||
| +    (call-with-output-file (string-append output "/clar.suite") Write))
 |  | ||||||
| +
 |  | ||||||
| +;;; main
 |  | ||||||
| +
 |  | ||||||
| +(define (main)
 |  | ||||||
| +  (define option-spec
 |  | ||||||
| +    '((force (single-char #\f) (value #f))
 |  | ||||||
| +      (exclude (single-char #\x) (value #t))
 |  | ||||||
| +      (output (single-char #\o) (value #t))
 |  | ||||||
| +      (help  (single-char #\h) (value #f))))
 |  | ||||||
| +
 |  | ||||||
| +  (define options (getopt-long (command-line) option-spec #:stop-at-first-non-option #t))
 |  | ||||||
| +  (define args (reverse (option-ref options '() '())))
 |  | ||||||
| +  (when (> (length args) 1)
 |  | ||||||
| +    (display "More than one path given\n")
 |  | ||||||
| +    (exit 1))
 |  | ||||||
| +
 |  | ||||||
| +  (if (< (length args) 1)
 |  | ||||||
| +      (set! args '(".")))
 |  | ||||||
| +
 |  | ||||||
| +  (let* ((path (car args))
 |  | ||||||
| +         (output (option-ref options 'output path))
 |  | ||||||
| +         (excluded (filter-map (match-lambda
 |  | ||||||
| +                                (('exclude . value) value)
 |  | ||||||
| +                                (_ #f))
 |  | ||||||
| +                               options)))
 |  | ||||||
| +    (generate-TestSuite path output excluded)))
 |  | ||||||
| +
 |  | ||||||
| +(main)
 |  | ||||||
|  | @ -15,7 +15,7 @@ | ||||||
| ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com> | ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com> | ||||||
| ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> | ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> | ||||||
| ;;; Copyright © 2017 André <eu@euandre.org> | ;;; Copyright © 2017 André <eu@euandre.org> | ||||||
| ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com> | ;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com> | ||||||
| ;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at> | ;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at> | ||||||
| ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com> | ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com> | ||||||
| ;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org> | ;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org> | ||||||
|  | @ -534,7 +534,7 @@ everything from small to very large projects with speed and efficiency.") | ||||||
| (define-public libgit2 | (define-public libgit2 | ||||||
|   (package |   (package | ||||||
|     (name "libgit2") |     (name "libgit2") | ||||||
|     (version "0.28.4") |     (version "0.99.0") | ||||||
|     (source (origin |     (source (origin | ||||||
|               (method git-fetch) |               (method git-fetch) | ||||||
|               (uri (git-reference |               (uri (git-reference | ||||||
|  | @ -543,21 +543,37 @@ everything from small to very large projects with speed and efficiency.") | ||||||
|               (file-name (git-file-name name version)) |               (file-name (git-file-name name version)) | ||||||
|               (sha256 |               (sha256 | ||||||
|                (base32 |                (base32 | ||||||
|                 "171b25aym4q88bidc4c76y4l6jmdwifm3q9zjqsll0wjhlkycfy1")) |                 "0qxzv49ip378g1n7hrbifb9c6pys2kj1hnxcafmbb94gj3pgd9kg")) | ||||||
|               (patches (search-patches "libgit2-avoid-python.patch" |               (patches (search-patches "libgit2-mtime-0.patch")) | ||||||
|                                        "libgit2-mtime-0.patch")) |  | ||||||
| 
 | 
 | ||||||
|               ;; Remove bundled software. |               ;; Remove bundled software.  Keep "http-parser" because it | ||||||
|  |               ;; contains patches that are not available in the system version. | ||||||
|               (snippet '(begin |               (snippet '(begin | ||||||
|                           (delete-file-recursively "deps") |                           (with-directory-excursion "deps" | ||||||
|  |                             (for-each (lambda (dir) | ||||||
|  |                                         (delete-file-recursively dir)) | ||||||
|  |                                       (lset-difference equal? | ||||||
|  |                                                        (scandir ".") | ||||||
|  |                                                        '("." ".." "http-parser")))) | ||||||
|                           #t)) |                           #t)) | ||||||
|               (modules '((guix build utils))))) |               (modules '((guix build utils) | ||||||
|  |                          (srfi srfi-1) | ||||||
|  |                          (ice-9 ftw))))) | ||||||
|     (build-system cmake-build-system) |     (build-system cmake-build-system) | ||||||
|     (outputs '("out" "debug")) |     (outputs '("out" "debug")) | ||||||
|     (arguments |     (arguments | ||||||
|      `(#:configure-flags '("-DUSE_SHA1DC=ON") ; SHA-1 collision detection |      `(#:configure-flags '("-DUSE_NTLMCLIENT=OFF" ;TODO: package this | ||||||
|  |                            "-DREGEX_BACKEND=pcre2") | ||||||
|        #:phases |        #:phases | ||||||
|        (modify-phases %standard-phases |        (modify-phases %standard-phases | ||||||
|  |          (add-after 'unpack 'fix-pcre2-reference | ||||||
|  |            (lambda _ | ||||||
|  |              ;; Use PCRE2 with 8-bit character support, as there is no "libpcre2.pc". | ||||||
|  |              ;; See <https://github.com/libgit2/libgit2/issues/5438>. | ||||||
|  |              (substitute* "src/CMakeLists.txt" | ||||||
|  |                (("\"libpcre2\"") | ||||||
|  |                 "\"libpcre2-8\"")) | ||||||
|  |              #t)) | ||||||
|          (add-after 'unpack 'fix-hardcoded-paths |          (add-after 'unpack 'fix-hardcoded-paths | ||||||
|            (lambda _ |            (lambda _ | ||||||
|              (substitute* "tests/repo/init.c" |              (substitute* "tests/repo/init.c" | ||||||
|  | @ -574,14 +590,14 @@ everything from small to very large projects with speed and efficiency.") | ||||||
|          (replace 'check |          (replace 'check | ||||||
|            (lambda _ (invoke "./libgit2_clar" "-v" "-Q")))))) |            (lambda _ (invoke "./libgit2_clar" "-v" "-Q")))))) | ||||||
|     (inputs |     (inputs | ||||||
|      `(("libssh2" ,libssh2) |      `(("libssh2" ,libssh2))) | ||||||
|        ("http-parser" ,http-parser))) |  | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("guile" ,guile-2.2) |      `(("pkg-config" ,pkg-config) | ||||||
|        ("pkg-config" ,pkg-config))) |        ("python" ,python))) | ||||||
|     (propagated-inputs |     (propagated-inputs | ||||||
|      ;; These two libraries are in 'Requires.private' in libgit2.pc. |      ;; These libraries are in 'Requires.private' in libgit2.pc. | ||||||
|      `(("openssl" ,openssl) |      `(("openssl" ,openssl) | ||||||
|  |        ("pcre2" ,pcre2) | ||||||
|        ("zlib" ,zlib))) |        ("zlib" ,zlib))) | ||||||
|     (home-page "https://libgit2.github.com/") |     (home-page "https://libgit2.github.com/") | ||||||
|     (synopsis "Library providing Git core methods") |     (synopsis "Library providing Git core methods") | ||||||
|  |  | ||||||
		Reference in a new issue