GNU bug report logs - #63874
[PATCH 1/2] gnu: git-filter-repo: Update to 2.38.0 and generate documentation.

Previous Next

Package: guix-patches;

Reported by: Josselin Poiret <dev <at> jpoiret.xyz>

Date: Sat, 3 Jun 2023 14:03:02 UTC

Severity: normal

Tags: patch

Merged with 63873

Done: Hilton Chain <hako <at> ultrarare.space>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 63874 in the body.
You can then email your comments to 63874 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#63874; Package guix-patches. (Sat, 03 Jun 2023 14:03:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Josselin Poiret <dev <at> jpoiret.xyz>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sat, 03 Jun 2023 14:03:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Josselin Poiret <dev <at> jpoiret.xyz>
To: guix-patches <at> gnu.org
Cc: Josselin Poiret <dev <at> jpoiret.xyz>
Subject: [PATCH 1/2] gnu: git-filter-repo: Update to 2.38.0 and generate
 documentation.
Date: Sat,  3 Jun 2023 16:02:06 +0200
From: Josselin Poiret <dev <at> jpoiret.xyz>

* gnu/packages/patches/git-filter-repo-generate-doc.patch:
* gnu/local.mk (dist_patch_DATA):
* gnu/packages/version-control.scm (git-filter-repo): Update to 2.38.0, use
git-fetch, use patch and switch to gnu-build-system and G-Exps.
---
 gnu/local.mk                                  |   1 +
 .../git-filter-repo-generate-doc.patch        | 289 ++++++++++++++++++
 gnu/packages/version-control.scm              |  48 ++-
 3 files changed, 324 insertions(+), 14 deletions(-)
 create mode 100644 gnu/packages/patches/git-filter-repo-generate-doc.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 09a4617daf..bc20a69949 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1217,6 +1217,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/genimage-mke2fs-test.patch		\
   %D%/packages/patches/geoclue-config.patch			\
   %D%/packages/patches/gettext-libunicode-update.patch		\
+  %D%/packages/patches/git-filter-repo-generate-doc.patch	\
   %D%/packages/patches/git-header-cmd.patch			\
   %D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch	\
   %D%/packages/patches/ghc-9.2-glibc-2.33-link-order.patch \
diff --git a/gnu/packages/patches/git-filter-repo-generate-doc.patch b/gnu/packages/patches/git-filter-repo-generate-doc.patch
new file mode 100644
index 0000000000..12b9d42ef2
--- /dev/null
+++ b/gnu/packages/patches/git-filter-repo-generate-doc.patch
@@ -0,0 +1,289 @@
+From 7c66e1d4a8076f5b0cc29e5c05637ba1363a6bd7 Mon Sep 17 00:00:00 2001
+Message-Id: <7c66e1d4a8076f5b0cc29e5c05637ba1363a6bd7.1685797909.git.dev <at> jpoiret.xyz>
+From: Josselin Poiret <dev <at> jpoiret.xyz>
+Date: Sat, 3 Jun 2023 13:07:07 +0200
+Subject: [PATCH] Add documentation generation.
+
+From: Josselin Poiret <dev <at> jpoiret.xyz>
+
+This uses the manpage XSL and asciidoc config files from git 2.40.1.
+---
+ .gitignore                             |  1 +
+ Documentation/Makefile                 | 38 +++++++++++++
+ Documentation/asciidoc.conf            | 78 ++++++++++++++++++++++++++
+ Documentation/manpage-base-url.xsl.in  | 10 ++++
+ Documentation/manpage-bold-literal.xsl | 16 ++++++
+ Documentation/manpage-normal.xsl       | 26 +++++++++
+ Documentation/manpage-quote-apos.xsl   | 16 ++++++
+ Makefile                               | 17 +-----
+ 8 files changed, 188 insertions(+), 14 deletions(-)
+ create mode 100644 Documentation/Makefile
+ create mode 100644 Documentation/asciidoc.conf
+ create mode 100644 Documentation/manpage-base-url.xsl.in
+ create mode 100644 Documentation/manpage-bold-literal.xsl
+ create mode 100644 Documentation/manpage-normal.xsl
+ create mode 100644 Documentation/manpage-quote-apos.xsl
+
+diff --git a/.gitignore b/.gitignore
+index cd5ded4..e167ef7 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -1,5 +1,6 @@
+ /Documentation/html/
+ /Documentation/man1/
++/Documentation/manpage-base-url.xsl
+ /t/test-results
+ /t/trash directory*
+ /__pycache__/
+diff --git a/Documentation/Makefile b/Documentation/Makefile
+new file mode 100644
+index 0000000..d4cd939
+--- /dev/null
++++ b/Documentation/Makefile
+@@ -0,0 +1,38 @@
++MAN_BASE_URL := /usr/share/doc/git-doc/
++VERSION := $(git log --pretty="%H" -n 1)
++
++ASCIIDOC := asciidoc
++ASCIIDOC_EXTRA :=
++ASCIIDOC_HTML := xhtml11
++ASCIIDOC_DOCBOOK := docbook
++ASCIIDOC_CONF := -f asciidoc.conf
++ASCIIDOC_COMMON := $(ASCIIDOC) $(ASCIIDOC_EXTRA) $(ASCIIDOC_CONF) \
++		-amanversion='$(VERSION)' \
++		-amanmanual='git-filter-repo Manual' -amansource='git-filter-repo'
++ASCIIDOC_DEPS := asciidoc.conf
++TXT_TO_HTML := $(ASCIIDOC_COMMON) -b $(ASCIIDOC_HTML)
++TXT_TO_XML := $(ASCIIDOC_COMMON) -b $(ASCIIDOC_DOCBOOK)
++MANPAGE_XSL := manpage-normal.xsl
++XMLTO := xmlto
++XMLTO_EXTRA := -m manpage-bold-literal.xsl -m manpage-base-url.xsl -m manpage-quote-apos.xsl
++XMLTO_DEPS := manpage-bold-literal.xsl manpage-base-url.xsl manpage-quote-apos.xsl
++
++manpage-deps := $(XMLTO_DEPS)
++manpage-cmd := $(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man
++
++manpage-base-url.xsl: manpage-base-url.xsl.in
++	sed "s|@@MAN_BASE_URL@@|$(MAN_BASE_URL)|" $< > $@
++
++%.xml : %.txt $(ASCIIDOC_DEPS)
++	$(QUIET_ASCIIDOC)$(TXT_TO_XML) -d manpage -o $@ $<
++
++man1/%.1 : %.xml $(manpage-deps)
++	mkdir -p man1
++	$(manpage-cmd) -o man1 $<
++
++html/%.html : %.txt $(ASCIIDOC_DEPS)
++	mkdir -p html
++	$(TXT_TO_HTML) -d manpage -o $@ $<
++
++man: man1/git-filter-repo.1
++html: html/git-filter-repo.html
+diff --git a/Documentation/asciidoc.conf b/Documentation/asciidoc.conf
+new file mode 100644
+index 0000000..3e4c139
+--- /dev/null
++++ b/Documentation/asciidoc.conf
+@@ -0,0 +1,78 @@
++## linkgit: macro
++#
++# Usage: linkgit:command[manpage-section]
++#
++# Note, {0} is the manpage section, while {target} is the command.
++#
++# Show Git link as: <command>(<section>); if section is defined, else just show
++# the command.
++
++[macros]
++(?su)[\\]?(?P<name>linkgit):(?P<target>\S*?)\[(?P<attrlist>.*?)\]=
++
++[attributes]
++asterisk=&#42;
++plus=&#43;
++caret=&#94;
++startsb=&#91;
++endsb=&#93;
++backslash=&#92;
++tilde=&#126;
++apostrophe=&#39;
++backtick=&#96;
++litdd=&#45;&#45;
++
++ifdef::backend-docbook[]
++[linkgit-inlinemacro]
++{0%{target}}
++{0#<citerefentry>}
++{0#<refentrytitle>{target}</refentrytitle><manvolnum>{0}</manvolnum>}
++{0#</citerefentry>}
++endif::backend-docbook[]
++
++ifdef::backend-docbook[]
++ifdef::doctype-manpage[]
++# The following two small workarounds insert a simple paragraph after screen
++[listingblock]
++<example><title>{title}</title>
++<literallayout class="monospaced">
++|
++</literallayout><simpara></simpara>
++{title#}</example>
++
++[verseblock]
++<formalpara{id? id="{id}"}><title>{title}</title><para>
++{title%}<literallayout{id? id="{id}"}>
++{title#}<literallayout>
++|
++</literallayout>
++{title#}</para></formalpara>
++{title%}<simpara></simpara>
++endif::doctype-manpage[]
++endif::backend-docbook[]
++
++ifdef::doctype-manpage[]
++ifdef::backend-docbook[]
++[header]
++template::[header-declarations]
++<refentry>
++<refmeta>
++<refentrytitle>{mantitle}</refentrytitle>
++<manvolnum>{manvolnum}</manvolnum>
++<refmiscinfo class="source">{mansource}</refmiscinfo>
++<refmiscinfo class="version">{manversion}</refmiscinfo>
++<refmiscinfo class="manual">{manmanual}</refmiscinfo>
++</refmeta>
++<refnamediv>
++  <refname>{manname}</refname>
++  <refpurpose>{manpurpose}</refpurpose>
++</refnamediv>
++endif::backend-docbook[]
++endif::doctype-manpage[]
++
++ifdef::backend-xhtml11[]
++[attributes]
++git-relative-html-prefix=
++[linkgit-inlinemacro]
++<a href="{git-relative-html-prefix}{target}.html">{target}{0?({0})}</a>
++endif::backend-xhtml11[]
+diff --git a/Documentation/manpage-base-url.xsl.in b/Documentation/manpage-base-url.xsl.in
+new file mode 100644
+index 0000000..e800904
+--- /dev/null
++++ b/Documentation/manpage-base-url.xsl.in
+@@ -0,0 +1,10 @@
++<!-- manpage-base-url.xsl:
++     special settings for manpages rendered from newer docbook -->
++<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
++		version="1.0">
++
++<!-- set a base URL for relative links -->
++<xsl:param name="man.base.url.for.relative.links"
++	>@@MAN_BASE_URL@@</xsl:param>
++
++</xsl:stylesheet>
+diff --git a/Documentation/manpage-bold-literal.xsl b/Documentation/manpage-bold-literal.xsl
+new file mode 100644
+index 0000000..e13db85
+--- /dev/null
++++ b/Documentation/manpage-bold-literal.xsl
+@@ -0,0 +1,16 @@
++<!-- manpage-bold-literal.xsl:
++     special formatting for manpages rendered from asciidoc+docbook -->
++<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
++		xmlns:d="http://docbook.org/ns/docbook"
++		version="1.0">
++
++<!-- render literal text as bold (instead of plain or monospace);
++     this makes literal text easier to distinguish in manpages
++     viewed on a tty -->
++<xsl:template match="literal|d:literal">
++	<xsl:text>\fB</xsl:text>
++	<xsl:apply-templates/>
++	<xsl:text>\fR</xsl:text>
++</xsl:template>
++
++</xsl:stylesheet>
+diff --git a/Documentation/manpage-normal.xsl b/Documentation/manpage-normal.xsl
+new file mode 100644
+index 0000000..a9c7ec6
+--- /dev/null
++++ b/Documentation/manpage-normal.xsl
+@@ -0,0 +1,26 @@
++<!-- manpage-normal.xsl:
++     special settings for manpages rendered from asciidoc+docbook -->
++<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
++		version="1.0">
++
++
++<!-- these params silence some output from xmlto -->
++<xsl:param name="man.output.quietly" select="1"/>
++<xsl:param name="refentry.meta.get.quietly" select="1"/>
++
++<!-- convert asciidoc callouts to man page format -->
++<xsl:template match="co">
++	<xsl:value-of select="concat('\fB(',substring-after(@id,'-'),')\fR')"/>
++</xsl:template>
++<xsl:template match="calloutlist">
++	<xsl:text>.sp&#10;</xsl:text>
++	<xsl:apply-templates/>
++	<xsl:text>&#10;</xsl:text>
++</xsl:template>
++<xsl:template match="callout">
++	<xsl:value-of select="concat('\fB',substring-after(@arearefs,'-'),'. \fR')"/>
++	<xsl:apply-templates/>
++	<xsl:text>.br&#10;</xsl:text>
++</xsl:template>
++
++</xsl:stylesheet>
+diff --git a/Documentation/manpage-quote-apos.xsl b/Documentation/manpage-quote-apos.xsl
+new file mode 100644
+index 0000000..aeb8839
+--- /dev/null
++++ b/Documentation/manpage-quote-apos.xsl
+@@ -0,0 +1,16 @@
++<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
++		version="1.0">
++
++<!-- work around newer groff/man setups using a prettier apostrophe
++     that unfortunately does not quote anything when cut&pasting
++     examples to the shell -->
++<xsl:template name="escape.apostrophe">
++  <xsl:param name="content"/>
++  <xsl:call-template name="string.subst">
++    <xsl:with-param name="string" select="$content"/>
++    <xsl:with-param name="target">'</xsl:with-param>
++    <xsl:with-param name="replacement">\(aq</xsl:with-param>
++  </xsl:call-template>
++</xsl:template>
++
++</xsl:stylesheet>
+diff --git a/Makefile b/Makefile
+index a443450..d965ae5 100644
+--- a/Makefile
++++ b/Makefile
+@@ -20,21 +20,10 @@ test:
+ fixup_locale:
+ 	sed -ie s%@@LOCALEDIR@@%$(localedir)% git-filter-repo
+ 
+-# People installing from tarball will already have man1/git-filter-repo.1 and
+-# html/git-filter-repo.html.  But let's support people installing from a git
+-# clone too; for them, just cheat and snag a copy of the built docs that I
+-# record in a different branch.
+-snag_docs: Documentation/man1/git-filter-repo.1 Documentation/html/git-filter-repo.html
++doc:
++	$(MAKE) -C Documentation man html
+ 
+-Documentation/man1/git-filter-repo.1:
+-	mkdir -p Documentation/man1
+-	git show origin/docs:man1/git-filter-repo.1 >Documentation/man1/git-filter-repo.1
+-
+-Documentation/html/git-filter-repo.html:
+-	mkdir -p Documentation/html
+-	git show origin/docs:html/git-filter-repo.html >Documentation/html/git-filter-repo.html
+-
+-install: snag_docs #fixup_locale
++install: doc #fixup_locale
+ 	install -Dm0755 git-filter-repo "$(DESTDIR)/$(bindir)/git-filter-repo"
+ 	install -dm0755 "$(DESTDIR)/$(pythondir)"
+ 	ln -sf "$(bindir)/git-filter-repo" "$(DESTDIR)/$(pythondir)/git_filter_repo.py"
+-- 
+2.40.1
+
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 1db0931ac3..083d4edf84 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -48,6 +48,7 @@
 ;;; Copyright © 2022 Dhruvin Gandhi <contact <at> dhruvin.dev>
 ;;; Copyright © 2015, 2022 David Thompson <davet <at> gnu.org>
 ;;; Copyright © 2023 Nicolas Graves <ngraves <at> ngraves.fr>
+;;; Copyright © 2023 Josselin Poiret <dev <at> jpoiret.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3492,26 +3493,45 @@ (define-public tkrev
 (define-public git-filter-repo
   (package
     (name "git-filter-repo")
-    (version "2.29.0")
+    (version "2.38.0")
     (source
      (origin
-       ;; Use a release tarball instead of 'git-fetch' because it contains
-       ;; pre-compiled man-pages which are too hard to build in this context
-       ;; as it depends on Git's Makefile.
-       (method url-fetch)
-       (uri (string-append "https://github.com/newren/git-filter-repo/releases/"
-                           "download/v" version
-                           "/git-filter-repo-" version ".tar.xz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/newren/git-filter-repo")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "00nn7k9jqrybb762486fmigsnbcn9lbvimgpfvvarz4ikdp9y9pb"))))
-    (build-system copy-build-system)
+         "1al43zpw1mdfy9i05w4xw178abypjwnkk52lqvmbl19lr1l47r4i"))
+       ;; Sent upstream as PR #477.
+       (patches (search-patches "git-filter-repo-generate-doc.patch"))))
+    (build-system gnu-build-system)
     (arguments
-     `(#:install-plan
-       '(("git-filter-repo" "libexec/git-core/")
-         ("Documentation/man1/" "share/man/man1")
-         ("/" "" #:include ()))))
+     (list
+      #:tests? #f ; No tests
+      #:phases
+      (with-imported-modules '((guix build python-build-system))
+        #~(begin
+            (use-modules ((guix build python-build-system) #:select (site-packages)))
+            (modify-phases %standard-phases
+              (add-after 'unpack 'fix-dirs
+                (lambda* (#:key inputs outputs #:allow-other-keys)
+                  (substitute* "Makefile"
+                    (("prefix = \\$\\(HOME\\)")
+                     (string-append "prefix = " #$output))
+                    (("pythondir = .*")
+                     (string-append "pythondir = " (site-packages inputs outputs))))))
+              (delete 'configure)
+              (replace 'build
+                (lambda _
+                  (invoke "make" "doc" #$(string-append "VERSION=" version)))))))))
     (inputs (list python))                ;for the shebang
+    (native-inputs
+     (list asciidoc
+           docbook-xsl
+           libxml2 ;for XML_CATALOG_FILES
+           xmlto))
     (home-page "https://github.com/newren/git-filter-repo")
     (synopsis "Quickly rewrite Git repository history")
     (description

base-commit: da71721db152a338f5d2c35ca3a703fe5df12b27
-- 
2.40.1





Information forwarded to guix-patches <at> gnu.org:
bug#63874; Package guix-patches. (Sat, 03 Jun 2023 14:07:02 GMT) Full text and rfc822 format available.

Message #8 received at 63874 <at> debbugs.gnu.org (full text, mbox):

From: Josselin Poiret <dev <at> jpoiret.xyz>
To: 63873 <at> debbugs.gnu.org, 63874 <at> debbugs.gnu.org, control <at> debbugs.gnu.org
Cc: Ricardo Wurmus <rekado <at> elephly.net>,
 Arun Isaac <arunisaac <at> systemreboot.net>
Subject: mumi send-email doesn't support complex refs (was: [PATCH 2/2] gnu:
 b4: Update to 0.12.2.)
Date: Sat, 03 Jun 2023 16:06:30 +0200
[Message part 1 (text/plain, inline)]
merge 63873 63874
thankyou

Well, sent with `mumi send-email origin/master`, didn't go too well (I
guess mumi thought this would only be one mail?).

Josselin Poiret <dev <at> jpoiret.xyz> writes:

> From: Josselin Poiret <dev <at> jpoiret.xyz>
>
> * gnu/packages/version-control.scm (b4): Update to 0.12.2.
> ---
>  gnu/packages/version-control.scm | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
> index 083d4edf84..1229ae1f77 100644
> --- a/gnu/packages/version-control.scm
> +++ b/gnu/packages/version-control.scm
> @@ -2612,13 +2612,13 @@ (define-public patatt
>  (define-public b4
>    (package
>      (name "b4")
> -    (version "0.8.0")
> +    (version "0.12.2")
>      (source
>       (origin
>         (method url-fetch)
>         (uri (pypi-uri "b4" version))
>         (sha256
> -        (base32 "115ysciq15sxc8fd9hf7p0f4wnd5xapcfkmq8g33y1c8nbdxclbx"))))
> +        (base32 "0vmyma13dnpv3vbzamrmzc2ph71bg44hk7rqbc2ji2ppigbszx5n"))))
>      (build-system python-build-system)
>      (arguments
>       (list #:tests? #f                  ;no tests
> @@ -2631,7 +2631,7 @@ (define-public b4
>      (inputs
>       (list python-dkimpy python-dnspython python-requests))
>      (propagated-inputs
> -     (list patatt))
> +     (list git-filter-repo patatt))
>      (home-page "https://git.kernel.org/pub/scm/utils/b4/b4.git")
>      (synopsis "Tool for working with patches in public-inbox archives")
>      (description
> -- 
> 2.40.1
>

-- 
Josselin Poiret
[signature.asc (application/pgp-signature, inline)]

Merged 63873 63874. Request was from Josselin Poiret <dev <at> jpoiret.xyz> to control <at> debbugs.gnu.org. (Sat, 03 Jun 2023 14:07:03 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#63874; Package guix-patches. (Mon, 05 Jun 2023 23:01:02 GMT) Full text and rfc822 format available.

Message #13 received at 63874 <at> debbugs.gnu.org (full text, mbox):

From: Arun Isaac <arunisaac <at> systemreboot.net>
To: Josselin Poiret <dev <at> jpoiret.xyz>, 63873 <at> debbugs.gnu.org,
 63874 <at> debbugs.gnu.org
Cc: Ricardo Wurmus <rekado <at> elephly.net>
Subject: Re: mumi send-email doesn't support complex refs (was: [PATCH 2/2]
 gnu: b4: Update to 0.12.2.)
Date: Mon, 05 Jun 2023 23:59:58 +0100
> Well, sent with `mumi send-email origin/master`, didn't go too well (I
> guess mumi thought this would only be one mail?).

Indeed, `mumi send-email' doesn't know anything about refs. I'll hack on
this in the coming week.




Information forwarded to guix-patches <at> gnu.org:
bug#63874; Package guix-patches. (Sat, 01 Jul 2023 14:40:02 GMT) Full text and rfc822 format available.

Message #16 received at 63874 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Josselin Poiret <dev <at> jpoiret.xyz>
Cc: 63874 <at> debbugs.gnu.org
Subject: Re: bug#63874: [PATCH 1/2] gnu: git-filter-repo: Update to 2.38.0
 and generate documentation.
Date: Sat, 01 Jul 2023 16:38:49 +0200
Hello!

Josselin Poiret <dev <at> jpoiret.xyz> skribis:

> From: Josselin Poiret <dev <at> jpoiret.xyz>
>
> * gnu/packages/patches/git-filter-repo-generate-doc.patch:
> * gnu/local.mk (dist_patch_DATA):
> * gnu/packages/version-control.scm (git-filter-repo): Update to 2.38.0, use
> git-fetch, use patch and switch to gnu-build-system and G-Exps.

[...]

> +++ b/gnu/packages/patches/git-filter-repo-generate-doc.patch
> @@ -0,0 +1,289 @@
> +From 7c66e1d4a8076f5b0cc29e5c05637ba1363a6bd7 Mon Sep 17 00:00:00 2001
> +Message-Id: <7c66e1d4a8076f5b0cc29e5c05637ba1363a6bd7.1685797909.git.dev <at> jpoiret.xyz>
> +From: Josselin Poiret <dev <at> jpoiret.xyz>
> +Date: Sat, 3 Jun 2023 13:07:07 +0200
> +Subject: [PATCH] Add documentation generation.
> +
> +From: Josselin Poiret <dev <at> jpoiret.xyz>
> +
> +This uses the manpage XSL and asciidoc config files from git 2.40.1.

Could you specify the upstream status in the header?

It’s a rather big patch so the sooner we can get rid of it, the better!

Apart from that, it LGTM!

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#63874; Package guix-patches. (Sat, 01 Jul 2023 14:40:02 GMT) Full text and rfc822 format available.

Message #19 received at 63874 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Josselin Poiret <dev <at> jpoiret.xyz>
Cc: 63874 <at> debbugs.gnu.org, 63873 <at> debbugs.gnu.org
Subject: Re: bug#63874: [PATCH 1/2] gnu: git-filter-repo: Update to 2.38.0
 and generate documentation.
Date: Sat, 01 Jul 2023 16:38:59 +0200
Josselin Poiret <dev <at> jpoiret.xyz> skribis:

> From: Josselin Poiret <dev <at> jpoiret.xyz>
>
> * gnu/packages/version-control.scm (b4): Update to 0.12.2.

LGTM!




Information forwarded to dev <at> jpoiret.xyz, ludo <at> gnu.org, guix-patches <at> gnu.org:
bug#63874; Package guix-patches. (Thu, 15 Feb 2024 17:37:02 GMT) Full text and rfc822 format available.

Message #22 received at 63874 <at> debbugs.gnu.org (full text, mbox):

From: Hilton Chain <hako <at> ultrarare.space>
To: 63874 <at> debbugs.gnu.org
Cc: Hilton Chain <hako <at> ultrarare.space>, Josselin Poiret <dev <at> jpoiret.xyz>
Subject: [PATCH v2] gnu: git-filter-repo: Update to 2.38.0.
Date: Fri, 16 Feb 2024 01:34:59 +0800
From: Josselin Poiret <dev <at> jpoiret.xyz>

* gnu/packages/patches/git-filter-repo-generate-doc.patch: New file.
* gnu/local.mk (dist_patch_DATA): Regisiter it.
* gnu/packages/version-control.scm (git-filter-repo): Update to 2.38.0.
[source]: Switch to git-fetch.
Use the patch.
[build-system]: Switch to gnu-build-system.
[native-inputs]: Add asciidoc, docbook-xsl, libxml2, xmlto.

Modified-by: Hilton Chain <hako <at> ultrarare.space>
Change-Id: I7b15975ea56c44ae580d19cfe5a9e3eb75c6db0d
---

Hi Josselin, Ludo,

I adjusted the patch a bit, and added a phase to unpack git's source.  So that
the shipped patch only includes Makefiles now.

 gnu/local.mk                                  |  1 +
 .../git-filter-repo-generate-doc.patch        | 88 +++++++++++++++++++
 gnu/packages/version-control.scm              | 69 ++++++++++++---
 3 files changed, 144 insertions(+), 14 deletions(-)
 create mode 100644 gnu/packages/patches/git-filter-repo-generate-doc.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 4bd8e6ec6a..d9a4c8f204 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1308,6 +1308,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/ghostscript-no-header-id.patch		\
   %D%/packages/patches/ghostscript-no-header-uuid.patch		\
   %D%/packages/patches/ghostscript-no-header-creationdate.patch \
+  %D%/packages/patches/git-filter-repo-generate-doc.patch	\
   %D%/packages/patches/gitg-fix-positional-argument.patch	\
   %D%/packages/patches/gklib-suitesparse.patch			\
   %D%/packages/patches/glib-appinfo-watch.patch			\
diff --git a/gnu/packages/patches/git-filter-repo-generate-doc.patch b/gnu/packages/patches/git-filter-repo-generate-doc.patch
new file mode 100644
index 0000000000..e0bbc7831c
--- /dev/null
+++ b/gnu/packages/patches/git-filter-repo-generate-doc.patch
@@ -0,0 +1,88 @@
+From 56e6857e71d2b2a2236625f3c8b112bd40a8b164 Mon Sep 17 00:00:00 2001
+From: Josselin Poiret <dev <at> jpoiret.xyz>
+Date: Fri, 16 Feb 2024 00:21:06 +0800
+Subject: [PATCH] Add documentation generation.
+
+This requires the manpage XSL and asciidoc config files from git 2.41.0.
+
+Modified-by: Hilton Chain <hako <at> ultrarare.space>
+---
+ Documentation/Makefile | 34 ++++++++++++++++++++++++++++++++++
+ Makefile               | 17 +++--------------
+ 2 files changed, 37 insertions(+), 14 deletions(-)
+ create mode 100644 Documentation/Makefile
+
+diff --git a/Documentation/Makefile b/Documentation/Makefile
+new file mode 100644
+index 0000000..d81ffbe
+--- /dev/null
++++ b/Documentation/Makefile
+@@ -0,0 +1,34 @@
++MAN_BASE_URL := $(prefix)/share/doc/git-doc/
++VERSION := $(git log --pretty="%H" -n 1)
++
++ASCIIDOC := asciidoc
++ASCIIDOC_EXTRA :=
++ASCIIDOC_HTML := xhtml11
++ASCIIDOC_DOCBOOK := docbook
++ASCIIDOC_CONF := -f asciidoc.conf
++ASCIIDOC_COMMON := $(ASCIIDOC) $(ASCIIDOC_EXTRA) $(ASCIIDOC_CONF) \
++		-amanmanual='git-filter-repo Manual' -amansource='git-filter-repo $(VERSION)'
++ASCIIDOC_DEPS := asciidoc.conf
++TXT_TO_HTML := $(ASCIIDOC_COMMON) -b $(ASCIIDOC_HTML)
++TXT_TO_XML := $(ASCIIDOC_COMMON) -b $(ASCIIDOC_DOCBOOK)
++MANPAGE_XSL := manpage-normal.xsl
++XMLTO := xmlto
++XMLTO_EXTRA := -m manpage-bold-literal.xsl \
++		--stringparam man.base.url.for.relative.links='$(MAN_BASE_URL)'
++
++manpage-prereqs := $(wildcard manpage*.xsl)
++manpage-cmd := $(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man
++
++%.xml : %.txt $(ASCIIDOC_DEPS)
++	$(TXT_TO_XML) -d manpage -o $@ $<
++
++man1/%.1 : %.xml $(manpage-prereqs)
++	mkdir -p man1
++	$(manpage-cmd) -o man1 $<
++
++html/%.html : %.txt $(ASCIIDOC_DEPS)
++	mkdir -p html
++	$(TXT_TO_HTML) -d manpage -o $@ $<
++
++man: man1/git-filter-repo.1
++html: html/git-filter-repo.html
+diff --git a/Makefile b/Makefile
+index a443450..d965ae5 100644
+--- a/Makefile
++++ b/Makefile
+@@ -20,21 +20,10 @@ test:
+ fixup_locale:
+ 	sed -ie s%@@LOCALEDIR@@%$(localedir)% git-filter-repo
+
+-# People installing from tarball will already have man1/git-filter-repo.1 and
+-# html/git-filter-repo.html.  But let's support people installing from a git
+-# clone too; for them, just cheat and snag a copy of the built docs that I
+-# record in a different branch.
+-snag_docs: Documentation/man1/git-filter-repo.1 Documentation/html/git-filter-repo.html
++doc:
++	$(MAKE) -C Documentation man html
+
+-Documentation/man1/git-filter-repo.1:
+-	mkdir -p Documentation/man1
+-	git show origin/docs:man1/git-filter-repo.1 >Documentation/man1/git-filter-repo.1
+-
+-Documentation/html/git-filter-repo.html:
+-	mkdir -p Documentation/html
+-	git show origin/docs:html/git-filter-repo.html >Documentation/html/git-filter-repo.html
+-
+-install: snag_docs #fixup_locale
++install: doc #fixup_locale
+ 	install -Dm0755 git-filter-repo "$(DESTDIR)/$(bindir)/git-filter-repo"
+ 	install -dm0755 "$(DESTDIR)/$(pythondir)"
+ 	ln -sf "$(bindir)/git-filter-repo" "$(DESTDIR)/$(pythondir)/git_filter_repo.py"
+
+base-commit: cbc6535694380d3a3bf3e5c96410d4ce7e8de94f
+--
+2.41.0
+
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 242e6dae2e..148349cb49 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -50,6 +50,8 @@
 ;;; Copyright © 2023 Nicolas Graves <ngraves <at> ngraves.fr>
 ;;; Copyright © 2023 Kjartan Oli Agustsson <kjartanoli <at> disroot.org>
 ;;; Copyright © 2023 Steve George <steve <at> futurile.net>
+;;; Copyright © 2023 Josselin Poiret <dev <at> jpoiret.xyz>
+;;; Copyright © 2024 Hilton Chain <hako <at> ultrarare.space>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3844,25 +3846,64 @@ (define-public qgit
 (define-public git-filter-repo
   (package
     (name "git-filter-repo")
-    (version "2.29.0")
+    (version "2.38.0")
     (source
      (origin
-       ;; Use a release tarball instead of 'git-fetch' because it contains
-       ;; pre-compiled man-pages which are too hard to build in this context
-       ;; as it depends on Git's Makefile.
-       (method url-fetch)
-       (uri (string-append "https://github.com/newren/git-filter-repo/releases/"
-                           "download/v" version
-                           "/git-filter-repo-" version ".tar.xz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/newren/git-filter-repo")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "00nn7k9jqrybb762486fmigsnbcn9lbvimgpfvvarz4ikdp9y9pb"))))
-    (build-system copy-build-system)
+         "1al43zpw1mdfy9i05w4xw178abypjwnkk52lqvmbl19lr1l47r4i"))
+       ;; Modified from <https://github.com/newren/git-filter-repo/pull/477>.
+       ;; Used with 'unpack-git-source phase.
+       (patches (search-patches "git-filter-repo-generate-doc.patch"))))
+    (build-system gnu-build-system)
     (arguments
-     `(#:install-plan
-       '(("git-filter-repo" "libexec/git-core/")
-         ("Documentation/man1/" "share/man/man1")
-         ("/" "" #:include ()))))
+     (list
+      #:tests? #f                       ;No tests.
+      #:imported-modules
+      `(,@%gnu-build-system-modules
+        (guix build python-build-system))
+      #:modules
+      '((guix build gnu-build-system)
+        ((guix build python-build-system) #:select (site-packages))
+        (guix build utils)
+        (srfi srfi-26))
+      #:make-flags
+      #~(list (string-append "prefix=" #$output)
+              (string-append "VERSION=" #$(package-version this-package)))
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)
+          (add-after 'unpack 'unpack-git-source
+            (lambda _
+              (let* ((old-path (getcwd))
+                     (doc-source (string-append old-path "/Documentation")))
+                (mkdir-p "git-source")
+                (chdir "git-source")
+                ((assoc-ref %standard-phases 'unpack)
+                 #:source #+(package-source git))
+                (for-each
+                 (cut install-file <> doc-source)
+                 (find-files "." "asciidoc\\.conf$|manpage.*\\.xsl$"))
+                (chdir old-path)
+                (delete-file-recursively "git-source"))))
+          (add-before 'build 'set-pythondir
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (substitute* "Makefile"
+                (("(pythondir = ).*" _ pre)
+                 (string-append pre (site-packages inputs outputs))))))
+          (replace 'build
+            (lambda* (#:key make-flags #:allow-other-keys)
+              (apply invoke "make" "doc" make-flags))))))
+    (native-inputs
+     (list asciidoc
+           docbook-xsl
+           libxml2                        ;for XML_CATALOG_FILES
+           xmlto))
     (inputs (list python))                ;for the shebang
     (home-page "https://github.com/newren/git-filter-repo")
     (synopsis "Quickly rewrite Git repository history")

base-commit: 203344cc37c8a7df1ec1454381b5069d53ce7f9e
prerequisite-patch-id: bc542897db0e11da4c0f8da09ec31dd533cf2825
prerequisite-patch-id: fd7da036342f36a8c698f5c8975f9e48d3ade435
prerequisite-patch-id: a2c81c14423bb9858f33d7d26976e8eea61982b7
prerequisite-patch-id: e30fd25b1dc4aaaff76474153836cd48e8565eb9
prerequisite-patch-id: 1d070b26dc64ee2ec95f14c4f5fc23419f766810
prerequisite-patch-id: 03de992f0312d5f0ee3368ebc3c1fad7c955d095
prerequisite-patch-id: 82a04291e3a1bb33ced83672956934fbe98d31dc
--
2.41.0




Information forwarded to guix-patches <at> gnu.org:
bug#63874; Package guix-patches. (Sun, 18 Feb 2024 22:38:01 GMT) Full text and rfc822 format available.

Message #25 received at 63874 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Hilton Chain <hako <at> ultrarare.space>
Cc: 63874 <at> debbugs.gnu.org, Josselin Poiret <dev <at> jpoiret.xyz>
Subject: Re: [bug#63874] [PATCH v2] gnu: git-filter-repo: Update to 2.38.0.
Date: Sun, 18 Feb 2024 23:37:18 +0100
Hilton Chain <hako <at> ultrarare.space> skribis:

> From: Josselin Poiret <dev <at> jpoiret.xyz>
>
> * gnu/packages/patches/git-filter-repo-generate-doc.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Regisiter it.
> * gnu/packages/version-control.scm (git-filter-repo): Update to 2.38.0.
> [source]: Switch to git-fetch.
> Use the patch.
> [build-system]: Switch to gnu-build-system.
> [native-inputs]: Add asciidoc, docbook-xsl, libxml2, xmlto.
>
> Modified-by: Hilton Chain <hako <at> ultrarare.space>
> Change-Id: I7b15975ea56c44ae580d19cfe5a9e3eb75c6db0d
> ---
>
> Hi Josselin, Ludo,
>
> I adjusted the patch a bit, and added a phase to unpack git's source.  So that
> the shipped patch only includes Makefiles now.

Hi!  LGTM.

Thanks,
Ludo’.




Reply sent to Hilton Chain <hako <at> ultrarare.space>:
You have taken responsibility. (Sat, 24 Feb 2024 16:48:02 GMT) Full text and rfc822 format available.

Notification sent to Josselin Poiret <dev <at> jpoiret.xyz>:
bug acknowledged by developer. (Sat, 24 Feb 2024 16:48:02 GMT) Full text and rfc822 format available.

Message #30 received at 63874-done <at> debbugs.gnu.org (full text, mbox):

From: Hilton Chain <hako <at> ultrarare.space>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: Josselin Poiret <dev <at> jpoiret.xyz>, 63874-done <at> debbugs.gnu.org
Subject: Re: [bug#63874] [PATCH v2] gnu: git-filter-repo: Update to 2.38.0.
Date: Sun, 25 Feb 2024 00:46:22 +0800
On Mon, 19 Feb 2024 06:37:18 +0800,
Ludovic Courtès wrote:
>
> Hilton Chain <hako <at> ultrarare.space> skribis:
>
> > From: Josselin Poiret <dev <at> jpoiret.xyz>
> >
> > * gnu/packages/patches/git-filter-repo-generate-doc.patch: New file.
> > * gnu/local.mk (dist_patch_DATA): Regisiter it.
> > * gnu/packages/version-control.scm (git-filter-repo): Update to 2.38.0.
> > [source]: Switch to git-fetch.
> > Use the patch.
> > [build-system]: Switch to gnu-build-system.
> > [native-inputs]: Add asciidoc, docbook-xsl, libxml2, xmlto.
> >
> > Modified-by: Hilton Chain <hako <at> ultrarare.space>
> > Change-Id: I7b15975ea56c44ae580d19cfe5a9e3eb75c6db0d
> > ---
> >
> > Hi Josselin, Ludo,
> >
> > I adjusted the patch a bit, and added a phase to unpack git's source.  So that
> > the shipped patch only includes Makefiles now.
>
> Hi!  LGTM.

Thank you!  I have applied the patch as 313458c58c3fd89705081e1721e7c6fe7818d813.




Reply sent to Hilton Chain <hako <at> ultrarare.space>:
You have taken responsibility. (Sat, 24 Feb 2024 16:48:02 GMT) Full text and rfc822 format available.

Notification sent to Josselin Poiret <dev <at> jpoiret.xyz>:
bug acknowledged by developer. (Sat, 24 Feb 2024 16:48:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 24 Mar 2024 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 26 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.