~ chicken-core (chicken-5) f35831470b43c1211160acb34e5dd20f1d3d4713
commit f35831470b43c1211160acb34e5dd20f1d3d4713 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Fri May 13 08:14:41 2011 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Fri May 13 08:14:41 2011 +0200 added kon's egg-name reconstruction script (slightly modified) diff --git a/distribution/manifest b/distribution/manifest index 857d25d7..e81ead8a 100644 --- a/distribution/manifest +++ b/distribution/manifest @@ -281,6 +281,9 @@ types.db mac.r chicken.png CHICKEN.icns +scripts/reconstruct-egg-name.scm +scripts/mini-salmonella.scm +scripts/make-wrapper.scm manual-html/Accessing external objects.html manual-html/Acknowledgements.html manual-html/Basic mode of operation.html diff --git a/scripts/build-boot-chicken.sh b/scripts/build-boot-chicken.sh deleted file mode 100644 index 124b9216..00000000 --- a/scripts/build-boot-chicken.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/sh -# -# usage: build-boot-chicken.sh CHICKEN PLATFORM [ARCH] - - -CHICKEN="$1" -PLATFORM="$2" -ARCH="$3" -MAKE=make -EXE= -VERSION=`cat buildversion` -FULLSTATIC=-static - -if test -z "${PLATFORM}${CHICKEN}"; then - echo "usage: build-boot-chicken.sh CHICKEN PLATFORM [ARCH]" - exit 1 -fi - -case `uname -s` in - *bsd*|*BSD*) - MAKE=gmake;; - MINGW*) - EXE=.exe;; - Darwin) - FULLSTATIC=;; -esac - -BOOTCHICKEN=chicken-boot-${VERSION}-${PLATFORM}-${ARCH}${EXE} - -$MAKE -f Makefile.${PLATFORM} \ - PLATFORM=${PLATFORM} ARCH=${ARCH} PREFIX=/nowhere STATICBUILD=1 \ - PROGRAM_SUFFIX=-boot-1 CHICKEN=${CHICKEN} DEBUGBUILD=1 \ - LINKER_OPTIONS=${FULLSTATIC} \ - confclean clean chicken-boot-1${EXE} -touch *.scm -$MAKE -f Makefile.${PLATFORM} \ - PLATFORM=${PLATFORM} ARCH=${ARCH} PREFIX=/nowhere STATICBUILD=1 \ - PROGRAM_SUFFIX=-boot-2 CHICKEN=./chicken-boot-1${EXE} \ - LINKER_OPTIONS=${FULLSTATIC} \ - confclean chicken-boot-2${EXE} -$MAKE -f Makefile.${PLATFORM} PLATFORM=${PLATFORM} confclean -rm -f chicken-boot-1${EXE} - -strip chicken-boot-2${EXE} -mv chicken-boot-2${EXE} ${BOOTCHICKEN} -bzip2 ${BOOTCHICKEN} diff --git a/scripts/reconstruct-egg-name.scm b/scripts/reconstruct-egg-name.scm new file mode 100644 index 00000000..89dd7bd1 --- /dev/null +++ b/scripts/reconstruct-egg-name.scm @@ -0,0 +1,80 @@ +;;;; reconstruct-egg-name.scm - add "egg-name" infolist properties to all installed eggs +; +; by Kon Lovett +; (minimally modified by felix) + + +(use extras files posix srfi-1 miscmacros) + +;; Write the elements of the list `ls' to the output-port or output-file, +;; using +;; the `writer' procedure. `writer' is a (procedure (* output-port)). +;; +;; (add `newline?' param for write #\newline after every element?) +(define (write-file ls #!optional (file-or-port (current-output-port)) (writer write)) + (let ((port (if (port? file-or-port) file-or-port + (open-output-file file-or-port) ) ) ) + (dynamic-wind + void + (lambda () (for-each (cut writer <> port) ls)) + (lambda () (unless (port? file-or-port) (close-output-port port)))) ) + ) + +#; +(define (write-file ls #!optional (file-or-port (current-output-port)) (writer write)) + (let* ((port (if (port? file-or-port) file-or-port + (open-output-file file-or-port) ) ) + (closit (lambda () (unless (port? file-or-port) (close-output-port + port)))) ) + (handle-exceptions exn + (begin (closit) (abort exn)) + (for-each (cut writer <> port) ls)) + (closit) ) ) + +(define-constant +info-extn+ "setup-info") + +(define (info-filenames #!optional (dir (repository-path))) + (let ((cd (current-directory))) + (current-directory dir) + (begin0 + (map pathname-file (glob (make-pathname '() "*" +info-extn+))) + (current-directory cd) ) ) ) + +(define (get-info eggnam #!optional (dir (repository-path))) + (car (read-file (make-pathname dir eggnam +info-extn+))) ) + +(define (put-info info eggnam #!optional (dir (repository-path))) + (let ((tmpfil (create-temporary-file))) + (write-file (list info) tmpfil) + (file-move tmpfil (make-pathname dir eggnam +info-extn+) #t) ) ) + +(define (update-info info eggnam) + (if (assq 'egg-name info) + info + (cons + `(egg-name ,eggnam) + info)) ) + +(define (update-info-file eggnam #!optional (dir (repository-path))) + (and-let* ((info (update-info (get-info eggnam dir) eggnam))) + (put-info info eggnam dir) + #t ) ) + +(define (main svnroot) + (let ((eggdir svnroot) + (repdir (repository-path)) ) + (newline) + (print " Local SVN Repository: " eggdir) + (print "Installed Egg Repository: " repdir) + (newline) + (let* ((egdrnms (directory eggdir)) + (siflnms (info-filenames repdir)) + (eggnams (lset-intersection string=? egdrnms siflnms)) ) + (for-each + (lambda (eggnam) + (print eggnam) + (unless (update-info-file eggnam) + (print "Warning: no version detected") ) ) + eggnams ) ) ) ) + +(apply main (command-line-arguments))Trap