Re: [Chicken-users] local metafile use to create an egg
14 Jan 2008 18:02:15 -0200, Mario Domenech Goulart <[EMAIL PROTECTED]>: > Hi minh thu, > > On Mon, 14 Jan 2008 15:02:55 +0100 "minh thu" <[EMAIL PROTECTED]> wrote: > > > Currently, I use a makefile to build an egg. Is it possible to create > > it with the same process .meta file is automatically used when > > committing in svn (i.e. locally, with no real commit)? > > I don't know if I understand what you want. Maybe the script below > can do the trick. It packs an egg based on the information from the > meta file found under the given egg directory. > > It assumes tar is installed and it doesn't generate the HTML > documentation from eggdoc or wiki files (just ignores it). > > Example of use: > > $ csi -s eggify.scm ~/src/chicken-eggs/spiffy/trunk > spiffy-base.scm > spiffy.scm > ssp-handler.scm > web-scheme-handler.scm > cgi-handler.scm > simple-directory-handler.scm > spiffy.setup > > $ cp ~/src/chicken-eggs/spiffy/trunk/spiffy.egg . > > $ chicken-setup spiffy.egg > gzip -d -c ../spiffy.egg | tar xf - > /usr/local/chicken-2.732/bin/csc -feature compiling-extension -s -O2 > -no-trace spiffy-base.scm > /usr/local/chicken-2.732/bin/csc -feature compiling-extension -s -O2 > -no-trace ssp-handler.scm > ... > rm -fr spiffy.egg-dir > > > 8< > > (use posix (srfi 1)) > > (define (eggify eggdir) > (let* ((metafiles (glob (make-pathname eggdir "*" "meta" > (when (null? metafiles) > (die "Couldn't find any metafile.")) > (let* ((metafile (car metafiles)) >(metadata (handle-exceptions exn > (die metafile ": syntax error.") > (with-input-from-file metafile read))) >(egg (car (alist-ref 'egg metadata))) >(eggname (pathname-file egg)) >(doc-from-wiki (alist-ref 'doc-from-wiki metadata)) >(eggdoc (alist-ref 'eggdoc metadata)) >(files (alist-ref 'files metadata))) > (when (or doc-from-wiki eggdoc) ;; ignores documentation > (set! files (delete (make-pathname #f eggname "html") files))) > (change-directory eggdir) > (system (string-append "tar czvf " egg " " (string-intersperse > files)) > > (define (usage #!optional exit-code) > (print "Usage: " (program-name) " ") > (when exit-code > (exit exit-code))) > > (define (die . msg) > (print (apply conc msg)) > (exit 1)) > > (let ((args (command-line-arguments))) > (if (< (length args) 1) > (usage 1) > (let ((arg1 (car args))) > (if (member arg1 '("-h" "--help" "-help")) > (usage 0) > (begin > (unless (file-exists? arg1) > (die eggdir " does not exist.")) > (eggify arg1)) > > >8 > > Best wishes, > Mario > Gee, I wasn't asking for that much ! You correctly understood, although I was talking about the code used by the svn hook. Thanks a lot, thu ___ Chicken-users mailing list Chicken-users@nongnu.org http://lists.nongnu.org/mailman/listinfo/chicken-users
Re: [Chicken-users] local metafile use to create an egg
Hi minh thu, On Mon, 14 Jan 2008 15:02:55 +0100 "minh thu" <[EMAIL PROTECTED]> wrote: > Currently, I use a makefile to build an egg. Is it possible to create > it with the same process .meta file is automatically used when > committing in svn (i.e. locally, with no real commit)? I don't know if I understand what you want. Maybe the script below can do the trick. It packs an egg based on the information from the meta file found under the given egg directory. It assumes tar is installed and it doesn't generate the HTML documentation from eggdoc or wiki files (just ignores it). Example of use: $ csi -s eggify.scm ~/src/chicken-eggs/spiffy/trunk spiffy-base.scm spiffy.scm ssp-handler.scm web-scheme-handler.scm cgi-handler.scm simple-directory-handler.scm spiffy.setup $ cp ~/src/chicken-eggs/spiffy/trunk/spiffy.egg . $ chicken-setup spiffy.egg gzip -d -c ../spiffy.egg | tar xf - /usr/local/chicken-2.732/bin/csc -feature compiling-extension -s -O2 -no-trace spiffy-base.scm /usr/local/chicken-2.732/bin/csc -feature compiling-extension -s -O2 -no-trace ssp-handler.scm ... rm -fr spiffy.egg-dir 8< (use posix (srfi 1)) (define (eggify eggdir) (let* ((metafiles (glob (make-pathname eggdir "*" "meta" (when (null? metafiles) (die "Couldn't find any metafile.")) (let* ((metafile (car metafiles)) (metadata (handle-exceptions exn (die metafile ": syntax error.") (with-input-from-file metafile read))) (egg (car (alist-ref 'egg metadata))) (eggname (pathname-file egg)) (doc-from-wiki (alist-ref 'doc-from-wiki metadata)) (eggdoc (alist-ref 'eggdoc metadata)) (files (alist-ref 'files metadata))) (when (or doc-from-wiki eggdoc) ;; ignores documentation (set! files (delete (make-pathname #f eggname "html") files))) (change-directory eggdir) (system (string-append "tar czvf " egg " " (string-intersperse files)) (define (usage #!optional exit-code) (print "Usage: " (program-name) " ") (when exit-code (exit exit-code))) (define (die . msg) (print (apply conc msg)) (exit 1)) (let ((args (command-line-arguments))) (if (< (length args) 1) (usage 1) (let ((arg1 (car args))) (if (member arg1 '("-h" "--help" "-help")) (usage 0) (begin (unless (file-exists? arg1) (die eggdir " does not exist.")) (eggify arg1)) >8 Best wishes, Mario ___ Chicken-users mailing list Chicken-users@nongnu.org http://lists.nongnu.org/mailman/listinfo/chicken-users
[Chicken-users] local metafile use to create an egg
Hi, Currently, I use a makefile to build an egg. Is it possible to create it with the same process .meta file is automatically used when committing in svn (i.e. locally, with no real commit)? Thanks, mt ___ Chicken-users mailing list Chicken-users@nongnu.org http://lists.nongnu.org/mailman/listinfo/chicken-users