diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..667432d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/mandoc-1.14.4.tar.gz diff --git a/mandoc-install-hdr.patch b/mandoc-install-hdr.patch new file mode 100644 index 0000000..97ff89a --- /dev/null +++ b/mandoc-install-hdr.patch @@ -0,0 +1,39 @@ +diff -purN mandoc-1.14.4.orig/Makefile mandoc-1.14.4/Makefile +--- mandoc-1.14.4.orig/Makefile 2019-02-07 12:03:35.614493086 -0500 ++++ mandoc-1.14.4/Makefile 2019-02-07 12:04:04.825552194 -0500 +@@ -430,7 +430,7 @@ lib-install: libmandoc.so.$(SOVERSION) + $(INSTALL_LIB) libmandoc.so.$(SOVERSION) $(DESTDIR)$(LIBDIR) + ln -s libmandoc.so.$(SOVERSION) $(DESTDIR)$(LIBDIR)/libmandoc.so.$(SOMAJOR) + ln -s libmandoc.so.$(SOVERSION) $(DESTDIR)$(LIBDIR)/libmandoc.so +- $(INSTALL_LIB) man.h mandoc.h mandoc_aux.h mdoc.h roff.h \ ++ $(INSTALL_HDR) man.h mandoc.h mandoc_aux.h mdoc.h roff.h \ + $(DESTDIR)$(INCLUDEDIR) + $(INSTALL_MAN) mandoc.3 mandoc_escape.3 mandoc_malloc.3 \ + mansearch.3 mchars_alloc.3 tbl.3 $(DESTDIR)$(MANDIR)/man3 +diff -purN mandoc-1.14.4.orig/configure mandoc-1.14.4/configure +--- mandoc-1.14.4.orig/configure 2018-08-08 10:51:51.000000000 -0400 ++++ mandoc-1.14.4/configure 2019-02-07 12:04:04.826552196 -0500 +@@ -119,6 +119,7 @@ MANM_TBL="tbl" + INSTALL="install" + INSTALL_PROGRAM= + INSTALL_LIB= ++INSTALL_HDR= + INSTALL_MAN= + INSTALL_DATA= + LN="ln -f" +@@ -523,6 +524,7 @@ exec > Makefile.local + + [ -z "${INSTALL_PROGRAM}" ] && INSTALL_PROGRAM="${INSTALL} -m 0555" + [ -z "${INSTALL_LIB}" ] && INSTALL_LIB="${INSTALL} -m 0444" ++[ -z "${INSTALL_HDR}" ] && INSTALL_HDR="${INSTALL} -m 0444" + [ -z "${INSTALL_MAN}" ] && INSTALL_MAN="${INSTALL} -m 0444" + [ -z "${INSTALL_DATA}" ] && INSTALL_DATA="${INSTALL} -m 0444" + +@@ -569,6 +571,7 @@ MANM_TBL = ${MANM_TBL} + INSTALL = ${INSTALL} + INSTALL_PROGRAM = ${INSTALL_PROGRAM} + INSTALL_LIB = ${INSTALL_LIB} ++INSTALL_HDR = ${INSTALL_HDR} + INSTALL_MAN = ${INSTALL_MAN} + INSTALL_DATA = ${INSTALL_DATA} + LN = ${LN} diff --git a/mandoc-shared-library.patch b/mandoc-shared-library.patch new file mode 100644 index 0000000..73a8a54 --- /dev/null +++ b/mandoc-shared-library.patch @@ -0,0 +1,104 @@ +diff -purN mandoc-1.14.4.orig/Makefile mandoc-1.14.4/Makefile +--- mandoc-1.14.4.orig/Makefile 2018-08-08 10:51:51.000000000 -0400 ++++ mandoc-1.14.4/Makefile 2019-02-07 12:23:55.743962101 -0500 +@@ -17,6 +17,10 @@ + + VERSION = 1.14.4 + ++# version for the shared object file ++SOMAJOR = 1 ++SOVERSION = $(SOMAJOR).0 ++ + # === LIST OF FILES ==================================================== + + TESTSRCS = test-be32toh.c \ +@@ -357,7 +361,7 @@ include Makefile.local + + # === DEPENDENCY HANDLING ============================================== + +-all: mandoc demandoc soelim $(BUILD_TARGETS) Makefile.local ++all: mandoc demandoc soelim $(BUILD_TARGETS) Makefile.local libmandoc.so.$(SOMAJOR) + + install: base-install $(INSTALL_TARGETS) + +@@ -372,11 +376,15 @@ include Makefile.depend + + # === TARGETS CONTAINING SHELL COMMANDS ================================ + ++LIBMANDOC_PIC_OBJS = $(COMPAT_OBJS:.o=.pic.o) $(LIBMANDOC_OBJS:.o=.pic.o) ++%.pic.o: %.c ++ $(CC) -c $(CFLAGS) $(CPPFLAGS) -fPIC $< -o $@ ++ + distclean: clean + rm -f Makefile.local config.h config.h.old config.log config.log.old + + clean: +- rm -f libmandoc.a $(LIBMANDOC_OBJS) $(COMPAT_OBJS) ++ rm -f libmandoc.a libmandoc.so.$(SOVERSION) $(LIBMANDOC_OBJS) $(LIBMANDOC_PIC_OBJS) $(COMPAT_OBJS) + rm -f mandoc $(MAIN_OBJS) + rm -f man.cgi $(CGI_OBJS) + rm -f mandocd catman catman.o $(MANDOCD_OBJS) +@@ -415,11 +423,13 @@ base-install: mandoc demandoc soelim + $(INSTALL_MAN) makewhatis.8 \ + $(DESTDIR)$(MANDIR)/man8/$(BINM_MAKEWHATIS).8 + +-lib-install: libmandoc.a ++lib-install: libmandoc.so.$(SOVERSION) + mkdir -p $(DESTDIR)$(LIBDIR) + mkdir -p $(DESTDIR)$(INCLUDEDIR) + mkdir -p $(DESTDIR)$(MANDIR)/man3 +- $(INSTALL_LIB) libmandoc.a $(DESTDIR)$(LIBDIR) ++ $(INSTALL_LIB) libmandoc.so.$(SOVERSION) $(DESTDIR)$(LIBDIR) ++ ln -s libmandoc.so.$(SOVERSION) $(DESTDIR)$(LIBDIR)/libmandoc.so.$(SOMAJOR) ++ ln -s libmandoc.so.$(SOVERSION) $(DESTDIR)$(LIBDIR)/libmandoc.so + $(INSTALL_LIB) man.h mandoc.h mandoc_aux.h mdoc.h roff.h \ + $(DESTDIR)$(INCLUDEDIR) + $(INSTALL_MAN) mandoc.3 mandoc_escape.3 mandoc_malloc.3 \ +@@ -468,7 +478,8 @@ uninstall: + rm -f $(DESTDIR)$(SBINDIR)/$(BINM_CATMAN) + rm -f $(DESTDIR)$(MANDIR)/man8/mandocd.8 + rm -f $(DESTDIR)$(MANDIR)/man8/$(BINM_CATMAN).8 +- rm -f $(DESTDIR)$(LIBDIR)/libmandoc.a ++ rm -f $(DESTDIR)$(LIBDIR)/libmandoc.so.$(SOVERSION) ++ rm -f $(DESTDIR)$(LIBDIR)/libmandoc.so + rm -f $(DESTDIR)$(MANDIR)/man3/mandoc.3 + rm -f $(DESTDIR)$(MANDIR)/man3/mandoc_escape.3 + rm -f $(DESTDIR)$(MANDIR)/man3/mandoc_malloc.3 +@@ -495,20 +506,29 @@ Makefile.local config.h: configure $(TES + libmandoc.a: $(COMPAT_OBJS) $(LIBMANDOC_OBJS) + ar rs $@ $(COMPAT_OBJS) $(LIBMANDOC_OBJS) + +-mandoc: $(MAIN_OBJS) libmandoc.a +- $(CC) -o $@ $(LDFLAGS) $(MAIN_OBJS) libmandoc.a $(LDADD) ++libmandoc.so.$(SOVERSION): $(LIBMANDOC_PIC_OBJS) ++ $(CC) -shared -Wl,-soname=libmandoc.so.$(SOMAJOR) -o $@ $(LIBMANDOC_PIC_OBJS) ++ ++libmandoc.so.$(SOMAJOR): libmandoc.so.$(SOVERSION) ++ ln -sf libmandoc.so.$(SOVERSION) libmandoc.so.$(SOMAJOR) ++ ++libmandoc.so: libmandoc.so.$(SOVERSION) ++ ln -sf libmandoc.so.$(SOVERSION) libmandoc.so ++ ++mandoc: $(MAIN_OBJS) libmandoc.so ++ $(CC) -o $@ -L. -lmandoc $(LDFLAGS) $(MAIN_OBJS) $(LDADD) + + man.cgi: $(CGI_OBJS) libmandoc.a + $(CC) $(STATIC) -o $@ $(LDFLAGS) $(CGI_OBJS) libmandoc.a $(LDADD) + +-mandocd: $(MANDOCD_OBJS) libmandoc.a +- $(CC) -o $@ $(LDFLAGS) $(MANDOCD_OBJS) libmandoc.a $(LDADD) ++mandocd: $(MANDOCD_OBJS) libmandoc.so ++ $(CC) -o $@ -L. -lmandoc $(LDFLAGS) $(MANDOCD_OBJS) $(LDADD) + +-catman: catman.o libmandoc.a +- $(CC) -o $@ $(LDFLAGS) catman.o libmandoc.a $(LDADD) ++catman: catman.o libmandoc.so ++ $(CC) -o $@ -L. -lmandoc $(LDFLAGS) catman.o $(LDADD) + +-demandoc: $(DEMANDOC_OBJS) libmandoc.a +- $(CC) -o $@ $(LDFLAGS) $(DEMANDOC_OBJS) libmandoc.a $(LDADD) ++demandoc: $(DEMANDOC_OBJS) libmandoc.so ++ $(CC) -o $@ -L. -lmandoc $(LDFLAGS) $(DEMANDOC_OBJS) $(LDADD) + + soelim: $(SOELIM_OBJS) + $(CC) -o $@ $(LDFLAGS) $(SOELIM_OBJS) diff --git a/mandoc.spec b/mandoc.spec new file mode 100644 index 0000000..61be7f5 --- /dev/null +++ b/mandoc.spec @@ -0,0 +1,143 @@ +Name: mandoc +Version: 1.14.4 +Release: 1%{?dist} +Summary: A suite of tools for compiling mdoc and man + +License: ISC +URL: https://mandoc.bsd.lv/ +Source0: https://mandoc.bsd.lv/snapshots/mandoc-%{version}.tar.gz +Patch0: mandoc-shared-library.patch + +# Separate the commands for installing libraries and headers +Patch1: mandoc-install-hdr.patch + +BuildRequires: gcc +BuildRequires: make +BuildRequires: zlib-devel + +# requirements for %%check +BuildRequires: perl(IPC::Open3) + +Requires: libmandoc%{?_isa} = %{version}-%{release} + +%description +mandoc is a suite of tools compiling mdoc, the roff macro language of choice +for BSD manual pages, and man, the predominant historical language for UNIX +manuals. It is small, ISO C, ISC-licensed, and quite fast. The main component +of the toolset is the mandoc utility program, based on the libmandoc validating +compiler, to format output for UTF-8 and ASCII UNIX terminals, HTML 5, +PostScript, and PDF. + +%package -n libmandoc +Summary: A validating compiler for mdoc and man + +%description -n libmandoc +The mandoc library parses a UNIX manual into an abstract syntax tree (AST). +UNIX manuals are composed of mdoc(7) or man(7), and may be mixed with roff(7), +tbl(7), and eqn(7) invocations. + +%package -n libmandoc-devel +Summary: Development libraries and headers for libmandoc +Requires: libmandoc%{?_isa} = %{version}-%{release} + +%description -n libmandoc-devel +The mandoc library parses a UNIX manual into an abstract syntax tree (AST). +UNIX manuals are composed of mdoc(7) or man(7), and may be mixed with roff(7), +tbl(7), and eqn(7) invocations. + +%prep +%autosetup -p1 + +%build +# NB: not an autoconf script +# settings are read in through configure.local +echo 'PREFIX=%{_prefix}' > configure.local +echo 'BINDIR=%{_bindir}' >> configure.local +echo 'SBINDIR=%{_sbindir}' >> configure.local +echo 'MANDIR=%{_mandir}' >> configure.local +echo 'INCLUDEDIR=%{_includedir}' >> configure.local +echo 'LIBDIR=%{_libdir}' >> configure.local + +# with default settings rpmlint complains about cross-directory hardlinks +echo 'LN="ln -sf"' >> configure.local + +# change the names of binaries, conf files, and section 7 man pages +# to avoid conflicts with man-db and groff +echo 'MANM_MANCONF=mandoc.conf' >> configure.local +echo 'MANM_MAN=mandoc_man' >> configure.local +echo 'BINM_MAN=mman' >> configure.local +echo 'BINM_APROPOS=mapropos' >> configure.local +echo 'BINM_WHATIS=mwhatis' >> configure.local +echo 'BINM_MAKEWHATIS=mandocdb' >> configure.local +echo 'BINM_SOELIM=msoelim' >> configure.local + +# override the install permissions so that owner-write bits are set, +# so rpmbuild can do whatever modifications it does post-%%install +echo 'INSTALL_PROGRAM="${INSTALL} -m 0755"' >> configure.local +echo 'INSTALL_LIB="${INSTALL} -m 0755"' >> configure.local +echo 'INSTALL_HDR="${INSTALL} -m 0644"' >> configure.local +echo 'INSTALL_MAN="${INSTALL} -m 0644"' >> configure.local +echo 'INSTALL_DATA="${INSTALL} -m 0644"' >> configure.local + +echo 'INSTALL_LIBMANDOC=1' >> configure.local + +echo 'CFLAGS="%{optflags}"' >> configure.local +./configure +make %{?_smp_mflags} + +%install +%make_install + +%check +env LD_LIBRARY_PATH="$PWD" make regress + +%ldconfig_scriptlets -n libmandoc + +%files +%license LICENSE +%{_bindir}/demandoc +%{_bindir}/mandoc +%{_bindir}/mapropos +%{_bindir}/mman +%{_bindir}/msoelim +%{_bindir}/mwhatis +%{_sbindir}/mandocdb +%{_mandir}/man1/demandoc.1* +%{_mandir}/man1/mandoc.1* +%{_mandir}/man1/mapropos.1* +%{_mandir}/man1/mman.1* +%{_mandir}/man1/msoelim.1* +%{_mandir}/man1/mwhatis.1* +%{_mandir}/man5/mandoc.conf.5* +%{_mandir}/man5/mandoc.db.5* +%{_mandir}/man7/eqn.7* +%{_mandir}/man7/mandoc_char.7* +%{_mandir}/man7/mandoc_man.7* +%{_mandir}/man7/mdoc.7* +%{_mandir}/man7/roff.7* +%{_mandir}/man7/tbl.7* +%{_mandir}/man8/mandocdb.8* + +%files -n libmandoc +%license LICENSE +%{_libdir}/libmandoc.so.1.0 +%{_libdir}/libmandoc.so.1 + +%files -n libmandoc-devel +%license LICENSE +%{_libdir}/libmandoc.so +%{_includedir}/man.h +%{_includedir}/mandoc.h +%{_includedir}/mandoc_aux.h +%{_includedir}/mdoc.h +%{_includedir}/roff.h +%{_mandir}/man3/mandoc.3* +%{_mandir}/man3/mandoc_escape.3* +%{_mandir}/man3/mandoc_malloc.3* +%{_mandir}/man3/mansearch.3* +%{_mandir}/man3/mchars_alloc.3* +%{_mandir}/man3/tbl.3* + +%changelog +* Thu Feb 7 2019 David Shea - 1.14.4-1 +- Initial package diff --git a/sources b/sources new file mode 100644 index 0000000..075b7ca --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (mandoc-1.14.4.tar.gz) = c68390711a739284ad9a61364f3fea76c0c48c02b4830d6326b07c4188d099e3720ae3b91fc3b083269381b417b7e3f3647d13a54ed2548f8c2f94122f8a7d97