~ chicken-core (chicken-5) ab95f99d32fb39d93b43147cddd2645b95aed0f0
commit ab95f99d32fb39d93b43147cddd2645b95aed0f0 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Fri Oct 21 12:03:12 2016 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Fri Oct 21 12:03:12 2016 +0200 chicken-install: bugfix and omitted dep-list diff --git a/NOTES b/NOTES deleted file mode 100644 index 364c02de..00000000 --- a/NOTES +++ /dev/null @@ -1,167 +0,0 @@ -NOTES (new install) -~~~~~~~~~~~~~~~~ - -* TODO Proposals -** Encode install-prefix in cache-dir name -** With cache and without network should not be an error situation -** check whether files are overwritten by egg on installation - -* TODO Test queues download + caching - -* TODO Try more complex eggs - -* TODO .egg files for all C5 eggs - -* TODO Enforce versioning method? - - someone suggested MAJOR.MINOR.PATCH - -* TODO chicken-do: delete target file if build fails - - needs to fork subprocess. - - better would be to use temporary for output and then rename. - - but then would have to replace occurrence of target in command arguments. - -* TODO Separation of d/l step possible? - - required to check downloaded content - -* TODO Static linking - - (chicken) "-static" option - when requiring extension, check if repo contains *.o(bj) file. - - mind cross-compilation: use target-repo in target mode (needs to passed to chicken). - - csc: drop -static, rename -static-libs to -static (doc) (and pass to chicken). - - pass information about used static eggs either in separate file or embedded as comment - in C file (first line) - -* TODO Rebase on upstream at some stage - -* Complete egg-info compilation -** TODO What should the default optimization options be? - - also for compiled import libraries. - - respect DEBUGBUILD? - -* TODO Option for not fetching/installing dependencies - - proposed by wasamasa. - - does this make sense? - -* TODO Support for generating + installing extra files - - types, inline-files - -* TODO Delete directory in cache before retrieving? - -* Implement minimal "chicken-install" -** Basic functionality -*** TODO just download eggs (recursively) and build/install. -*** TODO Repository init (cross-aware) - - old-chicken-install.scm://+default-repository-files+/ -*** TODO print repository -*** TODO retrieve egg -*** TODO Also support recursive retrieve -*** TODO Comment all toplevel procedures -*** TODO Add usage information - -* TODO repository-path - - allow multiple locations? - - perhaps: CHICKEN_INSTALL_REPOSITORY (defaults to install-prefix) as - installation target. - -* Issues -** Link-options are passed directly to csc - - is this right? - -* Suggestion by florz: sign eggs (or hashes) and decode using NaCl - - https://tweetnacl.cr.yp.to/software.html - -* Setup features -** TODO Keep binaries + intermediate files ("-k") - - needed, since we normally build from cache? -** TODO "-feature" + "-no-feature" -** TODO Hack for OSX SIP? -** TODO reinstall, no-install? -** TODO Request by Jon Foerch: allow *.egg in specific subdirectory ("chicken") - -* TODO "build-dependencies" - - toplevel deps that are needed during build, override "dependencies", if given. - - or is the intent differently? Ask moritz. - -* Download/build directories -** TODO handle egg-files given on command-line - - and build in respective directory. - -* TODO Run egg tests in "tests" directory - -* TODO Check what cmdline options to retain -** Option for explicitly generating Windows/UNIX build/install scripts? - - i.e. selecting target platform. - -* Things to resolve -** setup-info files -*** one for the whole egg (use "components" to find associated parts). -*** TODO Fix "extension-information" - - drop it completely? we can't locate extensions, just eggs. -*** TODO syntax-only extensions - - i.e. matchable (is it?) -*** TODO require-at-runtime - -* TODO Fix loading/linking - - needs support by compiler. - - see also eval.scm:/##sys#process-require/ - -* TODO Drop CHICKEN_PREFIX - - chicken-prefix and all of its uses. - -* Build/install scripts -** TODO Use "-setup-mode" when invoking csc during build - - but that requires csc is run in source-dir. -** must be fully sh(1) compatible - - http://people.fas.harvard.edu/~lib113/reference/unix/portable_scripting.html - - https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cmd.mspx?mfr=true -** TODO Test "chicken-do" and port to Windows - - ideally, use execvp/CreateProcess - - http://www.cplusplus.com/forum/windows/3398/ and - http://www.cplusplus.com/forum/beginner/1988/3/#msg14102 -** TODO Consider making this powerful enough to build chicken - - needs support for object-files (C or Scheme) and building libraries. -** TODO Handle case where program and extension in egg have same name - - e.g. "hyde" in hyde egg. - - can we ignore this? if source files have different names, just compiling exe/so directly should - work. - -* "dependencies" has 2 meanings, depending on nesting level in egg info - -* TODO Do we have to cleanup after building eggs? - -* TODO "chicken-install -r" retrieves into cache - sufficient? - -* Install scripts -** TODO Use install(1) - -* TODO Integrate running tests into build-script - - or generate separate script? - -* Tools -** TODO chicken-install -** TODO chicken-status - - option to list cached eggs (+ version) - - filter egg-info and list components. - - optionally list installed files instead. - -* TODO Copyright headers - - chicken-do.c egg-*.scm - -* TODO Documentation - - document CHICKEN_EGG_CACHE - - remove old and obsolete stuff (dropped options, etc.) - - update manual - - chicken-do (manpage) - - update egg-tutorial on wiki - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -gg extension-information ctags --language=scheme *.scm -cm chicken-do && cp chicken-do bin -cm chicken-install -chicken-config.h chicken-do.c config.mk old-chicken-install.scm rules.make -git gui git pull win bin/csi distribution/manifest -/home/felix/.chicken-install.cache/ lib/chicken/8 ~/chicken/5 -../bin/chicken-install -defaults ../setup.defaults -n -chicken-install.scm setup-api.scm - egg-compile.scm egg-environment.scm egg-download.scm egg-information.scm -win bin/csi -./chicken-status diff --git a/chicken-install.scm b/chicken-install.scm index 686a0df3..54386b90 100644 --- a/chicken-install.scm +++ b/chicken-install.scm @@ -472,6 +472,7 @@ (define (get-egg-dependencies info) (append (get-egg-property* info 'dependencies '()) + (get-egg-property* info 'build-dependencies '()) (if run-tests (get-egg-property* info 'test-dependencies '()) '()))) (define (check-dependency dep) @@ -591,7 +592,7 @@ (list->string (reverse (left (reverse (left (string->list str))))))) -;; list available egg versions +;; list available egg versions on servers (define (list-egg-versions eggs) (let ((srvs (map resolve-location default-servers))) @@ -753,7 +754,7 @@ (unless retrieve-only (install-eggs))))) (else (let ((eggs (apply-mappings eggs))) - (cond (list-versions-only (list-egg-versions eggs))) + (cond (list-versions-only (list-egg-versions eggs)) ;;XXX other actions... (else (retrieve-eggs eggs)Trap