~ chicken-core (chicken-5) 009bd07ceaa1aa5dc96c2d04f22c697de744ebee
commit 009bd07ceaa1aa5dc96c2d04f22c697de744ebee Author: felix <felix@call-with-current-continuation.org> AuthorDate: Sun Apr 3 20:24:22 2016 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Sun Nov 13 11:32:19 2016 +0100 notes diff --git a/NOTES b/NOTES new file mode 100644 index 00000000..ea48c3f1 --- /dev/null +++ b/NOTES @@ -0,0 +1,164 @@ +NOTES (new install) +~~~~~~~~~~~~~~~~ + +* TODO Proposals +** Encode install-prefix in cache-dir name +** Check whether files are overwritten by egg on installation +** Allow certain set of trusted programs to be called during install + - list in setup.defaults? + +* TODO Try more complex eggs + - bind (including dependencies) + +* TODO .egg files for all C5 eggs + - tag using X.Y.Z scheme. + +* 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 Remove custom location from setup.defaults + +* 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? + +* Implement minimal "chicken-install" +** Basic functionality +*** TODO Repository init (cross-aware) + - old-chicken-install.scm://+default-repository-files+/ +*** TODO print repository +*** 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? + - system / DYLD_ vars +** TODO reinstall? +** 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 "-test" implies all tests are run - is this right? + +* TODO If THE SYSTEM takes repo-tags as versions, then version-enforcement enforces a remote tag syntax + +* 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 / egg-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, miscmacros (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 +** 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? + +* "chicken-install -r" retrieves into cache - sufficient? + +* TODO Component dependencies need to be converted to filenames + - before generating build-commands. + - but specific for genfiles (source prop or name), exts, prgs. + - dependencies are currently disabled in chicken-do command-generation. + +* Tools +** TODO chicken-status + - option to list cached eggs (+ version) + - filter egg-info and list components. + +* 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 SchemeIndent +cm chicken-do && cp chicken-do bin +cm chicken-install cm install chicken-status.scm +chicken-config.h chicken-do.c config.mk old-chicken-install.scm rules.make +git gui git pull win bin/csi distribution/manifest chicken-uninstall.scm +/home/felix/.chicken-install.cache/ lib/chicken/8 ~/chicken/5 +/home/felix/chicken/c5-eggs/ +../bin/chicken-install -defaults ../setup.defaults -n +chicken-install.scm setup-api.scm setup-download.scm + egg-compile.scm egg-environment.scm egg-download.scm egg-information.scm +win bin/csi +cm chicken-install +chicken-install -v -test posix-groups +chicken-status chicken-uninstall -force +win bin/csi +rm -fr /home/felix/.chicken-install.cache/*Trap