Hi Johann, On Sat, 22 Nov 2014 14:54:08 +0100 Johann Felix Soden <joh...@debian.org> wrote:
> the changes from 4.9.0 to 4.9.0.1 are way to huge to update to the new > upstream version for Debian Jessie (diff has O(700000) lines). > > The attached patch only backports the C_MINOR_VERSION change as > requested by this bug report. Is there another change which need to be > included? Thanks for looking at this issue. Unfortunately, I'm afraid your patch is not the best approach to handle the problem. Touching chicken.h would cause the build system to rebuild practically the whole CHICKEN core software, and that would generate the gigantic diff you see. The 4.9.0.1 release does basically that, but provides the C code generated by the bootstrap process. Let me provide some more context. CHICKEN is a self-hosting Scheme->C compiler. It is mostly written in Scheme, but some parts are in C (runtime.c and chicken.h). To build CHICKEN out of sources from the git repository, you have to go through a bootstrap process, that is, you need CHICKEN to build CHICKEN. To make the life of users and packagers easier, we provide source tarballs with code that has already gone through the bootstrap process. Those source tarballs contain the source code from the git repository plus the C code generated by the bootstrap process (i.e., the output of the compilation of the compiler source, in Scheme, to C). Thus, to build CHICKEN out of source tarballs, you only need a working C toolchain and GNU make. However, if you touch any source file (the original source, from git -- not the C source code generated by the bootstrap process), the build system will probably try to compile that file and those that depend on it. That compilation step requires a working CHICKEN compiler. If you touch a basic file like chicken.h, a lot of files will have to go through the bootstrap process again. That's not desirable, since it would require a working CHICKEN installed. Here are the steps you can use to check the differences between 4.9.0 and 4.9.0.1: 1. $ wget http://code.call-cc.org/releases/4.9.0/chicken-4.9.0.tar.gz 2. $ wget http://code.call-cc.org/releases/4.9.0/chicken-4.9.0.1.tar.gz 3. $ tar xzf chicken-4.9.0.tar.gz 4. $ tar xzf chicken-4.9.0.1.tar.gz 5. $ (cd chicken-4.9.0 ; make PLATFORM=linux spotless) 6. $ (cd chicken-4.9.0.1 ; make PLATFORM=linux spotless) 7. $ diff -ur chicken-4.9.0 chicken-4.9.0.1 Steps 5 and 6 will remove the files generated by the bootstrap process. The ones left will show the differences between the two versions. Attached you can find the whole diff for versions 4.9.0 and 4.9.0.1 (generated by the steps [1 -- 7] above). As you can see, the major difference is the bump in C_MINOR_VERSION. The other changes are related to documentation and the addition of tests to catch that versioning mistake. As explained above, patching chicken.h is not the best option, since it will require the bootstrap process if users try to build the source tarball. So, I strongly advice using the tarball for the 4.9.0.1 release, which can be found at http://code.call-cc.org/releases/4.9.0/chicken-4.9.0.1.tar.gz (SHA256 sum: 04df7c439c36fc16446bdfa186e7a70258f911d2d826b5216a8e6b1cb2aa2815). That release fixes the versioning problem and the source code in the tarball has been gone through the bootstrap process. Best wishes. Mario -- http://parenteses.org/mario
diff -ur chicken-4.9.0/NEWS chicken-4.9.0.1/NEWS --- chicken-4.9.0/NEWS 2014-06-02 11:30:25.000000000 -0300 +++ chicken-4.9.0.1/NEWS 2014-06-07 09:58:37.000000000 -0300 @@ -1,3 +1,8 @@ +4.9.0.1 + +- Runtime library + - C_MINOR_VERSION changed to 9; feature identifier chicken-4.8 => chicken-4.9 + 4.9.0 - Security fixes diff -ur chicken-4.9.0/README chicken-4.9.0.1/README --- chicken-4.9.0/README 2014-06-02 11:30:28.000000000 -0300 +++ chicken-4.9.0.1/README 2014-06-07 10:02:53.000000000 -0300 @@ -6,7 +6,7 @@ (c) 2008-2014, The Chicken Team (c) 2000-2007, Felix L. Winkelmann - version 4.9.0 + version 4.9.0.1 1. Introduction diff -ur chicken-4.9.0/buildversion chicken-4.9.0.1/buildversion --- chicken-4.9.0/buildversion 2014-06-02 11:30:25.000000000 -0300 +++ chicken-4.9.0.1/buildversion 2014-06-07 10:02:53.000000000 -0300 @@ -1 +1 @@ -4.9.0 +4.9.0.1 \ No newline at end of file diff -ur chicken-4.9.0/chicken.h chicken-4.9.0.1/chicken.h --- chicken-4.9.0/chicken.h 2014-06-02 11:30:25.000000000 -0300 +++ chicken-4.9.0.1/chicken.h 2014-06-07 09:26:48.000000000 -0300 @@ -38,7 +38,7 @@ #define ___CHICKEN #define C_MAJOR_VERSION 4 -#define C_MINOR_VERSION 8 +#define C_MINOR_VERSION 9 #ifndef _ISOC99_SOURCE # define _ISOC99_SOURCE diff -ur chicken-4.9.0/manual-html/The User's Manual.html chicken-4.9.0.1/manual-html/The User's Manual.html --- chicken-4.9.0/manual-html/The User's Manual.html 2014-06-02 11:40:31.000000000 -0300 +++ chicken-4.9.0.1/manual-html/The User's Manual.html 2014-06-07 10:23:33.000000000 -0300 @@ -7,7 +7,7 @@ <meta name="viewport" content="initial-scale=1" /></html> <body> <div id="body"> -<div id="main"><h2 id="sec:The_CHICKEN_User.27s_Manual"><a href="#sec:The_CHICKEN_User.27s_Manual">The CHICKEN User's Manual</a></h2><p>This is the manual for Chicken Scheme, version 4.9.0</p><dl><dt><a href="Getting%20started.html">Getting started</a></dt> +<div id="main"><h2 id="sec:The_CHICKEN_User.27s_Manual"><a href="#sec:The_CHICKEN_User.27s_Manual">The CHICKEN User's Manual</a></h2><p>This is the manual for Chicken Scheme, version 4.9.0.1</p><dl><dt><a href="Getting%20started.html">Getting started</a></dt> <dd>What is CHICKEN and how do I use it?</dd><dt><a href="Basic%20mode%20of%20operation.html">Basic mode of operation</a></dt> <dd>Compiling Scheme files.</dd><dt><a href="Using%20the%20compiler.html">Using the compiler</a></dt> <dd>Explains how to use CHICKEN to compile programs and execute them.</dd><dt><a href="Using%20the%20interpreter.html">Using the interpreter</a></dt> diff -ur chicken-4.9.0/tests/runtests.bat chicken-4.9.0.1/tests/runtests.bat --- chicken-4.9.0/tests/runtests.bat 2014-06-02 11:30:25.000000000 -0300 +++ chicken-4.9.0.1/tests/runtests.bat 2014-06-07 09:29:00.000000000 -0300 @@ -20,6 +20,10 @@ del /f /q *.exe *.so *.o *.import.* ..\foo.import.* +echo ======================================== version tests ... +%interpret% -s version-tests.scm +if errorlevel 1 exit /b 1 + echo ======================================== compiler tests ... %compile% compiler-tests.scm if errorlevel 1 exit /b 1 diff -ur chicken-4.9.0/tests/runtests.sh chicken-4.9.0.1/tests/runtests.sh --- chicken-4.9.0/tests/runtests.sh 2014-06-02 11:30:25.000000000 -0300 +++ chicken-4.9.0.1/tests/runtests.sh 2014-06-07 09:29:00.000000000 -0300 @@ -70,6 +70,8 @@ rm -f *.exe *.so *.o *.import.* a.out ../foo.import.* +echo "======================================== version tests ..." +$interpret -s version-tests.scm echo "======================================== compiler tests ..." $compile compiler-tests.scm Only in chicken-4.9.0.1/tests: version-tests.scm