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.
View this message in rfc822 format
From: help-debbugs <at> gnu.org (GNU bug Tracking System) To: Hilton Chain <hako <at> ultrarare.space> Cc: tracker <at> debbugs.gnu.org Subject: bug#63874: closed ([PATCH 1/2] gnu: git-filter-repo: Update to 2.38.0 and generate documentation.) Date: Sat, 24 Feb 2024 16:48:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Sun, 25 Feb 2024 00:46:22 +0800 with message-id <874jdxizdt.wl-hako <at> ultrarare.space> and subject line Re: [bug#63874] [PATCH v2] gnu: git-filter-repo: Update to 2.38.0. has caused the debbugs.gnu.org bug report #63874, regarding [PATCH 1/2] gnu: git-filter-repo: Update to 2.38.0 and generate documentation. to be marked as done. (If you believe you have received this mail in error, please contact help-debbugs <at> gnu.org.) -- 63874: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=63874 GNU Bug Tracking System Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
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 +0200From: 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=* ++plus=+ ++caret=^ ++startsb=[ ++endsb=] ++backslash=\ ++tilde=~ ++apostrophe=' ++backtick=` ++litdd=-- ++ ++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 </xsl:text> ++ <xsl:apply-templates/> ++ <xsl:text> </xsl:text> ++</xsl:template> ++<xsl:template match="callout"> ++ <xsl:value-of select="concat('\fB',substring-after(@arearefs,'-'),'. \fR')"/> ++ <xsl:apply-templates/> ++ <xsl:text>.br </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
[Message part 3 (message/rfc822, inline)]
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 +0800On 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.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.