~ chicken-core (chicken-5) 220c71cbf829b43116402ac7807a2220860a2d37
commit 220c71cbf829b43116402ac7807a2220860a2d37 Author: Peter Bex <peter@more-magic.net> AuthorDate: Fri Oct 14 21:11:56 2016 +0200 Commit: Evan Hanson <evhan@foldling.org> CommitDate: Fri Oct 28 13:20:30 2016 +1300 Replace CHICKEN version fudges with foreign-values This requires the version test to be compiled. The test is still useful, as it compares the version in build-version.scm with the baked in constant definitions of C_{MAJOR,MINOR}_VERSION. Signed-off-by: Evan Hanson <evhan@foldling.org> diff --git a/library.scm b/library.scm index 8d47654e..9d1fc656 100644 --- a/library.scm +++ b/library.scm @@ -4481,12 +4481,11 @@ EOF (set! ##sys#features (cons #:64bit ##sys#features))) (set! ##sys#features - (let ((major (##sys#string-append "chicken-" (##sys#number->string (##sys#fudge 41))))) - (cons (##sys#->feature-id major) - (cons (##sys#->feature-id - (string-append - major "." - (##sys#number->string (##sys#fudge 43)))) + (let ((major (##sys#number->string (foreign-value "C_MAJOR_VERSION" int))) + (minor (##sys#number->string (foreign-value "C_MINOR_VERSION" int)))) + (cons (##sys#->feature-id (string-append "chicken-" major)) + (cons (##sys#->feature-id + (string-append "chicken-" major "." minor)) ##sys#features)))) (define (register-feature! . fs) diff --git a/runtime.c b/runtime.c index 3f8859ec..bf7e6333 100644 --- a/runtime.c +++ b/runtime.c @@ -4957,13 +4957,13 @@ C_regparm C_word C_fcall C_fudge(C_word fudge_factor) panic(C_text("(##sys#fudge 40) [manyargs] is obsolete")); case C_fix(41): /* major CHICKEN version */ - return C_fix(C_MAJOR_VERSION); + panic(C_text("(##sys#fudge 41) [major version] is obsolete")); case C_fix(42): /* binary version number */ panic(C_text("(##sys#fudge 42) [binary version] is obsolete")); case C_fix(43): /* minor CHICKEN version */ - return C_fix(C_MINOR_VERSION); + panic(C_text("(##sys#fudge 43) [minor version] is obsolete")); case C_fix(44): /* whether debugger is active */ panic(C_text("(##sys#fudge 44) [debugging] is obsolete")); diff --git a/setup-download.scm b/setup-download.scm index f4f257d7..9eaa8f09 100644 --- a/setup-download.scm +++ b/setup-download.scm @@ -60,6 +60,7 @@ (define *trunk* #f) (define *mode* 'default) (define *windows-shell* (foreign-value "C_WINDOWS_SHELL" bool)) + (define *chicken-release* (foreign-value "C_MAJOR_VERSION" int)) (define (d fstr . args) (let ([port (if *quiet* (current-error-port) (current-output-port))]) @@ -186,7 +187,7 @@ (let* ((locn (string-append locn "?name=" egg - "&release=" (->string (##sys#fudge 41)) + "&release=" (->string *chicken-release*) (if version (string-append "&version=" version) "") "&mode=" (->string *mode*) (if tests "&tests=yes" ""))) diff --git a/tests/runtests.bat b/tests/runtests.bat index 248a1528..888c71a6 100644 --- a/tests/runtests.bat +++ b/tests/runtests.bat @@ -27,7 +27,9 @@ mkdir test-repository copy %TYPESDB% test-repository echo ======================================== version tests ... -%interpret% -s version-tests.scm +%compile% version-tests.scm +if errorlevel 1 exit /b 1 +a.out if errorlevel 1 exit /b 1 echo ======================================== compiler tests ... diff --git a/tests/runtests.sh b/tests/runtests.sh index e10482eb..745ad1c7 100755 --- a/tests/runtests.sh +++ b/tests/runtests.sh @@ -95,7 +95,8 @@ interpret="../csi -n -include-path ${TEST_DIR}/.." rm -f *.exe *.so *.o *.import.* a.out ../foo.import.* echo "======================================== version tests ..." -$interpret -s version-tests.scm +$compile version-tests.scm +./a.out echo "======================================== compiler tests ..." $compile compiler-tests.scm diff --git a/tests/version-tests.scm b/tests/version-tests.scm index 851850c8..f26d3d1d 100644 --- a/tests/version-tests.scm +++ b/tests/version-tests.scm @@ -5,9 +5,8 @@ (minor (string->number (cadr version-tokens)))) (display "Checking major and minor version numbers against chicken-version... ") - ;; Those fudges are mapped to C_MAJOR_VERSION and C_MINOR_VERSION - (assert (= (##sys#fudge 41) major)) - (assert (= (##sys#fudge 43) minor)) + (assert (= (foreign-value "C_MAJOR_VERSION" int) major)) + (assert (= (foreign-value "C_MINOR_VERSION" int) minor)) (print "ok") (display "Checking the registered feature chicken-<major>.<minor>... ") @@ -24,4 +23,16 @@ (irregex-match-substring match 2)) minor)))) (else (loop (cdr features))))))) + + (display "Checking the registered feature chicken-<major>... ") + (let loop ((features (features))) + (if (null? features) + (error "Could not find feature chicken-<major>") + (let ((feature (symbol->string (car features)))) + (cond ((irregex-match "chicken-(\\d+)" feature) + => (lambda (match) + (assert (= (string->number + (irregex-match-substring match 1)) + major)))) + (else (loop (cdr features))))))) (print "ok"))Trap