I've been making slow progress refreshing the Arch Linux package scripts for installing eggs.
I've accumulated notes about metadata and installation bugs in various eggs, which I will pass on soon. I had written earlier about my puzzlement re the difference between CHICKEN_INSTALL_PREFIX=/altroot/usr chicken-install and chicken-install -p /altroot/usr I'm not sure anymore why I had been persuaded these work differently. As far as I can now tell, they always work the same, as they're supposed to. I think this is internally implemented using: (use setup-api) (destination-prefix "/altroot/usr") and then can be retrieved using (installation-prefix). It's also honored by the following formula: (include "setup-helper") (installation-chicken-home) (installation-repository-path) (make-repository-pathname filename) ; instead of (make-pathname (repository-path) filename) (copy-to-repository filename) ; instead of (copy-file-to-directory filename (repository-path)) (copy-to-home filename) ; instead of (copy-file-to-directory filename (chicken-home)) I'm not aware of any other parts of the setup-api or setup-helper api that are affected by the installation prefix setting. Not every egg uses these bits of the api; so some eggs need their installation scripts patched to work properly with our (and probably most other) packaging systems. I'll report on these when I pass on my bug list. What explains many of the initial troubles I was having is that some eggs don't honor the "-n / -no-install" option to chicken-install. They attempt to install their files anyway (and some of these eggs attempt to install in /usr (or whatever chicken-prefix is), even if the installation prefix points elsewhere). Other eggs do honor the -no-install option, but not in a way that I expected. Our packaging system works best when the build and install steps for a make sequence can be separated. Then the build step can be scripted with user privileges, and the packaging-install step (into the package system's "/altroot") happens under a fakeroot. (For the end-user to actually install the package under "/" happens in a third step, and needs root privileges. I'm not discussing this third, user-install step here.) So I thought the typical egg's package script could look like this: build step: chicken-install -n # do all the building packaging-install step: chicken-install -p "/altroot/usr" # now do the installing As I said, some eggs try to install at least some of their files even when chicken-install is passed the -n flag. Let's ignore them for the moment. Even the ones that would refrain from installing when passed the -n flag are giving me no joy, because for the most part they're RECOMPILING everything in the packaging-install step. So it looks like in the usual case, I'm going to have to forego our packaging system's separation of duties, and just do all the building and installing in the packaging-install step. This is OK, though it's better to separate the steps when it's feasible. Just glancing at some of the build logs, it looks like sometimes recompilation is avoided and other times not. I don't know whether there's any reliable way to tell short of analyzing these build logs. I did a fgrep on all the egg source files for invocations of the setup-install-mode procedure, which reports the -n setting. I was surprised to find it only in the source files for the crunch egg! I thought perhaps handling of this option is buried in other parts of the api, such as standard-extension. But only five eggs seem to use that. So in fact I'm not even sure why so many eggs are even refraining from installing when passed the -n option, since I can't see where their setup scripts are even detecting the state of that option. Perhaps it's buried in some other part of the API that they're using and I haven't yet identified. (Do install-{extension,program,script} turn to NOPs when chicken-install is invoked with the -n option?) -- Jim Pryor prof...@jimpryor.net _______________________________________________ Chicken-users mailing list Chicken-users@nongnu.org http://lists.nongnu.org/mailman/listinfo/chicken-users