diff options
Diffstat (limited to 'dev-scheme/chicken')
-rw-r--r-- | dev-scheme/chicken/Manifest | 2 | ||||
-rw-r--r-- | dev-scheme/chicken/chicken-4.8.0.3-r1.ebuild | 93 | ||||
-rw-r--r-- | dev-scheme/chicken/files/50hen-gentoo.el | 5 | ||||
-rw-r--r-- | dev-scheme/chicken/files/chicken-4.5.0-r0-ARCH-to-zARCH-hack.patch | 210 | ||||
-rw-r--r-- | dev-scheme/chicken/files/chicken-4.7.3-parallel-build.patch | 74 | ||||
-rw-r--r-- | dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-1874.patch | 25 | ||||
-rw-r--r-- | dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-2024.patch | 47 | ||||
-rw-r--r-- | dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-2075_1.patch | 161 | ||||
-rw-r--r-- | dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-2075_2.patch | 309 | ||||
-rw-r--r-- | dev-scheme/chicken/files/chicken-4.8.0.3-parallel-build.patch | 74 | ||||
-rw-r--r-- | dev-scheme/chicken/metadata.xml | 25 |
11 files changed, 1025 insertions, 0 deletions
diff --git a/dev-scheme/chicken/Manifest b/dev-scheme/chicken/Manifest new file mode 100644 index 000000000000..03cf7036c1ab --- /dev/null +++ b/dev-scheme/chicken/Manifest @@ -0,0 +1,2 @@ +DIST chicken-4.8.0.3-cve-updates.tar.bz2 218025 SHA256 3e4de410766b09706be156d8460a39a8382365470f46f2da545a577a4f986502 SHA512 2ad05fbc414fe536d94a63e4d57c98c3bb19267f99e636c2039cd2c3984778fb7f7a0765c64ed6dbe4c438c14bdc94d1f83a626191e0cb817eeca5ea1e480132 WHIRLPOOL b0c7a0280ff08e1ca66a8155e3917f6b12c4e9d9b94f2b354046d3d4cbc598d5edb43c4a210d30fda59c9a4654e95adfe7b21a0aa84ab795e46b37128235ec1e +DIST chicken-4.8.0.3.tar.gz 3959422 SHA256 6a1414e6f35586e47d7f4470eaf1779a4f73dec664b14bebf8763dd804b399c3 SHA512 8a716953fe7eeaea9039e90c5a2abad7fbe341a580176abe870c7b78bfdd11f1291d90bb9df43334b7f7ea484695ba59eba3558b9e360e5e9bd21fa106679197 WHIRLPOOL f55ca79a7df54dce9612b444a5a6a767b9b18cb9ba48a91bb5abab799d260e6c8aef83dade54d38013f41cc4d4b8bbdcda77513d75c91ab038289c6eabcca2fb diff --git a/dev-scheme/chicken/chicken-4.8.0.3-r1.ebuild b/dev-scheme/chicken/chicken-4.8.0.3-r1.ebuild new file mode 100644 index 000000000000..925f2fc8445e --- /dev/null +++ b/dev-scheme/chicken/chicken-4.8.0.3-r1.ebuild @@ -0,0 +1,93 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="3" + +inherit eutils multilib versionator + +MY_PV=$(get_version_component_range 1-3) +DESCRIPTION="Chicken is a Scheme interpreter and native Scheme to C compiler" +HOMEPAGE="http://www.call-cc.org/" +SRC_URI="http://code.call-cc.org/releases/${MY_PV}/${P}.tar.gz + mirror://gentoo/${P}-cve-updates.tar.bz2" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="alpha amd64 ppc ppc64 x86" +IUSE="emacs parallel-build doc" + +DEPEND="sys-apps/texinfo + emacs? ( virtual/emacs )" +RDEPEND="emacs? ( virtual/emacs app-emacs/scheme-complete )" + +src_prepare() { + #these patch .scm source files + # bug 467966 + epatch "${FILESDIR}"/${P}-CVE-2013-2024.patch + # bug 469392 + epatch "${FILESDIR}"/${P}-CVE-2013-2075_1.patch \ + "${FILESDIR}"/${P}-CVE-2013-2075_2.patch + # bug 462458 + epatch "${FILESDIR}"/${P}-CVE-2013-1874.patch + + # buildsystem tries to generate .c out of patched .scm files, + # which fails w/o installed chicken binary + # touch and add precompiled .c files + touch ../${P}-cve-updates/* + mv -v ../${P}-cve-updates/* . + + if use "parallel-build" + then + epatch "${FILESDIR}"/${P}-parallel-build.patch + fi + + #Because chicken's Upstream is in the habit of using variables that + #portage also uses :( eg. $ARCH and $A + sed 's,A\(\s?=\|)\),chicken&,' -i Makefile.cross-linux-mingw \ + defaults.make rules.make \ + || die "sed failed" + + sed "s,ARCH,zARCH," -i Makefile.bsd Makefile.cross-linux-mingw \ + Makefile.cygwin Makefile.haiku Makefile.linux Makefile.macosx \ + Makefile.mingw Makefile.mingw-msys Makefile.solaris \ + defaults.make rules.make \ + || die "sed failed" + + sed "s,\$(PREFIX)/lib,\$(PREFIX)/$(get_libdir)," -i defaults.make || die "sed failed" + sed "s,\$(DATADIR)/doc,\$(SHAREDIR)/doc/${P}," -i defaults.make || die "sed failed" +} + +src_compile() { + OPTIONS="PLATFORM=linux PREFIX=/usr" + if use "parallel-build" + then + emake ${OPTIONS} C_COMPILER_OPTIMIZATION_OPTIONS="${CFLAGS}" \ + LINKER_OPTIONS="${LDFLAGS}" \ + HOSTSYSTEM="${CBUILD}" || die "emake failed" + else + emake -j1 ${OPTIONS} C_COMPILER_OPTIMIZATION_OPTIONS="${CFLAGS}" \ + LINKER_OPTIONS="${LDFLAGS}" \ + HOSTSYSTEM="${CBUILD}" || die "emake failed" + fi +} + +# chicken's testsuite is not runnable before install +# upstream has been notified of the issue +RESTRICT=test + +src_install() { + # still can't run make in parallel for the install target + emake -j1 ${OPTIONS} DESTDIR="${D}" HOSTSYSTEM="${CBUILD}" \ + LINKER_OPTIONS="${LDFLAGS}" \ + install || die + + rm "${D}"/usr/share/doc/${P}/LICENSE || die + dodoc NEWS || die + + # remove HTML documentation if the user doesn't USE=doc + if ! use "doc" + then + rm -rf "${D}"/usr/share/doc/${P}/manual || die + fi +} diff --git a/dev-scheme/chicken/files/50hen-gentoo.el b/dev-scheme/chicken/files/50hen-gentoo.el new file mode 100644 index 000000000000..712b287ded9f --- /dev/null +++ b/dev-scheme/chicken/files/50hen-gentoo.el @@ -0,0 +1,5 @@ + +;;; chicken site-lisp configuration + +(add-to-list 'load-path "@SITELISP@") +(autoload 'hen-mode "hen" "Major mode for Chicken Scheme source." t) diff --git a/dev-scheme/chicken/files/chicken-4.5.0-r0-ARCH-to-zARCH-hack.patch b/dev-scheme/chicken/files/chicken-4.5.0-r0-ARCH-to-zARCH-hack.patch new file mode 100644 index 000000000000..33527cd7f4cf --- /dev/null +++ b/dev-scheme/chicken/files/chicken-4.5.0-r0-ARCH-to-zARCH-hack.patch @@ -0,0 +1,210 @@ +diff -ru a//defaults.make b//defaults.make +--- a//defaults.make 2010-05-11 18:50:35.000000000 +0300 ++++ b//defaults.make 2010-06-07 21:24:55.000000000 +0300 +@@ -31,7 +31,7 @@ + STACKDIRECTION ?= 1 + CROSS_CHICKEN ?= 0 + +-ifeq ($(ARCH),x86-64) ++ifeq ($(zARCH),x86-64) + NURSERY ?= (256*1024) + else + NURSERY ?= (128*1024) +@@ -272,10 +272,10 @@ + POSIXFILE ?= posixunix + CHICKEN_CONFIG_H = chicken-config.h + +-ifneq ($(ARCH),) ++ifneq ($(zARCH),) + HACKED_APPLY ?= 1 +-APPLY_HACK_SRC ?= apply-hack.$(ARCH)$(ASM) +-APPLY_HACK_OBJECT ?= apply-hack.$(ARCH)$(O) ++APPLY_HACK_SRC ?= apply-hack.$(zARCH)$(ASM) ++APPLY_HACK_OBJECT ?= apply-hack.$(zARCH)$(O) + endif + + ifeq ($(HACKED_APPLY),) +diff -ru a//Makefile.bsd b//Makefile.bsd +--- a//Makefile.bsd 2010-05-11 18:50:34.000000000 +0300 ++++ b//Makefile.bsd 2010-06-07 21:24:25.000000000 +0300 +@@ -33,7 +33,7 @@ + + # platform configuration + +-ARCH ?= $(shell sh $(SRCDIR)/config-arch.sh) ++zARCH ?= $(shell sh $(SRCDIR)/config-arch.sh) + + # options + +diff -ru a//Makefile.cross-linux-mingw b//Makefile.cross-linux-mingw +--- a//Makefile.cross-linux-mingw 2010-05-11 18:50:34.000000000 +0300 ++++ b//Makefile.cross-linux-mingw 2010-06-07 21:23:02.000000000 +0300 +@@ -34,7 +34,7 @@ + # platform configuration + + DLLSINPATH = 1 +-ARCH ?= x86 ++zARCH ?= x86 + HACKED_APPLY = 1 + WINDOWS = 1 + +@@ -72,7 +72,7 @@ + + # special files + +-APPLY_HACK_OBJECT = apply-hack.$(ARCH)$(O) ++APPLY_HACK_OBJECT = apply-hack.$(zARCH)$(O) + POSIXFILE = posixwin + + # select default and internal settings +diff -ru a//Makefile.cygwin b//Makefile.cygwin +--- a//Makefile.cygwin 2010-05-11 18:50:34.000000000 +0300 ++++ b//Makefile.cygwin 2010-06-07 21:24:07.000000000 +0300 +@@ -33,7 +33,7 @@ + + # platform configuration + +-ARCH ?= x86 ++zARCH ?= x86 + HACKED_APPLY ?= 1 + DLLSINPATH = 1 + +@@ -76,7 +76,7 @@ + # special files + + CHICKEN_CONFIG_H = chicken-config.h +-APPLY_HACK_OBJECT = apply-hack.$(ARCH)$(O) ++APPLY_HACK_OBJECT = apply-hack.$(zARCH)$(O) + + # select default and internal settings + +diff -ru a//Makefile.linux b//Makefile.linux +--- a//Makefile.linux 2010-05-11 18:50:34.000000000 +0300 ++++ b//Makefile.linux 2010-06-07 21:25:31.000000000 +0300 +@@ -33,7 +33,7 @@ + + # platform configuration + +-ARCH ?= $(shell sh $(SRCDIR)/config-arch.sh) ++zARCH ?= $(shell sh $(SRCDIR)/config-arch.sh) + + # options + +diff -ru a//Makefile.macosx b//Makefile.macosx +--- a//Makefile.macosx 2010-05-11 18:50:34.000000000 +0300 ++++ b//Makefile.macosx 2010-06-07 21:23:51.000000000 +0300 +@@ -33,7 +33,7 @@ + + # platform configuration + +-ARCH ?= $(shell sh $(SRCDIR)/config-arch.sh) ++zARCH ?= $(shell sh $(SRCDIR)/config-arch.sh) + + # commands + +@@ -64,19 +64,19 @@ + # special files + + CHICKEN_CONFIG_H = chicken-config.h +-APPLY_HACK_OBJECT = apply-hack.$(ARCH)$(O) ++APPLY_HACK_OBJECT = apply-hack.$(zARCH)$(O) + HACKED_APPLY ?= 1 + + # architectures + +-ifeq ($(ARCH),x86-64) ++ifeq ($(zARCH),x86-64) + C_COMPILER_OPTIONS += -m64 + LINKER_OPTIONS += -m64 + # Avoid bus error in install_name_tool + LINKER_LINK_SHARED_DLOADABLE_OPTIONS += -Wl,-headerpad -Wl,128 + else + +-ifeq ($(ARCH),universal) ++ifeq ($(zARCH),universal) + C_COMPILER_OPTIONS += -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk + LINKER_OPTIONS += -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk + endif +@@ -126,7 +126,7 @@ + endif + cat chicken-defaults.h >>$@ + +-ifeq ($(ARCH),universal) ++ifeq ($(zARCH),universal) + ifneq ($(HACKED_APPLY),) + # We undefine HACKED_APPLY in order to override rules.make + # with our own build rules. +diff -ru a//Makefile.mingw b//Makefile.mingw +--- a//Makefile.mingw 2010-05-11 18:50:34.000000000 +0300 ++++ b//Makefile.mingw 2010-06-07 21:25:59.000000000 +0300 +@@ -36,12 +36,12 @@ + # platform configuration + + DLLSINPATH = 1 +-ARCH ?= x86 ++zARCH ?= x86 + WINDOWS = 1 + WINDOWS_SHELL = 1 + UNAME_SYS = MinGW + +-ifeq ($(ARCH),x86) ++ifeq ($(zARCH),x86) + HACKED_APPLY ?= 1 + else + HACKED_APPLY = +@@ -79,7 +79,7 @@ + # special files + + CHICKEN_CONFIG_H = chicken-config.h +-APPLY_HACK_OBJECT = apply-hack.$(ARCH)$(O) ++APPLY_HACK_OBJECT = apply-hack.$(zARCH)$(O) + POSIXFILE = posixwin + + # select default and internal settings +diff -ru a//Makefile.mingw-msys b//Makefile.mingw-msys +--- a//Makefile.mingw-msys 2010-05-11 18:50:34.000000000 +0300 ++++ b//Makefile.mingw-msys 2010-06-07 21:26:33.000000000 +0300 +@@ -34,8 +34,8 @@ + # platform configuration + + DLLSINPATH = 1 +-ARCH ?= x86 +-ifeq ($(ARCH),x86) ++zARCH ?= x86 ++ifeq ($(zARCH),x86) + HACKED_APPLY ?= 1 + else + HACKED_APPLY = +@@ -79,7 +79,7 @@ + # special files + + CHICKEN_CONFIG_H = chicken-config.h +-APPLY_HACK_OBJECT = apply-hack.$(ARCH)$(O) ++APPLY_HACK_OBJECT = apply-hack.$(zARCH)$(O) + POSIXFILE = posixwin + + # select default and internal settings +diff -ru a//Makefile.solaris b//Makefile.solaris +--- a//Makefile.solaris 2010-05-11 18:50:34.000000000 +0300 ++++ b//Makefile.solaris 2010-06-07 21:25:45.000000000 +0300 +@@ -33,7 +33,7 @@ + + # platform configuration + +-ARCH ?= $(shell sh $(SRCDIR)/config-arch.sh) ++zARCH ?= $(shell sh $(SRCDIR)/config-arch.sh) + + # options + +diff -ru a//rules.make b//rules.make +--- a//rules.make 2010-05-11 18:50:36.000000000 +0300 ++++ b//rules.make 2010-06-07 21:26:10.000000000 +0300 +@@ -453,7 +453,7 @@ + # assembler objects + + ifneq ($(HACKED_APPLY),) +-$(APPLY_HACK_OBJECT): $(SRCDIR)apply-hack.$(ARCH)$(ASM) ++$(APPLY_HACK_OBJECT): $(SRCDIR)apply-hack.$(zARCH)$(ASM) + $(ASSEMBLER) $(ASSEMBLER_OPTIONS) $(ASSEMBLER_COMPILE_OPTION) $< $(ASSEMBLER_OUTPUT) + endif + diff --git a/dev-scheme/chicken/files/chicken-4.7.3-parallel-build.patch b/dev-scheme/chicken/files/chicken-4.7.3-parallel-build.patch new file mode 100644 index 000000000000..6d9628701481 --- /dev/null +++ b/dev-scheme/chicken/files/chicken-4.7.3-parallel-build.patch @@ -0,0 +1,74 @@ +diff --git a/GNUmakefile b/GNUmakefile +index 9bc40ca..c697f14 100644 +--- a/GNUmakefile ++++ b/GNUmakefile +@@ -49,6 +49,9 @@ STANDARD_TARGETS \ + fullcheck libs install-target install-dev bench + + .PHONY: $(STANDARD_TARGETS) dist boot-chicken ++# Build this file's targets sequentially. This avoids executing overlapping ++# makes if the user specifies multiple targets. ++.NOTPARALLEL: + + $(STANDARD_TARGETS): + $(MAKE) -f $(SRCDIR)/Makefile.$(PLATFORM) CONFIG=$(CONFIG) $@ +diff --git a/README b/README +index 8d0d067..551b716 100644 +--- a/README ++++ b/README +@@ -72,7 +72,7 @@ + platforms. + + Note that parallel builds (using the "-j" make(1) option) are +- *not* supported. ++ also supported. Beware that parallel install will not work though. + + If you invoke "make" later with different configuration parameters, + it is advisable to run: +diff --git a/rules.make b/rules.make +index 929b0a3..a8cb9b0 100644 +--- a/rules.make ++++ b/rules.make +@@ -243,8 +243,8 @@ lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(A): $(APPLY_HACK_OBJECT) $(LIBCHIC + + # import libraries and extensions + +-%.so: %.o +- $(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_SHARED_DLOADABLE_OPTIONS) $^ $(LINKER_OUTPUT_OPTION) $@ \ ++%.so: %.o $(PRIMARY_LIBCHICKEN) ++ $(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_SHARED_DLOADABLE_OPTIONS) $< $(LINKER_OUTPUT_OPTION) $@ \ + $(LINKER_LIBRARY_PREFIX)$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(LINKER_LIBRARY_SUFFIX) \ + $(LIBRARIES) + +@@ -578,9 +578,9 @@ chicken-profile.c: $(SRCDIR)chicken-profile.scm + $(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ + chicken-install.c: $(SRCDIR)chicken-install.scm setup-download.c setup-api.c + $(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ +-chicken-uninstall.c: $(SRCDIR)chicken-uninstall.scm ++chicken-uninstall.c: $(SRCDIR)chicken-uninstall.scm setup-api.c + $(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ +-chicken-status.c: $(SRCDIR)chicken-status.scm ++chicken-status.c: $(SRCDIR)chicken-status.scm setup-api.c + $(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ + csc.c: $(SRCDIR)csc.scm + $(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ +@@ -671,14 +671,17 @@ bench: $(CHICKEN_SHARED_EXECUTABLE) $(CSI_SHARED_EXECUTABLE) $(CSC_PROGRAM)$(EXE + .PHONY: boot-chicken + + boot-chicken: ++ $(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) CONFIG= confclean + $(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) PREFIX=/nowhere CONFIG= \ + SRCDIR=$(SRCDIR) CHICKEN=$(CHICKEN) PROGRAM_SUFFIX=-boot-stage1 STATICBUILD=1 \ + C_COMPILER_OPTIMIZATION_OPTIONS= C_HACKED_APPLY= \ +- confclean chicken-boot-stage1$(EXE) ++ chicken-boot-stage1$(EXE) ++ $(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) CONFIG= touchfiles + $(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) PREFIX=/nowhere CONFIG= \ + SRCDIR=$(SRCDIR) CHICKEN=`pwd`/chicken-boot-stage1$(EXE) PROGRAM_SUFFIX=-boot \ + STATICBUILD=1 C_COMPILER_OPTIMIZATION_OPTIONS= \ +- touchfiles chicken-boot$(EXE) confclean ++ chicken-boot$(EXE) ++ $(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) CONFIG= confclean + + .PHONY: touchfiles + diff --git a/dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-1874.patch b/dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-1874.patch new file mode 100644 index 000000000000..599ae61d322f --- /dev/null +++ b/dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-1874.patch @@ -0,0 +1,25 @@ +From http://lists.nongnu.org/archive/html/chicken-hackers/2013-03/msg00074.html +--- chicken-4.8.0.3/csi.scm ++++ chicken-4.8.0.3/csi.scm +@@ -1019,13 +1019,11 @@ EOF + (cons (cadr p) (loop (cddr p)))) ) ] + [else '()] ) ) ) + (define (loadinit) +- (let ([fn (##sys#string-append "./" init-file)]) +- (if (file-exists? fn) +- (load fn) +- (let* ([prefix (chop-separator (or (get-environment-variable "HOME") "."))] +- [fn (string-append prefix "/" init-file)] ) +- (when (file-exists? fn) +- (load fn) ) ) ) ) ) ++ (and-let* ((home (get-environment-variable "HOME")) ++ ((not (string=? home "")))) ++ (let ((fn (string-append (chop-separator home) "/" init-file))) ++ (when (file-exists? fn) ++ (load fn) ) ) ) ) + (define (evalstring str #!optional (rec (lambda _ (void)))) + (let ((in (open-input-string str))) + (do ([x (read in) (read in)]) +-- +1.7.12 + diff --git a/dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-2024.patch b/dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-2024.patch new file mode 100644 index 000000000000..d57a4bce970a --- /dev/null +++ b/dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-2024.patch @@ -0,0 +1,47 @@ +From http://code.call-cc.org/cgi-bin/gitweb.cgi?p=chicken-core.git;a=commit;h=58684f69572453acc6fed7326fa9df39be98760e +--- chicken-4.8.0.3/setup-api.scm ++++ chicken-4.8.0.3/setup-api.scm +@@ -239,7 +239,7 @@ + (cond ((string=? prg "csc") + (string-intersperse + (cons* +- (shellpath (find-program "csc")) ++ (find-program "csc") + "-feature" "compiling-extension" + (if (or (deployment-mode) + (and (feature? #:cross-chicken) +--- chicken-4.8.0.3/utils.scm ++++ chicken-4.8.0.3/utils.scm +@@ -59,20 +59,18 @@ + ;;; Quote string for shell + + (define (qs str #!optional (platform (build-platform))) +- (case platform +- ((mingw32) +- (string-append "\"" str "\"")) +- (else +- (if (zero? (string-length str)) +- "''" +- (string-concatenate +- (map (lambda (c) +- (if (or (char-whitespace? c) +- (memq c '(#\# #\" #\' #\` #\´ #\~ #\& #\% #\$ #\! #\* #\; +- #\< #\> #\\ #\( #\) #\[ #\] #\{ #\} #\?))) +- (string #\\ c) +- (string c))) +- (string->list str))))))) ++ (let ((delim (if (eq? platform 'mingw32) #\" #\')) ++ (escaped (if (eq? platform 'mingw32) "\"\"" "'\\''"))) ++ (string-append ++ (string delim) ++ (string-concatenate ++ (map (lambda (c) ++ (cond ++ ((char=? c delim) escaped) ++ ((char=? c #\nul) (error 'qs "NUL character can not be represented in shell string" str)) ++ (else (string c)))) ++ (string->list str))) ++ (string delim)))) + + + ;;; Compile and load file diff --git a/dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-2075_1.patch b/dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-2075_1.patch new file mode 100644 index 000000000000..d3de47bb6ece --- /dev/null +++ b/dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-2075_1.patch @@ -0,0 +1,161 @@ +From 9e2022652258e8a30e5cedbf0abc9cd85a0f6af7 Mon Sep 17 00:00:00 2001 +From: Peter Bex <peter.bex@xs4all.nl> +Date: Thu, 18 Apr 2013 00:31:08 +0200 +Subject: [PATCH] Implement file-select in terms of POSIX poll() for UNIX + +Signed-off-by: felix <felix@call-with-current-continuation.org> +--- + posixunix.scm | 116 ++++++++++++++++++++++++++------------------------------ + 1 files changed, 54 insertions(+), 62 deletions(-) + +diff --git a/posixunix.scm b/posixunix.scm +index 15cb535..90e0176 100644 +--- a/posixunix.scm ++++ b/posixunix.scm +@@ -67,6 +67,7 @@ static C_TLS int C_wait_status; + #endif + + #include <sys/mman.h> ++#include <sys/poll.h> + #include <time.h> + + #ifndef O_FSYNC +@@ -136,7 +137,6 @@ static C_TLS struct { + static C_TLS int C_pipefds[ 2 ]; + static C_TLS time_t C_secs; + static C_TLS struct tm C_tm; +-static C_TLS fd_set C_fd_sets[ 2 ]; + static C_TLS struct timeval C_timeval; + static C_TLS char C_hostbuf[ 256 ]; + static C_TLS struct stat C_statbuf; +@@ -303,13 +303,6 @@ static C_TLS sigset_t C_sigset; + #define C_fseek(p, n, w) C_mk_nbool(fseek(C_port_file(p), C_num_to_int(n), C_unfix(w))) + #define C_lseek(fd, o, w) C_fix(lseek(C_unfix(fd), C_unfix(o), C_unfix(w))) + +-#define C_zero_fd_set(i) FD_ZERO(&C_fd_sets[ i ]) +-#define C_set_fd_set(i, fd) FD_SET(fd, &C_fd_sets[ i ]) +-#define C_test_fd_set(i, fd) FD_ISSET(fd, &C_fd_sets[ i ]) +-#define C_C_select(m) C_fix(select(C_unfix(m), &C_fd_sets[ 0 ], &C_fd_sets[ 1 ], NULL, NULL)) +-#define C_C_select_t(m, t) (C_set_timeval(t, &C_timeval), \ +- C_fix(select(C_unfix(m), &C_fd_sets[ 0 ], &C_fd_sets[ 1 ], NULL, &C_timeval))) +- + #define C_ctime(n) (C_secs = (n), ctime(&C_secs)) + + #if defined(__SVR4) || defined(C_MACOSX) +@@ -656,60 +649,59 @@ EOF + + ;;; I/O multiplexing: + +-(define file-select +- (let ([fd_zero (foreign-lambda void "C_zero_fd_set" int)] +- [fd_set (foreign-lambda void "C_set_fd_set" int int)] +- [fd_test (foreign-lambda bool "C_test_fd_set" int int)] ) +- (lambda (fdsr fdsw . timeout) +- (let ([fdmax 0] +- [tm (if (pair? timeout) (car timeout) #f)] ) +- (fd_zero 0) +- (fd_zero 1) +- (cond [(not fdsr)] +- [(fixnum? fdsr) +- (set! fdmax fdsr) +- (fd_set 0 fdsr) ] +- [else +- (##sys#check-list fdsr 'file-select) +- (for-each +- (lambda (fd) +- (##sys#check-exact fd 'file-select) +- (set! fdmax (##core#inline "C_i_fixnum_max" fdmax fd)) +- (fd_set 0 fd) ) +- fdsr) ] ) +- (cond [(not fdsw)] +- [(fixnum? fdsw) +- (set! fdmax fdsw) +- (fd_set 1 fdsw) ] +- [else +- (##sys#check-list fdsw 'file-select) +- (for-each +- (lambda (fd) +- (##sys#check-exact fd 'file-select) +- (set! fdmax (##core#inline "C_i_fixnum_max" fdmax fd)) +- (fd_set 1 fd) ) +- fdsw) ] ) +- (let ([n (cond [tm +- (##sys#check-number tm 'file-select) +- (##core#inline "C_C_select_t" (fx+ fdmax 1) tm) ] +- [else (##core#inline "C_C_select" (fx+ fdmax 1))] ) ] ) +- (cond [(fx< n 0) +- (posix-error #:file-error 'file-select "failed" fdsr fdsw) ] +- [(fx= n 0) (values (if (pair? fdsr) '() #f) (if (pair? fdsw) '() #f))] +- [else +- (values +- (and fdsr +- (if (fixnum? fdsr) +- (fd_test 0 fdsr) +- (let ([lstr '()]) +- (for-each (lambda (fd) (when (fd_test 0 fd) (set! lstr (cons fd lstr)))) fdsr) +- lstr) ) ) +- (and fdsw +- (if (fixnum? fdsw) +- (fd_test 1 fdsw) +- (let ([lstw '()]) +- (for-each (lambda (fd) (when (fd_test 1 fd) (set! lstw (cons fd lstw)))) fdsw) +- lstw) ) ) ) ] ) ) ) ) ) ) ++(define (file-select fdsr fdsw . timeout) ++ (let* ((tm (if (pair? timeout) (car timeout) #f)) ++ (fdsrl (cond ((not fdsr) '()) ++ ((fixnum? fdsr) (list fdsr)) ++ (else (##sys#check-list fdsr 'file-select) ++ fdsr))) ++ (fdswl (cond ((not fdsw) '()) ++ ((fixnum? fdsw) (list fdsw)) ++ (else (##sys#check-list fdsw 'file-select) ++ fdsw))) ++ (nfdsr (##sys#length fdsrl)) ++ (nfdsw (##sys#length fdswl)) ++ (nfds (fx+ nfdsr nfdsw)) ++ (fds-blob (##sys#make-blob ++ (fx* nfds (foreign-value "sizeof(struct pollfd)" int))))) ++ (when tm (##sys#check-number tm)) ++ (do ((i 0 (fx+ i 1)) ++ (fdsrl fdsrl (cdr fdsrl))) ++ ((null? fdsrl)) ++ ((foreign-lambda* void ((int i) (int fd) (scheme-pointer p)) ++ "struct pollfd *fds = p;" ++ "fds[i].fd = fd; fds[i].events = POLLIN;") i (car fdsrl) fds-blob)) ++ (do ((i nfdsr (fx+ i 1)) ++ (fdswl fdswl (cdr fdswl))) ++ ((null? fdswl)) ++ ((foreign-lambda* void ((int i) (int fd) (scheme-pointer p)) ++ "struct pollfd *fds = p;" ++ "fds[i].fd = fd; fds[i].events = POLLOUT;") i (car fdswl) fds-blob)) ++ (let ((n ((foreign-lambda int "poll" scheme-pointer int int) ++ fds-blob nfds (if tm (inexact->exact (* (max 0 tm) 1000)) -1)))) ++ (cond ((fx< n 0) ++ (posix-error #:file-error 'file-select "failed" fdsr fdsw) ) ++ ((fx= n 0) (values (if (pair? fdsr) '() #f) (if (pair? fdsw) '() #f))) ++ (else ++ (let ((rl (let lp ((i 0) (res '()) (fds fdsrl)) ++ (cond ((null? fds) (##sys#fast-reverse res)) ++ (((foreign-lambda* bool ((int i) (scheme-pointer p)) ++ "struct pollfd *fds = p;" ++ "C_return(fds[i].revents & (POLLIN|POLLERR|POLLHUP|POLLNVAL));") ++ i fds-blob) ++ (lp (fx+ i 1) (cons (car fds) res) (cdr fds))) ++ (else (lp (fx+ i 1) res (cdr fds)))))) ++ (wl (let lp ((i nfdsr) (res '()) (fds fdswl)) ++ (cond ((null? fds) (##sys#fast-reverse res)) ++ (((foreign-lambda* bool ((int i) (scheme-pointer p)) ++ "struct pollfd *fds = p;" ++ "C_return(fds[i].revents & (POLLOUT|POLLERR|POLLHUP|POLLNVAL));") ++ i fds-blob) ++ (lp (fx+ i 1) (cons (car fds) res) (cdr fds))) ++ (else (lp (fx+ i 1) res (cdr fds))))))) ++ (values ++ (and fdsr (if (fixnum? fdsr) (and (memq fdsr rl) fdsr) rl)) ++ (and fdsw (if (fixnum? fdsw) (and (memq fdsw wl) fdsw) wl))))))))) + + + ;;; File attribute access: +-- +1.7.2.1 + diff --git a/dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-2075_2.patch b/dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-2075_2.patch new file mode 100644 index 000000000000..b85ea7c8b259 --- /dev/null +++ b/dev-scheme/chicken/files/chicken-4.8.0.3-CVE-2013-2075_2.patch @@ -0,0 +1,309 @@ +From http://code.call-cc.org/cgi-bin/gitweb.cgi?p=chicken-core.git;a=commitdiff;h=556108092774086b6c86c2e27daf3f740ffec091 + +--- chicken-4.8.0.3/chicken.h ++++ chicken-4.8.0.3/chicken.h +@@ -1668,6 +1668,7 @@ + C_fctexport C_word C_fcall C_read_char(C_word port) C_regparm; + C_fctexport C_word C_fcall C_peek_char(C_word port) C_regparm; + C_fctexport C_word C_fcall C_execute_shell_command(C_word string) C_regparm; ++C_fctexport int C_fcall C_check_fd_ready(int fd) C_regparm; + C_fctexport C_word C_fcall C_char_ready_p(C_word port) C_regparm; + C_fctexport C_word C_fcall C_fudge(C_word fudge_factor) C_regparm; + C_fctexport void C_fcall C_raise_interrupt(int reason) C_regparm; +--- chicken-4.8.0.3/posixunix.scm ++++ chicken-4.8.0.3/posixunix.scm +@@ -493,16 +493,7 @@ + "if(val == -1) C_return(0);" + "C_return(fcntl(fd, F_SETFL, val | O_NONBLOCK) != -1);" ) ) + +-(define ##sys#file-select-one +- (foreign-lambda* int ([int fd]) +- "fd_set in;" +- "struct timeval tm;" +- "FD_ZERO(&in);" +- "FD_SET(fd, &in);" +- "tm.tv_sec = tm.tv_usec = 0;" +- "if(select(fd + 1, &in, NULL, NULL, &tm) == -1) C_return(-1);" +- "else C_return(FD_ISSET(fd, &in) ? 1 : 0);" ) ) +- ++(define ##sys#file-select-one (foreign-lambda int "C_check_fd_ready" int) ) + + ;;; Lo-level I/O: + +--- chicken-4.8.0.3/runtime.c ++++ chicken-4.8.0.3/runtime.c +@@ -60,6 +60,11 @@ + # define EOVERFLOW 0 + #endif + ++/* TODO: Include sys/select.h? Windows doesn't seem to have it... */ ++#ifdef HAVE_POSIX_POLL ++# include <poll.h> ++#endif ++ + #if !defined(C_NONUNIX) + + # include <sys/types.h> +@@ -4036,20 +4041,39 @@ + return C_fix(n); + } + ++/* ++ * TODO: Implement something for Windows that supports selecting on ++ * arbitrary fds (there, select() only works on network sockets and ++ * poll() is not available at all). ++ */ ++C_regparm int C_fcall C_check_fd_ready(int fd) ++{ ++#ifdef HAVE_POSIX_POLL ++ struct pollfd ps; ++ ps.fd = fd; ++ ps.events = POLLIN; ++ return poll(&ps, 1, 0); ++#else ++ fd_set in; ++ struct timeval tm; ++ int rv; ++ FD_ZERO(&in); ++ FD_SET(fd, &in); ++ tm.tv_sec = tm.tv_usec = 0; ++ rv = select(fd + 1, &in, NULL, NULL, &tm); ++ if(rv > 0) { rv = FD_ISSET(fd, &in) ? 1 : 0; } ++ return rv; ++#endif ++} + + C_regparm C_word C_fcall C_char_ready_p(C_word port) + { +-#if !defined(C_NONUNIX) +- fd_set fs; +- struct timeval to; +- int fd = C_fileno(C_port_file(port)); +- +- FD_ZERO(&fs); +- FD_SET(fd, &fs); +- to.tv_sec = to.tv_usec = 0; +- return C_mk_bool(C_select(fd + 1, &fs, NULL, NULL, &to) == 1); +-#else ++#if defined(C_NONUNIX) ++ /* The best we can currently do on Windows... */ + return C_SCHEME_TRUE; ++#else ++ int fd = C_fileno(C_port_file(port)); ++ return C_mk_bool(C_check_fd_ready(fd) == 1); + #endif + } + +--- chicken-4.8.0.3/tcp.scm ++++ chicken-4.8.0.3/tcp.scm +@@ -46,6 +46,7 @@ + # define fcntl(a, b, c) 0 + # define EWOULDBLOCK 0 + # define EINPROGRESS 0 ++# define EAGAIN 0 + # define typecorrect_getsockopt(socket, level, optname, optval, optlen) \ + getsockopt(socket, level, optname, (char *)optval, optlen) + #else +@@ -111,6 +112,7 @@ + (define ##net#recv (foreign-lambda int "recv" int scheme-pointer int int)) + (define ##net#shutdown (foreign-lambda int "shutdown" int int)) + (define ##net#connect (foreign-lambda int "connect" int scheme-pointer int)) ++(define ##net#check-fd-ready (foreign-lambda int "C_check_fd_ready" int)) + + (define ##net#send + (foreign-lambda* +@@ -177,30 +179,6 @@ + if((se = getservbyname(serv, proto)) == NULL) C_return(0); + else C_return(ntohs(se->s_port));") ) + +-(define ##net#select +- (foreign-lambda* int ((int fd)) +- "fd_set in; +- struct timeval tm; +- int rv; +- FD_ZERO(&in); +- FD_SET(fd, &in); +- tm.tv_sec = tm.tv_usec = 0; +- rv = select(fd + 1, &in, NULL, NULL, &tm); +- if(rv > 0) { rv = FD_ISSET(fd, &in) ? 1 : 0; } +- C_return(rv);") ) +- +-(define ##net#select-write +- (foreign-lambda* int ((int fd)) +- "fd_set out; +- struct timeval tm; +- int rv; +- FD_ZERO(&out); +- FD_SET(fd, &out); +- tm.tv_sec = tm.tv_usec = 0; +- rv = select(fd + 1, NULL, &out, NULL, &tm); +- if(rv > 0) { rv = FD_ISSET(fd, &out) ? 1 : 0; } +- C_return(rv);") ) +- + (define ##net#gethostaddr + (foreign-lambda* bool ((scheme-pointer saddr) (c-string host) (unsigned-short port)) + "struct hostent *he = gethostbyname(host);" +@@ -212,13 +190,6 @@ + "addr->sin_addr = *((struct in_addr *)he->h_addr);" + "C_return(1);") ) + +-(define (yield) +- (##sys#call-with-current-continuation +- (lambda (return) +- (let ((ct ##sys#current-thread)) +- (##sys#setslot ct 1 (lambda () (return (##core#undefined)))) +- (##sys#schedule) ) ) ) ) +- + (define ##net#parse-host + (let ((substring substring)) + (lambda (host proto) +@@ -343,7 +314,9 @@ + (outbufsize (tbs)) + (outbuf (and outbufsize (fx> outbufsize 0) "")) + (tmr (tcp-read-timeout)) ++ (dlr (and tmr (+ (current-milliseconds) tmr))) + (tmw (tcp-write-timeout)) ++ (dlw (and tmw (+ (current-milliseconds) tmw))) + (read-input + (lambda () + (let loop () +@@ -351,12 +324,11 @@ + (cond ((eq? -1 n) + (cond ((or (eq? errno _ewouldblock) + (eq? errno _eagain)) +- (when tmr +- (##sys#thread-block-for-timeout! +- ##sys#current-thread +- (+ (current-milliseconds) tmr) ) ) ++ (when dlr ++ (##sys#thread-block-for-timeout! ++ ##sys#current-thread dlr) ) + (##sys#thread-block-for-i/o! ##sys#current-thread fd #:input) +- (yield) ++ (##sys#thread-yield!) + (when (##sys#slot ##sys#current-thread 13) + (##sys#signal-hook + #:network-timeout-error +@@ -386,7 +358,7 @@ + c) ) ) + (lambda () + (or (fx< bufindex buflen) +- (let ((f (##net#select fd))) ++ (let ((f (##net#check-fd-ready fd))) + (when (eq? f -1) + (##sys#update-errno) + (##sys#signal-hook +@@ -469,12 +441,11 @@ + (cond ((eq? -1 n) + (cond ((or (eq? errno _ewouldblock) + (eq? errno _eagain)) +- (when tmw ++ (when dlw + (##sys#thread-block-for-timeout! +- ##sys#current-thread +- (+ (current-milliseconds) tmw) ) ) +- (##sys#thread-block-for-i/o! ##sys#current-thread fd #:output) +- (yield) ++ ##sys#current-thread dlw) ) ++ (##sys#thread-block-for-i/o! ##sys#current-thread fd #:output) ++ (##sys#thread-yield!) + (when (##sys#slot ##sys#current-thread 13) + (##sys#signal-hook + #:network-timeout-error +@@ -528,38 +499,29 @@ + + (define (tcp-accept tcpl) + (##sys#check-structure tcpl 'tcp-listener) +- (let ((fd (##sys#slot tcpl 1)) +- (tma (tcp-accept-timeout))) ++ (let* ((fd (##sys#slot tcpl 1)) ++ (tma (tcp-accept-timeout)) ++ (dla (and tma (+ tma (current-milliseconds))))) + (let loop () +- (if (eq? 1 (##net#select fd)) +- (let ((fd (##net#accept fd #f #f))) +- (cond ((not (eq? -1 fd)) (##net#io-ports fd)) +- ((eq? errno _eintr) +- (##sys#dispatch-interrupt loop)) +- (else +- (##sys#update-errno) +- (##sys#signal-hook +- #:network-error +- 'tcp-accept +- (##sys#string-append "could not accept from listener - " strerror) +- tcpl)))) +- (begin +- (when tma +- (##sys#thread-block-for-timeout! +- ##sys#current-thread +- (+ (current-milliseconds) tma) ) ) +- (##sys#thread-block-for-i/o! ##sys#current-thread fd #:input) +- (yield) +- (when (##sys#slot ##sys#current-thread 13) +- (##sys#signal-hook +- #:network-timeout-error +- 'tcp-accept +- "accept operation timed out" tma fd) ) +- (loop) ) ) ) ) ) ++ (when dla ++ (##sys#thread-block-for-timeout! ##sys#current-thread dla) ) ++ (##sys#thread-block-for-i/o! ##sys#current-thread fd #:input) ++ (##sys#thread-yield!) ++ (if (##sys#slot ##sys#current-thread 13) ++ (##sys#signal-hook ++ #:network-timeout-error ++ 'tcp-accept ++ "accept operation timed out" tma fd) ) ++ (let ((fd (##net#accept fd #f #f))) ++ (cond ((not (eq? -1 fd)) (##net#io-ports fd)) ++ ((eq? errno _eintr) ++ (##sys#dispatch-interrupt loop)) ++ (else ++ (network-error 'tcp-accept "could not accept from listener" tcpl)))) ) ) ) + + (define (tcp-accept-ready? tcpl) + (##sys#check-structure tcpl 'tcp-listener 'tcp-accept-ready?) +- (let ((f (##net#select (##sys#slot tcpl 1)))) ++ (let ((f (##net#check-fd-ready (##sys#slot tcpl 1)))) + (when (eq? -1 f) + (##sys#update-errno) + (##sys#signal-hook +@@ -578,8 +540,9 @@ + (define general-strerror (foreign-lambda c-string "strerror" int)) + + (define (tcp-connect host . more) +- (let ((port (optional more #f)) +- (tmc (tcp-connect-timeout))) ++ (let* ((port (optional more #f)) ++ (tmc (tcp-connect-timeout)) ++ (dlc (and tmc (+ (current-milliseconds) tmc)))) + (##sys#check-string host) + (unless port + (set!-values (host port) (##net#parse-host host "tcp")) +@@ -606,23 +569,9 @@ + (let loop () + (when (eq? -1 (##net#connect s addr _sockaddr_in_size)) + (cond ((eq? errno _einprogress) +- (let loop2 () +- (let ((f (##net#select-write s))) +- (when (eq? f -1) (fail)) +- (unless (eq? f 1) +- (when tmc +- (##sys#thread-block-for-timeout! +- ##sys#current-thread +- (+ (current-milliseconds) tmc) ) ) +- (##sys#thread-block-for-i/o! ##sys#current-thread s #:all) +- (yield) +- (when (##sys#slot ##sys#current-thread 13) +- (##net#close s) +- (##sys#signal-hook +- #:network-timeout-error +- 'tcp-connect +- "connect operation timed out" tmc s) ) +- (loop2) ) ) )) ++ (when dlc ++ (##sys#thread-block-for-timeout! ##sys#current-thread dlc)) ++ (##sys#thread-block-for-i/o! ##sys#current-thread s #:all)) + ((eq? errno _eintr) + (##sys#dispatch-interrupt loop)) + (else (fail) ) ))) diff --git a/dev-scheme/chicken/files/chicken-4.8.0.3-parallel-build.patch b/dev-scheme/chicken/files/chicken-4.8.0.3-parallel-build.patch new file mode 100644 index 000000000000..a42dd2ea4c14 --- /dev/null +++ b/dev-scheme/chicken/files/chicken-4.8.0.3-parallel-build.patch @@ -0,0 +1,74 @@ +diff --git a/GNUmakefile b/GNUmakefile +index 9bc40ca..c697f14 100644 +--- a/GNUmakefile ++++ b/GNUmakefile +@@ -49,6 +49,9 @@ STANDARD_TARGETS \ + fullcheck libs install-target install-dev bench + + .PHONY: $(STANDARD_TARGETS) dist boot-chicken ++# Build this file's targets sequentially. This avoids executing overlapping ++# makes if the user specifies multiple targets. ++.NOTPARALLEL: + + $(STANDARD_TARGETS): + $(MAKE) -f $(SRCDIR)/Makefile.$(PLATFORM) CONFIG=$(CONFIG) $@ +diff --git a/README b/README +index 8d0d067..551b716 100644 +--- a/README ++++ b/README +@@ -72,7 +72,7 @@ + platforms. + + Note that parallel builds (using the "-j" make(1) option) are +- *not* supported. ++ also supported. Beware that parallel install will not work though. + + If you invoke "make" later with different configuration parameters, + it is advisable to run: +diff --git a/rules.make b/rules.make +index 929b0a3..a8cb9b0 100644 +--- a/rules.make ++++ b/rules.make +@@ -243,8 +243,8 @@ lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(A): $(APPLY_HACK_OBJECT) $(LIBCHIC + + # import libraries and extensions + +-%.so: %.o +- $(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_SHARED_DLOADABLE_OPTIONS) $^ $(LINKER_OUTPUT_OPTION) $@ \ ++%.so: %.o $(PRIMARY_LIBCHICKEN) ++ $(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_SHARED_DLOADABLE_OPTIONS) $< $(LINKER_OUTPUT_OPTION) $@ \ + $(LINKER_LIBRARY_PREFIX)$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(LINKER_LIBRARY_SUFFIX) \ + $(LIBRARIES) + +@@ -582,9 +582,9 @@ chicken-profile.c: $(SRCDIR)chicken-profile.scm + $(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ + chicken-install.c: $(SRCDIR)chicken-install.scm setup-download.c setup-api.c + $(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ +-chicken-uninstall.c: $(SRCDIR)chicken-uninstall.scm ++chicken-uninstall.c: $(SRCDIR)chicken-uninstall.scm setup-api.c + $(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ +-chicken-status.c: $(SRCDIR)chicken-status.scm ++chicken-status.c: $(SRCDIR)chicken-status.scm setup-api.c + $(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ + csc.c: $(SRCDIR)csc.scm + $(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ +@@ -675,14 +675,17 @@ bench: $(CHICKEN_SHARED_EXECUTABLE) $(CSI_SHARED_EXECUTABLE) $(CSC_PROGRAM)$(EXE + .PHONY: boot-chicken + + boot-chicken: ++ $(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) CONFIG= confclean + $(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) PREFIX=/nowhere CONFIG= \ + CHICKEN=$(CHICKEN) PROGRAM_SUFFIX=-boot-stage1 STATICBUILD=1 \ + C_COMPILER_OPTIMIZATION_OPTIONS= C_HACKED_APPLY= BUILDING_CHICKEN_BOOT=1 \ +- confclean chicken-boot-stage1$(EXE) ++ chicken-boot-stage1$(EXE) ++ $(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) CONFIG= touchfiles + $(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) PREFIX=/nowhere CONFIG= \ + CHICKEN=.$(SEP)chicken-boot-stage1$(EXE) PROGRAM_SUFFIX=-boot \ + STATICBUILD=1 C_COMPILER_OPTIMIZATION_OPTIONS= \ +- touchfiles chicken-boot$(EXE) confclean ++ chicken-boot$(EXE) ++ $(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) CONFIG= confclean + + .PHONY: touchfiles + diff --git a/dev-scheme/chicken/metadata.xml b/dev-scheme/chicken/metadata.xml new file mode 100644 index 000000000000..cc5af33bd39b --- /dev/null +++ b/dev-scheme/chicken/metadata.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> +<herd>scheme</herd> +<herd>proxy-maintainers</herd> +<maintainer> + <email>ewfalor@gmail.com</email> + <name>Erik Falor</name> +</maintainer> +<maintainer> + <email>maksbotan@gentoo.org</email> + <name>Maxim Koltsov</name> +</maintainer> +<longdescription> +CHICKEN is a compiler for the Scheme programming language. CHICKEN produces +portable, efficient C, supports almost all of the current Scheme language +standard, the Revised5 Report on the Algorithmic Language Scheme (R5RS ), and +includes many enhancements and extensions. CHICKEN runs on MacOS X, Windows, and +many Unix flavours. +</longdescription> +<use> + <flag name="parallel-build">Enable testing parallel build mode added in + 4.7.3 version. Can still be not working</flag> +</use> +</pkgmetadata> |