Hi
I ran into a couple of issues when installing gprolog-1.5.0:
1. the wildcard character ("*") is not expanded when linking binaries.
Links in $(INSTALL_DIR)/bin are created as:
$(LN_S) $(INSTALL_DIR)/bin/* .
make won't expand *. (See the pitfalls of using wildcards in make [1]).
For example, installing gprolog on Gentoo Linux via a controlled
sandbox:
(cd /var/tmp/portage/dev-lang/gprolog-1.5.0/image//usr/bin ; ln -s
-f /var/tmp/portage/dev-lang/gprolog-1.5.0/image//usr/lib64/gprolog-
1.5.0/bin/* .);
...
* QA Notice: Symbolic link /usr/bin/* points to /usr/lib64/gprolog-
1.5.0/bin/* which does not exist
>>> /usr/bin/* -> /usr/lib64/gprolog-1.5.0/bin/*
Instead the "wildcard" make function can be used for this purpose:
$(LN_S) $(wildcard $(INSTALL_DIR)/bin/*) .
Another alternative is to use:
for i in $(BIN_FILES); do $(LN_S) $(INSTALL_DIR)/bin/$$i .; done
2. the install-links rule may run too early
The rule refers to $(INSTALL_DIR)/bin/*. During a parallel make
install-links may run at the same time as install-system, leading to
$(wildcard $(INSTALL_DIR)/bin/*) being partially expanded or even
expanded to nothing. For example:
(cd /var/tmp/portage/dev-lang/gprolog-1.5.0/image//usr/bin ; ln -s
-f .);
...
ln: ./.: cannot overwrite directory
make: *** [Makefile:88: install-links] Error 1
I've attached the patch I'm using on Gentoo Linux.
Thanks
Keri
[1]
https://www.gnu.org/software/make/manual/html_node/Wildcard-Pitfall.html#Wildcard-Pitfall
--- gprolog-1.5.0.orig/src/Makefile.in 2021-07-07 16:06:16.000000000 -0000
+++ gprolog-1.5.0/src/Makefile.in 2021-07-10 11:30:29.130370996 -0000
@@ -84,10 +84,10 @@
# --- Links --- #
-install-links: uninstall-links
+install-links: install-system uninstall-links
if test $(LINKS_DIR) != none; then \
./mkinstalldirs $(LINKS_DIR); \
- (cd $(LINKS_DIR) ; $(LN_S) $(INSTALL_DIR)/bin/* .); \
+ (cd $(LINKS_DIR) ; $(LN_S) $(wildcard $(INSTALL_DIR)/bin/*) .); \
fi
uninstall-links: