X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/15424d405b8736fa2568c12f7cfca94f34dcf07a..8439d20684421388ddee7d7521e64b7257291996:/doc/bugs/Please_avoid_using___39__cp_-a__39___in_Makefile.PL.mdwn diff --git a/doc/bugs/Please_avoid_using___39__cp_-a__39___in_Makefile.PL.mdwn b/doc/bugs/Please_avoid_using___39__cp_-a__39___in_Makefile.PL.mdwn index 5f556783b..8a83081c3 100644 --- a/doc/bugs/Please_avoid_using___39__cp_-a__39___in_Makefile.PL.mdwn +++ b/doc/bugs/Please_avoid_using___39__cp_-a__39___in_Makefile.PL.mdwn @@ -12,3 +12,66 @@ The change in question (from 2.56 to 2.60) can be seen here: Please restore the old behaviour of using 'install' :-) -- [[HenrikBrixAndersen]] + +> I use cp -a because I don't want non-executable files to be installed +> executable. (Causes breakage with setup file creation code) I really +> wish *BSD could get out of the 70's in this area.. +> --[[Joey]] + +>> Well, really what's happening here is that *BSD (along with, for +>> example, Solaris) is adhering rather closely to the Single UNIX +>> Specification, whereas `-a` is a nonstandard option added to the +>> GNU variant of `cp` (a habit Richard Stallman never really got under +>> control). To install ikiwiki on Solaris I had to replace all uses not +>> only of `cp` but also of `install` and `xgettext` with the GNU +>> embrace-and-extend variants, and make sure I had those installed. +>> That really is a bit of a PITA. + +>> I think there's an opportunity here for a really clean solution, though. + +>> Why not do the installation in pure Perl? + +>> The file manipulations being done by `cp` and `install` would be +>> straightforward to code in Perl, and there really isn't a complicated +>> build requiring the full functionality of `gmake`. `gxgettext` I'm +>> not so sure about, but even getting rid of _almost_ all the +>> nonstandard-utility dependencies would be a win. + +>> The idea is that if you're distributing a Perl-based app, one thing +>> you'll always be absolutely certain of in the target environment is a +>> working Perl. The fact that the current build starts out in Perl, but +>> uses it to write a Makefile and then hand off to other utilities that +>> are less dependably compatible across platforms is a disadvantage. + +>> A pure-Perl install can also query the very Perl it's running in to +>> determine the proper places to install files, and that will be less +>> error-prone that making a human edit the right paths into some files. +>> It would be quite useful here, actually, where we have several distinct +>> Perl builds installed at different paths, and ikiwiki could be correctly +>> installed for any one of them simply by using the chosen Perl to run the +>> install. That means this would also be a complete solution to +>> [[todo/assumes_system_perl|todo/assumes_system_perl]]. +>> --ChapmanFlack + +>>> Joey: How about the following patch, then? -- [[HenrikBrixAndersen]] + + --- Makefile.PL.orig 2008-08-16 14:57:00.000000000 +0200 + +++ Makefile.PL 2008-08-16 15:03:45.000000000 +0200 + @@ -67,9 +67,12 @@ extra_install: + done + + install -d $(DESTDIR)$(PREFIX)/lib/ikiwiki/plugins + - for file in `find plugins -maxdepth 1 -type f ! -wholename plugins/.\* | grep -v demo`; do \ + - cp -a $$file $(DESTDIR)$(PREFIX)/lib/ikiwiki/plugins; \ + - done \ + + for file in `find plugins -maxdepth 1 -type f ! -wholename plugins/.\* ! -name \*demo\* -name \*.py`; do \ + + install -m 644 $$file $(DESTDIR)$(PREFIX)/lib/ikiwiki/plugins; \ + + done + + for file in `find plugins -maxdepth 1 -type f ! -wholename plugins/.\* ! -name \*demo\* ! -name \*.py`; do \ + + install -m 755 $$file $(DESTDIR)$(PREFIX)/lib/ikiwiki/plugins; \ + + done + + install -d $(DESTDIR)$(PREFIX)/share/man/man1 + install -m 644 ikiwiki.man $(DESTDIR)$(PREFIX)/share/man/man1/ikiwiki.1 + +[[!tag done]]