aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRobin Haberkorn <rhaberkorn@fmsbw.de>2025-12-31 18:55:49 +0300
committerRobin Haberkorn <rhaberkorn@fmsbw.de>2025-12-31 22:55:47 +0300
commitbcba0ef4486eb9baec3cd4d17250b91e1c8a7f79 (patch)
tree396a23561b8f177552b54e95cfda5ac4d8dd8370
parent2d0c67e2e4d705276171e67aa81da8bf90b4d7d0 (diff)
no longer touch installed files at install-time
* hash-bang lines in grosciteco.tes and tedoc.tes are fixed up at build time instead of install-time (via install-exec-hook). * This will hopefully resolve problems with the FreeBSD port, since Poudriere installs the package as non-root but with BINMODE=555. The alternative would have been to set BINMODE=755 in the port which may not be acceptible by the official port committer. Anyway, I decided to go out of the way of any conflicts. See also https://bugs.freebsd.org/bugzilla/show_bug.cgi?format=multiple&id=283601 * On the downside, this will break install-path overrides at install-time (e.g. `make install bindir=...`).
-rw-r--r--INSTALL3
-rw-r--r--doc/Makefile.am58
-rwxr-xr-xdoc/grosciteco.tes.in (renamed from doc/grosciteco.tes)0
-rwxr-xr-xdoc/tedoc.tes.in (renamed from doc/tedoc.tes)0
-rw-r--r--freebsd/Makefile4
5 files changed, 26 insertions, 39 deletions
diff --git a/INSTALL b/INSTALL
index 40e0795..5450e6e 100644
--- a/INSTALL
+++ b/INSTALL
@@ -140,6 +140,9 @@ To install SciTECO, type something like:
$ sudo make install
+Overwriting installation directories at install-time (make install bindir=...)
+is not supported.
+
You are recommended to use the included "fallback.teco_ini" as a starting
point for your profile. On UNIX, you can copy it to your $HOME directory
at "~/.teco_ini" while on Windows, it should be in the same directory
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 8ac9fad..9c83eee 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -7,21 +7,20 @@ include $(top_srcdir)/bootstrap.am
# code.
# It generates Troff manpage markup and acts as a Troff
# preprocessor to manpage templates.
-dist_bin_SCRIPTS = tedoc.tes
-
-# Name of tedoc.tes after installation, taking --program-prefix
-# into account.
-TEDOC_INSTALLED = \
- $(bindir)/`echo tedoc.tes | @SED@ '$(transform)'`
+bin_SCRIPTS = tedoc.tes
+CLEANFILES = tedoc.tes
+dist_noinst_SCRIPTS = tedoc.tes.in
%.in : %.template tedoc.tes @top_srcdir@/src/*.c
- $(SCITECO_FULL) -m -- @srcdir@/tedoc.tes \
+ $(SCITECO_FULL) -m -- tedoc.tes \
-C $@ $< @top_srcdir@/src/*.c
# grosciteco is a troff postprocessor similar to grotty
# which can be used to produce SciTECO-friendly output
# (woman pages).
-dist_bin_SCRIPTS += grosciteco.tes
+bin_SCRIPTS += grosciteco.tes
+CLEANFILES += grosciteco.tes
+dist_noinst_SCRIPTS += grosciteco.tes.in
# grosciteco, like many other postprocessors, works
# best with its own macro package.
# Unfortunately, there is no way to query the built-in
@@ -32,34 +31,23 @@ dist_bin_SCRIPTS += grosciteco.tes
# the directory via `groff -M`.
dist_scitecodata_DATA = sciteco.tmac
-# Name of grosciteco.tes after installation, taking --program-prefix
-# into account.
-GROSCITECO_INSTALLED = \
- $(bindir)/`echo grosciteco.tes | @SED@ '$(transform)'`
-
-# Fix up the hash-bang line of installed SciTECO scripts upon
-# installation to refer to the installed sciteco binary.
-# This takes --program-prefix into account.
-# This wouldn't work on Windows since SciTECO cannot open
-# the /mingw64 paths.
-#
-# FIXME: This will patch the hash-bang line repeatedly.
-# Perhaps it would be better to do that using a preprocessing
-# step before installation - see the known problems that this
-# is causing on FreeBSD/Poudriere.
-if !WIN32
-install-exec-hook:
- $(SCITECO_FULL) -e "<%i^[ :Q[^A^E\\i]:; @EB'^EN[^A^E\\i]' \
- 0,^Q::@FR'#!^EM^Xsciteco'#!$(SCITECO_INSTALLED)'> \
- :EX" \
- $(DESTDIR)$(GROSCITECO_INSTALLED) \
- $(DESTDIR)$(TEDOC_INSTALLED)
-endif
+# Fix up the hash-bang line of installed SciTECO scripts.
+# This takes --prefix and --program-prefix into account.
+# On the other hand, since this is run at build time,
+# it breaks bindir-overwriting at `make install` time,
+# which could only be made to work with an install-exec-hook.
+# Patching installed scripts however broke the FreeBSD port
+# builds with Poudriere where BINMODE=555 is set.
+# It was therefore decided to sacrifice the rarely used
+# `make install bindir=...` and appease the FreeBSD port
+# committers instead.
+%.tes : %.tes.in
+ $(SCITECO_FULL) -qioe "0,^Q::@FR'#\!^EM^Xsciteco'#\!$(SCITECO_INSTALLED)'" <$< >$@
womendir = $(scitecolibdir)/women
women_DATA = grosciteco.tes.1.woman grosciteco.tes.1.woman.tec
-CLEANFILES = grosciteco.tes.1
+CLEANFILES += grosciteco.tes.1
EXTRA_DIST = grosciteco.tes.1.in
women_DATA += tedoc.tes.1.woman tedoc.tes.1.woman.tec
@@ -86,15 +74,15 @@ CLEANFILES += $(women_DATA)
%.woman : % sciteco.tmac grosciteco.tes
@GROFF@ @GROFF_FLAGS@ -wall -Z -Tutf8 -t -man -M@srcdir@ -msciteco $< | \
- $(SCITECO_FULL) -im -- @srcdir@/grosciteco.tes $@
+ $(SCITECO_FULL) -im -- grosciteco.tes $@
tutorial.woman : tutorial.ms sciteco.tmac grosciteco.tes
@GROFF@ @GROFF_FLAGS@ -wall -Z -Tutf8 -t -ms -M@srcdir@ -msciteco $< | \
- $(SCITECO_FULL) -im -- @srcdir@/grosciteco.tes $@
+ $(SCITECO_FULL) -im -- grosciteco.tes $@
man_MANS = grosciteco.tes.1 tedoc.tes.1 sciteco.1 sciteco.7
-dist_noinst_SCRIPTS = htbl.tes
+dist_noinst_SCRIPTS += htbl.tes
if BUILD_HTMLDOCS
html_DATA = grosciteco.tes.1.html tedoc.tes.1.html \
diff --git a/doc/grosciteco.tes b/doc/grosciteco.tes.in
index c4f16e1..c4f16e1 100755
--- a/doc/grosciteco.tes
+++ b/doc/grosciteco.tes.in
diff --git a/doc/tedoc.tes b/doc/tedoc.tes.in
index cc4f726..cc4f726 100755
--- a/doc/tedoc.tes
+++ b/doc/tedoc.tes.in
diff --git a/freebsd/Makefile b/freebsd/Makefile
index f4f0423..b182771 100644
--- a/freebsd/Makefile
+++ b/freebsd/Makefile
@@ -33,10 +33,6 @@ CONFIGURE_OUTSOURCE= yes
MAKEFILE= GNUmakefile
TEST_TARGET= check
-# SciTECO uses an install-exec-hook to fix up hash-bang lines.
-# This is broken by the default 0555 mode.
-BINMODE= 755
-
# NOTE: Unlike on Debian, we cannot build a sciteco-common package.
# FreeBSD does not yet support subpackages.
# Therefore both flavors will install totally independant