diff --git a/mandoc-1.14.5-dummy.diff b/mandoc-1.14.5-dummy.diff new file mode 100644 index 0000000..ba9a227 --- /dev/null +++ b/mandoc-1.14.5-dummy.diff @@ -0,0 +1,26 @@ +Index: mandoc-1.14.5/compat_getline.c +=================================================================== +--- mandoc-1.14.5.orig/compat_getline.c ++++ mandoc-1.14.5/compat_getline.c +@@ -2,7 +2,7 @@ + + #if HAVE_GETLINE + +-int dummy; ++static int dummy; + + #else + +Index: mandoc-1.14.5/compat_reallocarray.c +=================================================================== +--- mandoc-1.14.5.orig/compat_reallocarray.c ++++ mandoc-1.14.5/compat_reallocarray.c +@@ -2,7 +2,7 @@ + + #if HAVE_REALLOCARRAY + +-int dummy; ++static int dummy; + + #else + diff --git a/mandoc.changes b/mandoc.changes index 9f2c3f2..7025f22 100644 --- a/mandoc.changes +++ b/mandoc.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Tue Sep 22 15:12:55 UTC 2020 - Ludwig Nussel + +- fix build fail (mandoc-1.14.5-dummy.diff) +- switch to using rpm.execute() as rpm 4.15 is now available +- tweak trigger scripts to handle missing files better (boo#1176194) + There is no perfect solution though + https://github.com/rpm-software-management/rpm/issues/1370 +- make triggers more verbose if VERBOSE_FILETRIGGERS is set + ------------------------------------------------------------------- Mon Feb 10 18:46:58 CET 2020 - Matej Cepl diff --git a/mandoc.spec b/mandoc.spec index eb77bd4..292bf0b 100644 --- a/mandoc.spec +++ b/mandoc.spec @@ -19,6 +19,7 @@ Name: mandoc Version: 1.14.5 Release: 0 +%define nvr %{name}-%{version}-%{release} Summary: UNIX manpage compiler License: ISC Group: Productivity/Publishing/Troff @@ -27,12 +28,16 @@ Source: http://mandoc.bsd.lv/snapshots/mandoc-%{version}.tar.gz # PATCH-FEATURE-UPSTREAM empty_w-manpath.patch gh#neovim/neovim#11794 mcepl@suse.com # Add man -w producing manpath (among many other things) Patch0: 1.14.5-master.patch +# PATCH-FIX-openSUSE looks like newer gcc doesn't like those duplicated dummy variables lnussel@suse.com +Patch1: mandoc-1.14.5-dummy.diff BuildRequires: zlib-devel Provides: man = %{version} Conflicts: man Conflicts: groff Conflicts: groff-full Conflicts: makewhat +# file triggers use rpm.execute() +Conflicts: rpm < 4.15 %description The mandoc manpage compiler toolset (formerly called "mdocml") @@ -66,56 +71,54 @@ mv -fv %{_tmppath}/apropos %{buildroot}%{_sbindir}/makewhatis %{_sbindir}/makewhatis %filetriggerin -p -- %{_mandir} --- TODO: replace with rpm.execute after rpm 4.15 -function execute(path, ...) - local pid = posix.fork() - if pid == 0 then - posix.exec(path, ...) - io.write(path, ": exec failed: ", posix.errno(), "\n") - os.exit(1) - end - if not pid then - error(path .. ": fork failed: " .. posix.errno() .. "\n") - end - posix.wait(pid) -end --- -- no point registering individual files if we can call -- makewhatis in %%post to catch all if +if posix.getenv("VERBOSE_FILETRIGGERS") then + print("%{nvr}: running file install trigger") +end if posix.access("%{_mandir}/mandoc.db") then file = rpm.next_file() while file do if string.match(file, "%{_mandir}/man[^/]+/[^/]+%{?ext_man}$") then - execute("%{_sbindir}/makewhatis", "-d", "%{_mandir}", file) + if posix.access(file) then + if posix.getenv("VERBOSE_FILETRIGGERS") then + print("%{nvr}: adding " .. file) + end + rpm.execute("%{_sbindir}/makewhatis", "-d", "%{_mandir}", file) + else + io.stderr:write("%{nvr}: missing " .. file .. "\n") + end end file = rpm.next_file() end +elseif posix.getenv("VERBOSE_FILETRIGGERS") then + print("%{nvr}: missing mandoc.db, skipped") end +io.flush() %filetriggerun -p -- %{_mandir} --- TODO: replace with rpm.execute after rpm 4.15 -function execute(path, ...) - local pid = posix.fork() - if pid == 0 then - posix.exec(path, ...) - io.write(path, ": exec failed: ", posix.errno(), "\n") - os.exit(1) - end - if not pid then - error(path .. ": fork failed: " .. posix.errno() .. "\n") - end - posix.wait(pid) +if posix.getenv("VERBOSE_FILETRIGGERS") then + print("%{nvr}: running file remove trigger") end --- if posix.access("%{_mandir}/mandoc.db") then file = rpm.next_file() while file do if string.match(file, "%{_mandir}/man[^/]+/[^/]+%{?ext_man}$") then - execute("%{_sbindir}/makewhatis", "-u", "%{_mandir}", file) + if posix.access(file) then + if posix.getenv("VERBOSE_FILETRIGGERS") then + print("%{nvr}: removing " .. file) + end + rpm.execute("%{_sbindir}/makewhatis", "-u", "%{_mandir}", file) + else + io.stderr:write("%{nvr}: missing " .. file .. "\n") + end end file = rpm.next_file() end +elseif posix.getenv("VERBOSE_FILETRIGGERS") then + print("%{nvr}: missing mandoc.db, skipped") end +io.flush() %files %license LICENSE