summaryrefslogtreecommitdiff
path: root/doc/bugs/Use_install__40__1__41___instead_of_cp__40__1__41___for_installing_files.mdwn
blob: 12c0ad07fa12e30e4add15b5ee6c57f3f701f817 (plain)

Currently ikiwiki uses cp(1) with GNU extensions in Makefile.PL for installing files, thus causing problems on FreeBSD which doesn't have a cp(1) with GNU extensions in the base system.

Here is a patch against ikiwiki-1.51 for using find(1) and install(1) instead of cp(1).

--- Makefile.PL.orig	Sun Apr 29 12:57:51 2007
+++ Makefile.PL	Sun Apr 29 13:08:38 2007
@@ -47,8 +47,12 @@ extra_clean:
 
 extra_install:
 	install -d $(DESTDIR)$(PREFIX)/share/ikiwiki
-	find basewiki templates \( -type f -or -type l \) ! -regex '.*\.svn.*' \
-		-exec cp --parents -aL {} $(DESTDIR)$(PREFIX)/share/ikiwiki \;
+	for dir in `find -L basewiki templates -type d ! -regex '.*\.svn.*'`; do \
+		install -d $(DESTDIR)$(PREFIX)/share/ikiwiki/$$dir; \
+		for file in `find -L $$dir -maxdepth 1 -type f`; do \
+			install -m 644 $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/$$dir; \
+		done; \
+	done
 
 	install -d $(DESTDIR)$(PREFIX)/share/man/man1
 	install -m 644 ikiwiki.man $(DESTDIR)$(PREFIX)/share/man/man1/ikiwiki.1

Couldn't it just use install -D ? --[[Joey]]

No, apparently FreeBSD install does not support -D. See the FreeBSD install manpage. --[[JoshTriplett]]

Patch applied; [[done]]. --[[JoshTriplett]]

There are still/again "cp -a"s in the Makefile as of 3.00

It's a cp -a || install. Is that causing you a problem somehow? --[[Joey]]