Generated Chicken eggs
This commit is contained in:
parent
c616f18984
commit
fd1ea3a97b
4 changed files with 15330 additions and 657 deletions
3424
zilti/packages/chicken-eggs-5.xml
Normal file
3424
zilti/packages/chicken-eggs-5.xml
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,131 @@
|
||||||
;; -*- geiser-scheme-implementation: chicken; mode: scheme; -*-
|
;; -*- geiser-scheme-implementation: chicken; mode: scheme; -*-
|
||||||
|
|
||||||
(import (rss))
|
(import (rss)
|
||||||
|
(chicken io)
|
||||||
|
(chicken port)
|
||||||
|
(chicken pretty-print)
|
||||||
|
(chicken process)
|
||||||
|
(chicken string))
|
||||||
|
|
||||||
|
(define licenses
|
||||||
|
'((AGPL . license:agpl3+)
|
||||||
|
(Artistic . license:clarified-artistic)
|
||||||
|
(BSD . license:bsd-2)
|
||||||
|
(BSD-1 . license:bsd-1)
|
||||||
|
(|BSD 1-clause| . license:bsd-1)
|
||||||
|
(BSD-2-Clause . license:bsd-2)
|
||||||
|
(BSD3 . license:bsd-3)
|
||||||
|
(|BSD 3-clause| . license:bsd-3)
|
||||||
|
(bsd . license:bsd-3)
|
||||||
|
(GPL . license:gpl3)
|
||||||
|
(GPL-2 . license:gpl2)
|
||||||
|
(GPLv2 . license:gpl2)
|
||||||
|
(GPL-3 . license:gpl3)
|
||||||
|
(GPLv3 . license:gpl3)
|
||||||
|
(GPL-3.0 . license:gpl3)
|
||||||
|
(ISC . license:isc)
|
||||||
|
(LGPL . license:lgpl3+)
|
||||||
|
(LGPL-2 . license:lgpl2.0)
|
||||||
|
(LGPL-2.0+ . license:lgpl2.0+)
|
||||||
|
(LGPL-2.1 . license:lgpl2.1)
|
||||||
|
(LGPL-2.1-or-later . license:lgpl2.1+)
|
||||||
|
(LGPL-3 . license:lgpl3)
|
||||||
|
(LGPLv3 . license:lgpl3)
|
||||||
|
(MIT . license:expat)
|
||||||
|
(OpenLDAP . license:openldap2.8)
|
||||||
|
(SRFI . license:bsd-1)
|
||||||
|
(zlib . license:zlib)
|
||||||
|
(ZLIB-Acknowledgement . license:zlib)
|
||||||
|
(public-domain . license:public-domain)
|
||||||
|
(|Public Domain| . license:public-domain)
|
||||||
|
(|public domain| . license:public-domain)
|
||||||
|
(unknown . license:unlicense)
|
||||||
|
(unlicense . license:unlicense)))
|
||||||
|
|
||||||
|
(define egg-blacklist
|
||||||
|
'(("procedural-macros" . #f)))
|
||||||
|
|
||||||
|
(define (process-egg? eggrec)
|
||||||
|
(alist-ref (egg-name eggrec) egg-blacklist
|
||||||
|
string=? #t))
|
||||||
|
|
||||||
|
(define (rss-feed-item->title+version+desc feed-item)
|
||||||
|
(let ((chunks (string-split (rss:item-title feed-item)))
|
||||||
|
(desc (rss:item-description feed-item)))
|
||||||
|
(make-egg (car chunks) (cadr chunks) desc #f #f #f #f #f #f )))
|
||||||
|
|
||||||
|
(define (symbolify in)
|
||||||
|
(if (string? in)
|
||||||
|
(string->symbol in)
|
||||||
|
in))
|
||||||
|
|
||||||
|
(define (ref-or-keep x)
|
||||||
|
(alist-ref x licenses eqv? x))
|
||||||
|
|
||||||
|
(define (egg-add-deps+license eggrec)
|
||||||
|
(when (process-egg? eggrec)
|
||||||
|
(print "Parsing " (egg-name eggrec) " version " (egg-version eggrec))
|
||||||
|
(with-input-from-pipe
|
||||||
|
(string-append
|
||||||
|
"/home/zilti/projects/guixchannel/zilti/packages/eggfile-fetcher.sh "
|
||||||
|
(egg-name eggrec) " " (egg-version eggrec))
|
||||||
|
(lambda ()
|
||||||
|
(let* ((egg-alist (read))
|
||||||
|
(checksum (read)))
|
||||||
|
(egg-checksum-set! eggrec checksum)
|
||||||
|
(egg-dependencies-set! eggrec (alist-ref 'dependencies egg-alist eqv? '()))
|
||||||
|
(egg-test-dependencies-set! eggrec (alist-ref 'test-dependencies egg-alist eqv? '()))
|
||||||
|
(egg-build-dependencies-set! eggrec (alist-ref 'build-dependencies egg-alist eqv? '()))
|
||||||
|
(egg-foreign-dependencies-set! eggrec (alist-ref 'foreign-dependencies egg-alist eqv? '()))
|
||||||
|
(egg-license-set! eggrec (alist-ref (symbolify (car (alist-ref 'license egg-alist))) licenses)))))))
|
||||||
|
|
||||||
|
(define-record egg name version description checksum dependencies test-dependencies build-dependencies foreign-dependencies license)
|
||||||
|
|
||||||
|
(define (parse-rss)
|
||||||
|
(let
|
||||||
|
((eggrecs (map rss-feed-item->title+version+desc
|
||||||
|
(rss:feed-items
|
||||||
|
(with-input-from-file "/home/zilti/projects/guixchannel/zilti/packages/chicken-eggs-5.xml"
|
||||||
|
rss:read)))))
|
||||||
|
(set! eggs eggrecs)
|
||||||
|
(map egg-add-deps+license eggrecs)
|
||||||
|
eggrecs))
|
||||||
|
|
||||||
|
(define (prepend-chicken-to-dependency x)
|
||||||
|
(if (not (symbol? x))
|
||||||
|
(prepend-chicken-to-dependency (car x))
|
||||||
|
(string->symbol (string-append "chicken-" (symbol->string x)))))
|
||||||
|
|
||||||
|
(define (generate-guix-package eggrec)
|
||||||
|
(when (process-egg? eggrec)
|
||||||
|
(print "Generating " (egg-name eggrec) " version " (egg-version eggrec))
|
||||||
|
(with-output-to-file "chicken.scm"
|
||||||
|
(lambda ()
|
||||||
|
(pretty-print
|
||||||
|
`(define-public ,(string->symbol (string-append "chicken-" (egg-name eggrec)))
|
||||||
|
(package
|
||||||
|
(name ,(string-append "chicken-" (egg-name eggrec)))
|
||||||
|
(version ,(egg-version eggrec))
|
||||||
|
(source
|
||||||
|
(origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri (egg-uri ,(egg-name eggrec) version))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
,(egg-checksum eggrec)))))
|
||||||
|
(propagated-inputs
|
||||||
|
(list ,@(map prepend-chicken-to-dependency (egg-dependencies eggrec))))
|
||||||
|
(native-inputs
|
||||||
|
(list ,@(map prepend-chicken-to-dependency (egg-test-dependencies eggrec))
|
||||||
|
,@(map prepend-chicken-to-dependency (egg-build-dependencies eggrec))))
|
||||||
|
(build-system chicken-build-system)
|
||||||
|
(arguments '(#:egg-name ,(egg-name eggrec)))
|
||||||
|
(synopsis ,(egg-description eggrec))
|
||||||
|
(home-page ,(string-append
|
||||||
|
"https://wiki.call-cc.org/eggref/5/" (egg-name eggrec)))
|
||||||
|
(description ,(egg-description eggrec))
|
||||||
|
(license ,(egg-license eggrec))))))
|
||||||
|
#:text #:append)))
|
||||||
|
|
||||||
|
(define (main #!optional args)
|
||||||
|
(map generate-guix-package (parse-rss)))
|
||||||
|
|
12
zilti/packages/eggfile-fetcher.sh
Executable file
12
zilti/packages/eggfile-fetcher.sh
Executable file
|
@ -0,0 +1,12 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
curdir=$(pwd)
|
||||||
|
tmptar=$(mktemp)
|
||||||
|
tmpdir=$(mktemp -d)
|
||||||
|
trap "rm -rf '$tmptar'" exit;
|
||||||
|
trap "rm -rf '$tmpdir'" exit;
|
||||||
|
curl -L "https://code.call-cc.org/egg-tarballs/5/$1/$1-$2.tar.gz" > $tmptar
|
||||||
|
cd $tmpdir
|
||||||
|
tar xzf $tmptar
|
||||||
|
cat $1-$2/$1.egg
|
||||||
|
echo "\"$(guix hash $tmptar)\""
|
Loading…
Reference in a new issue