From: Richard M K. <kr...@pr...> - 2008-03-23 19:05:58
|
Eugene Ossintsev writes: > Here is a patch to make asdf-module.mk happier on NetBSD and maybe > some other Unixes (probably OpenBSD and Solaris). <snip> > diff -ru sbcl.orig/contrib/asdf-module.mk sbcl/contrib/asdf-module.mk > --- sbcl.orig/contrib/asdf-module.mk 2008-03-21 20:08:12.000000000 -0400 > +++ sbcl/contrib/asdf-module.mk 2008-03-22 18:39:42.000000000 -0400 > @@ -27,6 +27,6 @@ > "(asdf:operate (quote asdf:test-op) :$(SYSTEM))" | \ > $(SBCL) --eval '(load "../asdf/asdf")' > > - > install: $(EXTRA_INSTALL_TARGETS) > - tar --exclude=CVS -cf - . | ( cd "$(BUILD_ROOT)$(INSTALL_DIR)" && tar - > -no-same-owner -xpvf - ) > + cp -R * "$(BUILD_ROOT)$(INSTALL_DIR)" > + find "$(BUILD_ROOT)$(INSTALL_DIR)" -name CVS -type d -prune -exec rm -r > {} \; I wonder if it wouldn't be saner to have each of the asdf-using contribs' Makefiles set a variable whose value named the files to install for that contrib (possibly by extracting the information from the asdf system), and to have the install target be install: cp $(INSTALL_FILES) "$(BUILD_ROOT)$(INSTALL_DIR)" Thoughts? -- Richard |
From: Eugene O. <eu...@gm...> - 2008-03-23 21:51:40
|
Hi Richard, On Sun, 2008-03-23 at 15:05 -0400, Richard M Kreuter wrote: > > + cp -R * "$(BUILD_ROOT)$(INSTALL_DIR)" > > + find "$(BUILD_ROOT)$(INSTALL_DIR)" -name CVS -type d -prune -exec rm -r > > {} \; > I wonder if it wouldn't be saner to have each of the asdf-using > contribs' Makefiles set a variable whose value named the files to > install for that contrib (possibly by extracting the information from > the asdf system), and to have the install target be > > install: > cp $(INSTALL_FILES) "$(BUILD_ROOT)$(INSTALL_DIR)" > > Thoughts? I personally don't like asterisking either. Moreover, I find it to be a bit ugly to install the CVS subdirs and then to delete them from the modules installation directories. But I don't see a better, compact and portable way, to do it. You're right, it'd be saner to specify every single file to be installed. But in some modules the number of files is up to 50. Do you think it'd be easy to maintain that stuff? If yes, I'll make a proper patch for that. On the other hand, all we need is to exclude the CVS subdirectories and .cvsignore files. Hmm... while writing this email, I've noticed, Makefiles must be excluded, too. There is no reason to copy them to the installation directories. So, it's CVS, Makefile, and .cvsignore which must be excluded from the files to be installed. - Eugene |
From: Eugene O. <eu...@gm...> - 2008-03-24 03:43:26
Attachments:
asdf-module.mk.diff
|
> On the other hand, all we need is to exclude the CVS subdirectories > and .cvsignore files. Hmm... while writing this email, I've noticed, > Makefiles must be excluded, too. I'm totally wrong in the previous email of mine. Actually, all we need is to copy $(SYSTEM).asd, *.lisp, and *.fasl files and only the first directory level, so that the recursive 'cp -R * <dest_dir>' is unnecessary here. I don't know, though, what about the contrib/sb-cover/test-output and contrib/sb-posix/test-lab subdirectories which are required only for the test stuff. If we don't copy them, we don't need the test *.lisp and *.fasl files, either (such as posix-tests.lisp). So, I think, Richard Kreuter is right, it's wiser to specify all the files to be copied, without dumb asterisking. Here is a new patch attached. The previous had a nasty bug, by the way: if the timestamps of *.lisp and *.fasl files are not preserved and they are copied with the same modification times, the *.fasl files cannot be loaded producing the error message like "permission denied". It seems, the *.fasl timestamps must be at least one second newer than the corresponding *.lisp timestamps. So, I've modified the patch to use 'cp -p' to preserve all the attributes and then to call 'find' with 'chown `id -u`:`id -g`' to set the effective user id and group. - Eugene |
From: Nikodemus S. <nik...@ra...> - 2008-03-26 19:38:02
|
On Mon, Mar 24, 2008 at 5:43 AM, Eugene Ossintsev <eu...@gm...> wrote: > > On the other hand, all we need is to exclude the CVS subdirectories > > and .cvsignore files. Hmm... while writing this email, I've noticed, > > Makefiles must be excluded, too. > > I'm totally wrong in the previous email of mine. Actually, all we need > is to copy $(SYSTEM).asd, *.lisp, and *.fasl files and only the first > directory level, so that the recursive 'cp -R * <dest_dir>' is > unnecessary here. > > I don't know, though, what about the contrib/sb-cover/test-output and > contrib/sb-posix/test-lab subdirectories which are required only for the > test stuff. If we don't copy them, we don't need the test *.lisp and > *.fasl files, either (such as posix-tests.lisp). So, I think, Richard > Kreuter is right, it's wiser to specify all the files to be copied, > without dumb asterisking. > > Here is a new patch attached. The previous had a nasty bug, by the way: > if the timestamps of *.lisp and *.fasl files are not preserved and they > are copied with the same modification times, the *.fasl files cannot be > loaded producing the error message like "permission denied". It seems, > the *.fasl timestamps must be at least one second newer than the > corresponding *.lisp timestamps. So, I've modified the patch to use 'cp > -p' to preserve all the attributes and then to call 'find' with 'chown > `id -u`:`id -g`' to set the effective user id and group. Thanks, committed as 1.0.15.40. (If there are any futher issues with this during the freeze, I'll revert to the pre 1.0.15 version.) Cheers, -- Nikodemus |