Date: Wed, 11 Mar 2026 01:31:34 +0000 From: Alexey Dokuchaev <danfe@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Subject: git: edb0110477ad - main - devel/patch: update GNU patch to the latest version 2.8 Message-ID: <69b0c5f6.237d3.5aa958e2@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by danfe: URL: https://cgit.FreeBSD.org/ports/commit/?id=edb0110477ad8ecf2f1f9e5ee71a89188cab1f97 commit edb0110477ad8ecf2f1f9e5ee71a89188cab1f97 Author: Alexey Dokuchaev <danfe@FreeBSD.org> AuthorDate: 2026-03-11 01:29:52 +0000 Commit: Alexey Dokuchaev <danfe@FreeBSD.org> CommitDate: 2026-03-11 01:29:52 +0000 devel/patch: update GNU patch to the latest version 2.8 - GC previous Debian patches, backport new upstream fixes: add missing filename quoting, enable merge, skip read-only check when output file specified, reject empty filenames - On i386, apply the same fix as Debian for Hurd/i386 - The port now seemingly builds fine with BSD make(1) - Install some standard documentation files PR: 285796 --- devel/patch/Makefile | 27 +++++--- devel/patch/distinfo | 8 +-- devel/patch/files/patch-lib__Makefile.in | 43 ------------ devel/patch/files/patch-lib__localcharset.c | 98 --------------------------- devel/patch/files/patch-src_patch.c | 42 ++++++++++++ devel/patch/files/patch-src_safe.c | 11 +++ devel/patch/files/patch-tests_bad-filenames | 14 ++++ devel/patch/files/patch-tests_read-only-files | 11 +++ 8 files changed, 97 insertions(+), 157 deletions(-) diff --git a/devel/patch/Makefile b/devel/patch/Makefile index 306d44745c9c..fde3be88ffac 100644 --- a/devel/patch/Makefile +++ b/devel/patch/Makefile @@ -1,10 +1,7 @@ PORTNAME= patch -PORTVERSION= 2.7.6 -PORTREVISION= 2 +PORTVERSION= 2.8 CATEGORIES= devel -MASTER_SITES= GNU DEBIAN_POOL:dp -DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \ - ${PORTNAME}_${PORTVERSION}-7.debian${EXTRACT_SUFX}:dp +MASTER_SITES= GNU MAINTAINER= danfe@FreeBSD.org COMMENT= GNU patch utility @@ -12,24 +9,32 @@ WWW= https://savannah.gnu.org/projects/patch/ LICENSE= GPLv3+ -EXTRA_PATCHES= ${WRKDIR}/debian/patches/[^0]*.patch \ - ${WRKDIR}/debian/patches/0*.patch -PATCH_STRIP= -p1 - TEST_DEPENDS= bash:shells/bash -USES= cpe charsetfix gmake tar:xz +USES= charsetfix cpe tar:xz GNU_CONFIGURE= yes -GNU_CONFIGURE_MANPREFIX= ${PREFIX}/share CONFIGURE_ARGS= --program-prefix=g CPE_VENDOR= gnu TEST_TARGET= check PLIST_FILES= bin/gpatch share/man/man1/gpatch.1.gz +PORTDOCS= AUTHORS NEWS README + +OPTIONS_DEFINE= DOCS + +.include <bsd.port.options.mk> + +.if ${ARCH} == i386 +CONFIGURE_ARGS+= --disable-year2038 +.endif post-patch: @${REINPLACE_CMD} -e '/^LOG_COMPILER =/,+1s|$$(SHELL)|bash|' \ ${WRKSRC}/tests/Makefile.in +post-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${PORTDOCS:S,^,${WRKSRC}/,} ${STAGEDIR}${DOCSDIR} + .include <bsd.port.mk> diff --git a/devel/patch/distinfo b/devel/patch/distinfo index 040c48268c31..13484191763d 100644 --- a/devel/patch/distinfo +++ b/devel/patch/distinfo @@ -1,5 +1,3 @@ -TIMESTAMP = 1518689812 -SHA256 (patch-2.7.6.tar.xz) = ac610bda97abe0d9f6b7c963255a11dcb196c25e337c61f94e4778d632f1d8fd -SIZE (patch-2.7.6.tar.xz) = 783756 -SHA256 (patch_2.7.6-7.debian.tar.xz) = 7725f30b042d8cf63516e480036e93ca2ff0ce5ad3754db4a4e69d33e96a2624 -SIZE (patch_2.7.6-7.debian.tar.xz) = 15084 +TIMESTAMP = 1743267130 +SHA256 (patch-2.8.tar.xz) = f87cee69eec2b4fcbf60a396b030ad6aa3415f192aa5f7ee84cad5e11f7f5ae3 +SIZE (patch-2.8.tar.xz) = 907208 diff --git a/devel/patch/files/patch-lib__Makefile.in b/devel/patch/files/patch-lib__Makefile.in deleted file mode 100644 index b003f55b4db3..000000000000 --- a/devel/patch/files/patch-lib__Makefile.in +++ /dev/null @@ -1,43 +0,0 @@ ---- ./lib/Makefile.in.orig 2018-02-03 13:33:56 UTC -+++ ./lib/Makefile.in -@@ -1603,7 +1603,7 @@ install-data: install-data-am - uninstall: uninstall-am - - install-am: all-am -- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-data-am - - installcheck: installcheck-am - install-strip: -@@ -1966,11 +1966,11 @@ install-exec-localcharset: all-local - if test $(GLIBC21) = no; then \ - case '$(host_os)' in \ - darwin[56]*) \ -- need_charset_alias=true ;; \ -+ need_charset_alias=false ;; \ - darwin* | cygwin* | mingw* | pw32* | cegcc*) \ - need_charset_alias=false ;; \ - *) \ -- need_charset_alias=true ;; \ -+ need_charset_alias=false ;; \ - esac ; \ - else \ - need_charset_alias=false ; \ -@@ -1978,7 +1978,7 @@ install-exec-localcharset: all-local - if $$need_charset_alias; then \ - $(mkinstalldirs) $(DESTDIR)$(libdir) ; \ - fi ; \ -- if test -f $(charset_alias); then \ -+ if false; then \ - sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \ - $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \ - rm -f $(charset_tmp) ; \ -@@ -1992,7 +1992,7 @@ install-exec-localcharset: all-local - - uninstall-local: uninstall-localcharset - uninstall-localcharset: all-local -- if test -f $(charset_alias); then \ -+ if false; then \ - sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \ - if grep '^# Packages using this file: $$' $(charset_tmp) \ - > /dev/null; then \ diff --git a/devel/patch/files/patch-lib__localcharset.c b/devel/patch/files/patch-lib__localcharset.c deleted file mode 100644 index adc0bc917244..000000000000 --- a/devel/patch/files/patch-lib__localcharset.c +++ /dev/null @@ -1,98 +0,0 @@ ---- ./lib/localcharset.c.orig 2018-02-03 12:42:20 UTC -+++ ./lib/localcharset.c -@@ -129,7 +129,7 @@ get_charset_aliases (void) - cp = charset_aliases; - if (cp == NULL) - { --#if !(defined DARWIN7 || defined VMS || defined WINDOWS_NATIVE || defined __CYGWIN__ || defined OS2) -+#if !(defined DARWIN7 || defined VMS || defined WINDOWS_NATIVE || defined __CYGWIN__ || defined OS2 || defined __FreeBSD__) - char *malloc_dir = NULL; - const char *dir; - const char *base = "charset.alias"; -@@ -259,6 +259,86 @@ get_charset_aliases (void) - - #else - -+# if defined __FreeBSD__ -+ /* To avoid the trouble of installing a file that is shared by many -+ GNU packages -- many packaging systems have problems with this --, -+ simply inline the aliases here. */ -+ cp = "US-ASCII" "\0" "ASCII" "\0" -+ "la_LN.ASCII" "\0" "ASCII" "\0" -+ "lt_LN.ASCII" "\0" "ASCII" "\0" -+ "da_DK.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "da_DK.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "de_AT.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "de_AT.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "de_CH.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "de_CH.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "de_DE.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "de_DE.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "en_AU.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "en_AU.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "en_CA.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "en_CA.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "en_GB.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "en_GB.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "en_US.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "en_US.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "es_ES.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "es_ES.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "fi_FI.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "fi_FI.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "fr_BE.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "fr_BE.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "fr_CA.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "fr_CA.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "fr_CH.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "fr_CH.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "fr_FR.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "fr_FR.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "is_IS.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "is_IS.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "it_CH.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "it_CH.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "it_IT.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "it_IT.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "la_LN.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "la_LN.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "lt_LN.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "lt_LN.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "nl_BE.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "nl_BE.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "nl_NL.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "nl_NL.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "no_NO.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "no_NO.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "pt_PT.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "pt_PT.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "sv_SE.ISO_8859-1" "\0" "ISO-8859-1" "\0" -+ "sv_SE.DIS_8859-15" "\0" "ISO-8859-15" "\0" -+ "cs_CZ.ISO_8859-2" "\0" "ISO-8859-2" "\0" -+ "hr_HR.ISO_8859-2" "\0" "ISO-8859-2" "\0" -+ "hu_HU.ISO_8859-2" "\0" "ISO-8859-2" "\0" -+ "la_LN.ISO_8859-2" "\0" "ISO-8859-2" "\0" -+ "lt_LN.ISO_8859-2" "\0" "ISO-8859-2" "\0" -+ "pl_PL.ISO_8859-2" "\0" "ISO-8859-2" "\0" -+ "sl_SI.ISO_8859-2" "\0" "ISO-8859-2" "\0" -+ "la_LN.ISO_8859-4" "\0" "ISO-8859-4" "\0" -+ "lt_LT.ISO_8859-4" "\0" "ISO-8859-4" "\0" -+ "ru_RU.KOI8-R" "\0" "KOI8-R" "\0" -+ "ru_RU.ISO_8859-5" "\0" "ISO-8859-5" "\0" -+ "ru_RU.CP866" "\0" "CP866" "\0" -+ "ru_SU.KOI8-R" "\0" "KOI8-R" "\0" -+ "ru_SU.ISO_8859-5" "\0" "ISO-8859-5" "\0" -+ "ru_SU.CP866" "\0" "CP866" "\0" -+ "uk_UA.KOI8-U" "\0" "KOI8-U" "\0" -+ "zh_TW.BIG5" "\0" "BIG5" "\0" -+ "zh_TW.Big5" "\0" "BIG5" "\0" -+ "zh_CN.EUC" "\0" "GB2312" "\0" -+ "ja_JP.EUC" "\0" "EUC-JP" "\0" -+ "ja_JP.SJIS" "\0" "SHIFT_JIS" "\0" -+ "ja_JP.Shift_JIS" "\0" "SHIFT_JIS" "\0" -+ "ko_KR.EUC" "\0" "EUC-KR" "\0"; -+# endif -+ - # if defined DARWIN7 - /* To avoid the trouble of installing a file that is shared by many - GNU packages -- many packaging systems have problems with this --, diff --git a/devel/patch/files/patch-src_patch.c b/devel/patch/files/patch-src_patch.c new file mode 100644 index 000000000000..c73213852bd2 --- /dev/null +++ b/devel/patch/files/patch-src_patch.c @@ -0,0 +1,42 @@ +--- src/patch.c.orig 2025-02-27 13:33:25 UTC ++++ src/patch.c +@@ -204,7 +204,10 @@ main (int argc, char **argv) + + init_output (&outstate); + if (outfile) +- outstate.ofp = open_outfile (outfile); ++ { ++ outstate.ofp = open_outfile (outfile); ++ read_only_behavior = RO_IGNORE; ++ } + + /* Make sure we clean up in case of disaster. */ + init_signals (); +@@ -323,7 +326,8 @@ main (int argc, char **argv) + } + } + +- if (read_only_behavior != RO_IGNORE ++ if (! skip_rest_of_patch ++ && read_only_behavior != RO_IGNORE + && ! inerrno && ! S_ISLNK (instat.st_mode) + && safe_access (inname, W_OK) != 0) + { +@@ -616,7 +620,7 @@ main (int argc, char **argv) + struct stat outstat; + + if (stat_file (outname, &outstat) != 0) +- say ("Cannot stat file %s, skipping backup\n", outname); ++ say ("Cannot stat file %s, skipping backup\n", quotearg (outname)); + else + output_file (&(struct outfile) { .name = outname }, + &outstat, nullptr, nullptr, +@@ -750,7 +754,7 @@ reinitialize_almost_everything (void) + } + + static char const shortopts[] = "bB:cd:D:eEfF:g:i:l" +-#if 0 && defined ENABLE_MERGE ++#if defined ENABLE_MERGE + "m" + #endif + "nNo:p:r:RstTuvV:x:Y:z:Z"; diff --git a/devel/patch/files/patch-src_safe.c b/devel/patch/files/patch-src_safe.c new file mode 100644 index 000000000000..30c727e8bb69 --- /dev/null +++ b/devel/patch/files/patch-src_safe.c @@ -0,0 +1,11 @@ +--- src/safe.c.orig 2025-02-27 13:33:25 UTC ++++ src/safe.c +@@ -571,6 +571,8 @@ safe_xstat (char *pathname, struct stat *buf, int flag + int dirfd = traverse_path (&pathname, false); + if (dirfd == DIRFD_INVALID) + return -1; ++ if (! strcmp (pathname, "")) ++ return EINVAL; + return fstatat (dirfd, pathname, buf, flags); + } + diff --git a/devel/patch/files/patch-tests_bad-filenames b/devel/patch/files/patch-tests_bad-filenames new file mode 100644 index 000000000000..717200056ce7 --- /dev/null +++ b/devel/patch/files/patch-tests_bad-filenames @@ -0,0 +1,14 @@ +--- tests/bad-filenames.orig 2025-02-27 13:33:25 UTC ++++ tests/bad-filenames +@@ -200,3 +200,11 @@ No file to patch. Skipping patch. + 1 out of 1 hunk ignored + status: 1 + EOF ++ ++# Empty filenames are not allowed: ++ ++check 'emit_patch f | patch -r- "" || echo status: $?' <<EOF ++File '' is not a regular file -- refusing to patch ++1 out of 1 hunk ignored ++status: 1 ++EOF diff --git a/devel/patch/files/patch-tests_read-only-files b/devel/patch/files/patch-tests_read-only-files new file mode 100644 index 000000000000..85fa9b528356 --- /dev/null +++ b/devel/patch/files/patch-tests_read-only-files @@ -0,0 +1,11 @@ +--- tests/read-only-files.orig 2025-02-27 13:33:25 UTC ++++ tests/read-only-files +@@ -67,3 +67,8 @@ check 'patch -f -p0 --read-only=ignore < f.diff || ech + patching file f + patching file f + EOF ++ ++check 'patch -o - f /dev/null || echo "Status: $?"' <<EOF ++patching file - (read from f) ++three ++EOFhome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69b0c5f6.237d3.5aa958e2>
