Hey all,
I have been setting up a new machine and tried to install the
transducers egg with chicken-install. I noticed that the egg builds /
installs fine with r7rs:1.0.10, but fails with anything newer
(r7rs:1.0.11, r7rs:1.0.12).
Find the log attached. Could this potentially be related to the recent
issue reported about there being a bug combining cond-expand and
include-library-declarations?
Cheers,
--
Jeremy Steward
building transducers
/usr/bin/csc -host -D compiling-extension -J -s -regenerate-import-libraries -setup-mode -I /home/jeremy/.cache/chicken-install/transducers -C -I/home/jeremy/.cache/chicken-install/transducers -X r7rs -R r7rs -O3 -d2 -emit-types-file '/home/jeremy/.cache/chicken-install/transducers/transducers.base.types' -emit-inline-file '/home/jeremy/.cache/chicken-install/transducers/transducers.base.inline' src/transducers.base.sld -o /home/jeremy/.cache/chicken-install/transducers/transducers.base.so
Syntax error (define-library): invalid library declaration
((import-syntax (srfi 253)) (import-syntax (chicken type)) (include-library-declarations "src/transducers.base.exports.scm") (begin (define (non-negative-fixnum? x) (and (fixnum? x) (fx>=? x 0))) (define (positive-fixnum? x) (and (fixnum? x) (positive? x))) (define-record-type <reduced> (make-reduced value) reduced? (value unwrap)) (define collect-any (case-lambda ((pred?) (collect-any pred? #f)) ((pred? sentinel) (case-lambda (() sentinel) ((result) result) ((result item) (let ((test (pred? item))) (and (or result test) (make-reduced test)))))))) (define collect-all (case-lambda ((pred?) (collect-all pred? #t)) ((pred? sentinel) (case-lambda (() sentinel) ((result) result) ((result item) (let ((test (pred? item))) (if (and result test) test (make-reduced #f)))))))) (define collect-count (case-lambda (() (collect-count 0)) ((sentinel) (case-lambda (() sentinel) ((result) result) ((result item) (fx+ result 1)))))) (define collect-max (case-lambda (() (collect-max -inf.0)) ((sentinel) (case-lambda (() sentinel) ((result) result) ((result item) (max result item)))))) (define collect-min (case-lambda (() (collect-min +inf.0)) ((sentinel) (case-lambda (() sentinel) ((result) result) ((result item) (min result item)))))) (define collect-first (case-lambda (() (collect-first #f)) ((sentinel) (case-lambda (() sentinel) ((result) result) ((result item) (make-reduced item)))))) (define collect-last (case-lambda (() (collect-last #f)) ((sentinel) (case-lambda (() sentinel) ((result) result) ((result item) item))))) (define collect-sum (case-lambda (() (collect-sum 0)) ((sentinel) (case-lambda (() sentinel) ((result) result) ((result item) (+ result item)))))) (define collect-product (case-lambda (() (collect-product 1)) ((sentinel) (case-lambda (() sentinel) ((result) result) ((result item) (* result item)))))) (define collect-void (case-lambda (() (collect-void (void))) ((_sentinel) (case-lambda (() (void)) ((result) result) ((result item) result))))) (define (transduce folder transducer collector data) (let* ((xf (transducer collector)) (result (folder xf (collector) data))) (xf result))) (define (once-folder xs sentinel item) (let ((result (xs sentinel item))) (if (reduced? result) (unwrap result) result))) (define (once transducer collector item) (transduce once-folder transducer collector item)) (define (map f) (lambda (reducer) (case-lambda (() (reducer)) ((result) (reducer result)) ((result item) (reducer result (f item)))))) (define (filter pred) (lambda (reducer) (case-lambda (() (reducer)) ((result) (reducer result)) ((result item) (if (pred item) (reducer result item) result))))) (define (remove pred) (filter (compose not pred))) (define-checked (drop (n non-negative-fixnum?)) (lambda (reducer) (let ((n n)) (case-lambda (() (reducer)) ((result) (reducer result)) ((result item) (set! n (fx- n 1)) (if (fx>=? n 0) result (reducer result item))))))) (define (drop-while pred) (lambda (reducer) (let ((continue-to-drop #t)) (case-lambda (() (reducer)) ((result) (reducer result)) ((result item) (if continue-to-drop (cond ((pred item) result) (else (set! continue-to-drop #f) (reducer result item))) (reducer result item))))))) (define-checked (take (n positive-fixnum?)) (lambda (reducer) (let ((n n)) (case-lambda (() (reducer)) ((result) (reducer result)) ((result item) (set! n (fx- n 1)) (if (fx>? n 0) (reducer result item) (make-reduced (reducer result item)))))))) (define (take-while pred) (lambda (reducer) (case-lambda (() (reducer)) ((result) (reducer result)) ((result item) (if (pred item) (reducer result item) (make-reduced result)))))) (define (preserving-reduced reducer) (lambda (acc x) (let ((ret (reducer acc x))) (if (reduced? ret) (make-reduced ret) ret)))) (define-syntax define-flatten-transducer (syntax-rules () ((_ name type? type-fold) (define name (lambda (reducer) (case-lambda (() (reducer)) ((result) (reducer result)) ((result item) (if (type? item) (type-fold (preserving-reduced (name reducer)) result item) (reducer result item))))))))) (define-syntax define-chain-transducer (syntax-rules () ((_ name type-fold) (define (name iterable) (lambda (reducer) (case-lambda (() (reducer)) ((result) (reducer (type-fold reducer result iterable))) ((result item) (reducer result item)))))))) (define-checked (chunks (n positive-fixnum?) collector) (lambda (reducer) (let ((i 0) (collection (collector))) (case-lambda (() (reducer)) ((result) (if (fx>? i 0) (let ((new-result (reducer result (collector collection)))) (if (reduced? new-result) (reducer (unwrap new-result)) (reducer new-result))) (reducer result))) ((result item) (let ((new-i (fx+ i 1)) (new-collection (collector collection item))) (cond ((fx<? new-i n) (set! collection new-collection) (set! i new-i) result) (else (set! collection (collector)) (set! i 0) (reducer result (collector new-collection)))))))))) (define-checked (chunks-exact (n positive-fixnum?) collector) (lambda (reducer) (let ((i 0) (collection (collector))) (case-lambda (() (reducer)) ((result) (reducer result)) ((result item) (let ((new-i (fx+ i 1)) (new-collection (collector collection item))) (cond ((fx<? new-i n) (set! collection new-collection) (set! i new-i) result) (else (set! collection (collector)) (set! i 0) (reducer result (collector new-collection)))))))))) (define-syntax define-interleave-transducer (syntax-rules () ((_ name make-state done? next update) (define (name collection) (lambda (reducer) (let ((state (make-state collection))) (case-lambda (() (reducer)) ((result) (reducer result)) ((result item) (if (done? collection state) (make-reduced result) (let ((interleave-item (next collection state)) (next-result (reducer result item))) (set! state (update collection state)) (if (reduced? next-result) next-result (reducer next-result interleave-item)))))))))))) (define-syntax define-zip-transducer (syntax-rules () ((_ name make-state done? next update) (define (name collection) (lambda (reducer) (let ((state (make-state collection))) (case-lambda (() (reducer)) ((result) (reducer result)) ((result item) (if (done? collection state) (make-reduced result) (let ((zip-item (next collection state))) (set! state (update collection state)) (reducer result (cons item zip-item)))))))))))) (define enumerate (lambda (reducer) (let ((n 0)) (case-lambda (() (reducer)) ((result) (reducer result)) ((result item) (let ((enumerated-item (cons n item))) (set! n (fx+ n 1)) (reducer result enumerated-item))))))) (define (inspect f) (lambda (reducer) (case-lambda (() (reducer)) ((result) (reducer result)) ((result item) (f item) (reducer result item))))) (define (for-each folder transducer data) (transduce folder transducer (collect-void) data)) (define-record-type <transducible> (make-transducible folder collector flattener chainer interleaver zipper) transducible? (folder transducible-folder) (collector transducible-collector) (flattener transducible-flattener) (chainer transducible-chainer) (interleaver transducible-interleaver) (zipper transducible-zipper))))
Expansion history:
<syntax> (##core#begin (define-library (transducers base) (import (except (scheme base) map for-each) (scheme...
<syntax> (define-library (transducers base) (import (except (scheme base) map for-each) (scheme case-lambda) ... <--
Error: shell command terminated with non-zero exit status 17920: '/usr/bin/chicken' 'src/transducers.base.sld' -output-file '/home/jeremy/.cache/chicken-install/transducers/transducers.base.c' -dynamic -feature chicken-compile-shared -feature compiling-extension -emit-all-import-libraries -regenerate-import-libraries -setup-mode -include-path /home/jeremy/.cache/chicken-install/transducers -extend r7rs -require-extension r7rs -optimize-level 3 -debug-level 2 -emit-types-file '/home/jeremy/.cache/chicken-install/transducers/transducers.base.types' -emit-inline-file '/home/jeremy/.cache/chicken-install/transducers/transducers.base.inline'
Error: shell command terminated with nonzero exit code
256
"sh /home/jeremy/.cache/chicken-install/transducers/transducers.build.sh"