From 438889f8614d35725c7e1fbacf59833ebc684261 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Tue, 15 Apr 2008 16:32:15 +0000 Subject: - update to 1.8.4 - add %%check - support slib-3a5 - move slibcat and slib symlink out of site directory - set umask in scriptlet (#242936) --- .cvsignore | 2 +- guile-1.8.0-multilib.patch | 42 ----- guile-1.8.0-rpath.patch | 22 --- guile-1.8.1-slib.patch | 404 -------------------------------------------- guile-1.8.4-multilib.patch | 45 +++++ guile-1.8.4-testsuite.patch | 21 +++ guile.spec | 72 ++++++-- sources | 2 +- 8 files changed, 123 insertions(+), 487 deletions(-) delete mode 100644 guile-1.8.0-multilib.patch delete mode 100644 guile-1.8.0-rpath.patch delete mode 100644 guile-1.8.1-slib.patch create mode 100644 guile-1.8.4-multilib.patch create mode 100644 guile-1.8.4-testsuite.patch diff --git a/.cvsignore b/.cvsignore index db620f4..14ac502 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -guile-1.8.2.tar.gz +guile-1.8.4.tar.gz diff --git a/guile-1.8.0-multilib.patch b/guile-1.8.0-multilib.patch deleted file mode 100644 index 3c08022..0000000 --- a/guile-1.8.0-multilib.patch +++ /dev/null @@ -1,42 +0,0 @@ ---- guile-1.8.0/libguile/Makefile.in.multilib 2006-05-23 14:28:20.000000000 +0200 -+++ guile-1.8.0/libguile/Makefile.in 2006-05-23 15:52:05.000000000 +0200 -@@ -1622,6 +1622,11 @@ - f=$(am__strip_dir) \ - echo " $(nodist_modincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(modincludedir)/$$f'"; \ - $(nodist_modincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(modincludedir)/$$f"; \ -+ if [ "$$f" = "scmconfig.h" ]; then \ -+ grep -q "SCM_SIZEOF_LONG 4" "$(DESTDIR)$(modincludedir)/$$f" && g=32 || g=64; \ -+ mv "$(DESTDIR)$(modincludedir)/$$f" "$(DESTDIR)$(modincludedir)/scmconfig-$$g.h"; \ -+ $(nodist_modincludeHEADERS_INSTALL) "$${d}scmconfig.h.mlib" "$(DESTDIR)$(modincludedir)/$$f"; \ -+ fi; \ - done - - uninstall-nodist_modincludeHEADERS: ---- guile-1.8.0/libguile/guile-snarf.in.multilib 2006-02-12 14:29:12.000000000 +0100 -+++ guile-1.8.0/libguile/guile-snarf.in 2006-05-23 15:53:23.000000000 +0200 -@@ -39,7 +39,6 @@ - # #endif - # - # If the environment variable CPP is set, use its value instead of the --# C pre-processor determined at Guile configure-time: "@CPP@". - - # Code: - -@@ -72,7 +71,7 @@ - tempdir="/tmp/snarf.$$" - (umask 077 && mkdir $tempdir) || exit 1 - temp="$tempdir/tmp" --if [ x"$CPP" = x ] ; then cpp="@CPP@" ; else cpp="$CPP" ; fi -+if [ x"$CPP" = x ] ; then cpp="gcc -E" ; else cpp="$CPP" ; fi - - trap "rm -rf $tempdir" 0 1 2 15 - ---- guile-1.8.0/libguile/scmconfig.h.mlib.multilib 1970-01-01 01:00:00.000000000 +0100 -+++ guile-1.8.0/libguile/scmconfig.h.mlib 2006-05-23 15:51:30.000000000 +0200 -@@ -0,0 +1,6 @@ -+#include -+#if __WORDSIZE == 32 -+#include "libguile/scmconfig-32.h" -+#else -+#include "libguile/scmconfig-64.h" -+#endif diff --git a/guile-1.8.0-rpath.patch b/guile-1.8.0-rpath.patch deleted file mode 100644 index 6b4157d..0000000 --- a/guile-1.8.0-rpath.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- guile-1.8.0/configure.64bit 2006-02-20 22:29:46.000000000 +0100 -+++ guile-1.8.0/configure 2006-03-10 15:56:40.000000000 +0100 -@@ -9823,7 +9823,7 @@ - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` -- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" -+ sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on ---- guile-1.8.0/guile-readline/configure.64bit 2006-02-20 22:30:25.000000000 +0100 -+++ guile-1.8.0/guile-readline/configure 2006-03-10 15:57:02.000000000 +0100 -@@ -9314,7 +9314,7 @@ - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` -- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" -+ sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on diff --git a/guile-1.8.1-slib.patch b/guile-1.8.1-slib.patch deleted file mode 100644 index e1f550e..0000000 --- a/guile-1.8.1-slib.patch +++ /dev/null @@ -1,404 +0,0 @@ ---- guile-1.8.1/ice-9/slib.scm.slib 2006-02-18 07:08:44.000000000 +0100 -+++ guile-1.8.1/ice-9/slib.scm 2007-01-23 13:09:40.000000000 +0100 -@@ -16,399 +16,5 @@ - ;;;; License along with this library; if not, write to the Free Software - ;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - ;;;; --(define-module (ice-9 slib) -- :export (slib:load slib:load-source defmacro:load -- implementation-vicinity library-vicinity home-vicinity -- scheme-implementation-type scheme-implementation-version -- output-port-width output-port-height array-indexes -- make-random-state -- -1+ ? >=? -- require slib:error slib:exit slib:warn slib:eval -- defmacro:eval logical:logand logical:logior logical:logxor -- logical:lognot logical:ash logical:logcount logical:integer-length -- logical:bit-extract logical:integer-expt logical:ipow-by-squaring -- slib:eval-load slib:tab slib:form-feed difftime offset-time -- software-type) -- :replace (delete-file open-file provide provided? system) -- :no-backtrace) -- -- -- --(define (eval-load evl) -- (if (not (file-exists? )) -- (set! (string-append (scheme-file-suffix)))) -- (call-with-input-file -- (lambda (port) -- (let ((old-load-pathname *load-pathname*)) -- (set! *load-pathname* ) -- (do ((o (read port) (read port))) -- ((eof-object? o)) -- (evl o)) -- (set! *load-pathname* old-load-pathname))))) -- -- -- --(define slib:exit quit) --(define slib:error error) --(define slib:warn warn) --(define slib:eval (lambda (x) (eval x slib-module))) --(define defmacro:eval (lambda (x) (eval x (interaction-environment)))) --(define logical:logand logand) --(define logical:logior logior) --(define logical:logxor logxor) --(define logical:lognot lognot) --(define logical:ash ash) --(define logical:logcount logcount) --(define logical:integer-length integer-length) --(define logical:bit-extract bit-extract) --(define logical:integer-expt integer-expt) --(define slib:eval-load eval-load) --(define slib:tab #\tab) --(define slib:form-feed #\page) -- --(define slib-module (current-module)) -- --(define (defined? symbol) -- (module-defined? slib-module symbol)) -- --;;; *FEATURES* should be set to a list of symbols describing features --;;; of this implementation. Suggestions for features are: --(set! *features* -- (append -- '( -- source ;can load scheme source files -- ;(slib:load-source "filename") --; compiled ;can load compiled files -- ;(slib:load-compiled "filename") -- -- ;; Scheme report features -- --; rev5-report ;conforms to -- eval ;R5RS two-argument eval --; values ;R5RS multiple values -- dynamic-wind ;R5RS dynamic-wind --; macro ;R5RS high level macros -- delay ;has DELAY and FORCE -- multiarg-apply ;APPLY can take more than 2 args. --; rationalize -- rev4-optional-procedures ;LIST-TAIL, STRING->LIST, -- ;LIST->STRING, STRING-COPY, -- ;STRING-FILL!, LIST->VECTOR, -- ;VECTOR->LIST, and VECTOR-FILL! -- --; rev4-report ;conforms to -- --; ieee-p1178 ;conforms to -- --; rev3-report ;conforms to -- -- rev2-procedures ;SUBSTRING-MOVE-LEFT!, -- ;SUBSTRING-MOVE-RIGHT!, -- ;SUBSTRING-FILL!, -- ;STRING-NULL?, APPEND!, 1+, -- ;-1+, ?, >=? --; object-hash ;has OBJECT-HASH -- -- multiarg/and- ;/ and - can take more than 2 args. -- with-file ;has WITH-INPUT-FROM-FILE and -- ;WITH-OUTPUT-FROM-FILE --; transcript ;TRANSCRIPT-ON and TRANSCRIPT-OFF --; ieee-floating-point ;conforms to IEEE Standard 754-1985 -- ;IEEE Standard for Binary -- ;Floating-Point Arithmetic. -- full-continuation ;can return multiple times -- -- ;; Other common features -- --; srfi ;srfi-0, COND-EXPAND finds all srfi-* --; sicp ;runs code from Structure and -- ;Interpretation of Computer -- ;Programs by Abelson and Sussman. -- defmacro ;has Common Lisp DEFMACRO --; record ;has user defined data structures -- string-port ;has CALL-WITH-INPUT-STRING and -- ;CALL-WITH-OUTPUT-STRING --; sort --; pretty-print --; object->string --; format ;Common-lisp output formatting --; trace ;has macros: TRACE and UNTRACE --; compiler ;has (COMPILER) --; ed ;(ED) is editor -- -- ;; core definitions compatible, plus `make-random-state' below -- random -- ) -- -- (if (defined? 'getenv) -- '(getenv) -- '()) -- -- (if (defined? 'current-time) -- '(current-time) -- '()) -- -- (if (defined? 'system) -- '(system) -- '()) -- -- (if (defined? 'char-ready?) -- '(char-ready?) -- '()) -- -- *features*)) -- --;; The array module specified by slib 3a1 is not the same as what guile --;; provides, so we must remove `array' from the features list. --;; --;; The main difference is `create-array' which is similar to --;; `make-uniform-array', but the `Ac64' etc prototype procedures incorporate --;; an initial fill element into the prototype. --;; --;; Believe the array-for-each module will need to be taken from slib when --;; the array module is taken from there, since what the array module creates --;; won't be understood by the guile functions. So remove `array-for-each' --;; from the features list too. --;; --;; Also, slib 3a1 array-for-each specifies an `array-map' which is not in --;; guile (but could be implemented quite easily). --;; --;; ENHANCE-ME: It'd be nice to implement what's necessary, since the guile --;; functions should be more efficient than the implementation in slib. --;; --;; FIXME: Since the *features* variable is shared by slib and the guile --;; core, removing these feature symbols has the unhappy effect of making it --;; look like they aren't in the core either. Let's assume that arrays have --;; been present unconditionally long enough that no guile-specific code will --;; bother to test. An alternative would be to make a new separate --;; *features* variable which the slib stuff operated on, leaving the core --;; mechanism alone. That might be a good thing anyway. --;; --(set! *features* (delq 'array *features*)) --(set! *features* (delq 'array-for-each *features*)) -- --;; The random module in slib 3a1 provides a `random:chunk' which is used by --;; the random-inexact module. Guile doesn't provide random:chunk so we must --;; remove 'random from `*features*' to use the slib code. --;; --;; ENHANCE-ME: Maybe Guile could provide a `random:chunk', the rest of the --;; random module is already the same as Guile. --;; --;; FIXME: As per the array bits above, *features* is shared by slib and the --;; guile core, so removing 'random has the unhappy effect of making it look --;; like this isn't in the core. Let's assume random numbers have been --;; present unconditionally long enough that no guile-specific code will --;; bother to test. --;; --(set! *features* (delq 'random *features*)) -- -- --;;; FIXME: Because uers want require to search the path, this uses --;;; load-from-path, which probably isn't a hot idea. slib --;;; doesn't expect this function to search a path, so I expect to get --;;; bug reports at some point complaining that the wrong file gets --;;; loaded when something accidentally appears in the path before --;;; slib, etc. ad nauseum. However, the right fix seems to involve --;;; changing catalog:get in slib/require.scm, and I don't expect --;;; Aubrey will integrate such a change. So I'm just going to punt --;;; for the time being. --(define (slib:load name) -- (save-module-excursion -- (lambda () -- (set-current-module slib-module) -- (let ((errinfo (catch 'system-error -- (lambda () -- (load-from-path name) -- #f) -- (lambda args args)))) -- (if (and errinfo -- (catch 'system-error -- (lambda () -- (load-from-path -- (string-append name ".scm")) -- #f) -- (lambda args args))) -- (apply throw errinfo)))))) -- --(define slib:load-source slib:load) --(define defmacro:load slib:load) -- --(define slib-parent-dir -- (let* ((path (%search-load-path "slib/require.scm"))) -- (if path -- (substring path 0 (- (string-length path) 17)) -- (error "Could not find slib/require.scm in " %load-path)))) -- --(define (implementation-vicinity) -- (string-append slib-parent-dir "/")) --(define (library-vicinity) -- (string-append (implementation-vicinity) "slib/")) --(define home-vicinity -- (let ((home-path (getenv "HOME"))) -- (lambda () home-path))) --(define (scheme-implementation-type) 'guile) --(define scheme-implementation-version version) --;;; (scheme-implementation-home-page) should return a (string) URI --;;; (Uniform Resource Identifier) for this scheme implementation's home --;;; page; or false if there isn't one. --(define (scheme-implementation-home-page) -- "http://www.gnu.org/software/guile/guile.html") -- --;; legacy from r3rs, but slib says all implementations provide these --;; ("Legacy" section of the "Miscellany" node in the manual) --(define-public t #t) --(define-public nil #f) -- --;; ENHANCE-ME: Could call ioctl TIOCGWINSZ to get the size of a tty (see --;; "man 4 tty_ioctl" on a GNU/Linux system), on systems with that. --(define (output-port-width . arg) 80) --(define (output-port-height . arg) 24) -- --;; slib 3a1 and up, straight from Template.scm --(define-public (call-with-open-ports . ports) -- (define proc (car ports)) -- (cond ((procedure? proc) (set! ports (cdr ports))) -- (else (set! ports (reverse ports)) -- (set! proc (car ports)) -- (set! ports (reverse (cdr ports))))) -- (let ((ans (apply proc ports))) -- (for-each close-port ports) -- ans)) -- --;; slib (version 3a1) requires open-file accept a symbol r, rb, w or wb for --;; MODES, so extend the guile core open-file accordingly. --;; --;; slib (version 3a1) also calls open-file with strings "rb" or "wb", not --;; sure if that's intentional, but in any case this extension continues to --;; accept strings to make that work. --;; --(define-public (open-file filename modes) -- (if (symbol? modes) -- (set! modes (symbol->string modes))) -- ((@ (guile) open-file) filename modes)) -- --;; returning #t/#f instead of throwing an error for failure --(define-public (delete-file filename) -- (catch 'system-error -- (lambda () ((@ (guile) delete-file) filename) #t) -- (lambda args #f))) -- --;; Nothing special to do for this, so straight from Template.scm. Maybe --;; "sensible-browser" for a debian system would be worth trying too (and --;; would be good on a tty). --(define-public (browse-url url) -- (define (try cmd end) (zero? (system (string-append cmd url end)))) -- (or (try "netscape-remote -remote 'openURL(" ")'") -- (try "netscape -remote 'openURL(" ")'") -- (try "netscape '" "'&") -- (try "netscape '" "'"))) -- --;;; {array-for-each} --(define (array-indexes ra) -- (let ((ra0 (apply make-array '() (array-shape ra)))) -- (array-index-map! ra0 list) -- ra0)) -- --;;; {Random numbers} --;;; --(define (make-random-state . args) -- (let ((seed (if (null? args) *random-state* (car args)))) -- (cond ((string? seed)) -- ((number? seed) (set! seed (number->string seed))) -- (else (let () -- (require 'object->string) -- (set! seed (object->limited-string seed 50))))) -- (seed->random-state seed))) -- --;;; {rev2-procedures} --;;; -- --(define -1+ 1-) --(define ? >) --(define >=? >=) -- --;;; {system} --;;; --;; If the program run is killed by a signal, the shell normally gives an --;; exit code of 128+signum. If the shell itself is killed by a signal then --;; we do the same 128+signum here. --;; --;; "stop-sig" shouldn't arise here, since system shouldn't be calling --;; waitpid with WUNTRACED, but allow for it anyway, just in case. --;; --(if (memq 'system *features*) -- (define-public system -- (lambda (str) -- (let ((st ((@ (guile) system) str))) -- (or (status:exit-val st) -- (+ 128 (or (status:term-sig st) -- (status:stop-sig st)))))))) -- --;;; {Time} --;;; -- --(define difftime -) --(define offset-time +) -- -- --(define define -- (procedure->memoizing-macro -- (lambda (exp env) -- (if (= (length env) 1) -- `(define-public ,@(cdr exp)) -- `(define-private ,@(cdr exp)))))) -- --;;; Hack to make syncase macros work in the slib module --(if (nested-ref the-root-module '(app modules ice-9 syncase)) -- (set-object-property! (module-local-variable (current-module) 'define) -- '*sc-expander* -- '(define))) -- --(define (software-type) -- "Return a symbol describing the current platform's operating system. --This may be one of AIX, VMS, UNIX, COHERENT, WINDOWS, MS-DOS, OS/2, --THINKC, AMIGA, ATARIST, MACH, or ACORN. -- --Note that most varieties of Unix are considered to be simply \"UNIX\". --That is because when a program depends on features that are not present --on every operating system, it is usually better to test for the presence --or absence of that specific feature. The return value of --@code{software-type} should only be used for this purpose when there is --no other easy or unambiguous way of detecting such features." -- 'UNIX) -- --(slib:load (in-vicinity (library-vicinity) "require.scm")) -- --(define require require:require) -- --;; {Extensions to the require system so that the user can add new --;; require modules easily.} -- --(define *vicinity-table* -- (list -- (cons 'implementation (implementation-vicinity)) -- (cons 'library (library-vicinity)))) -- --(define (install-require-vicinity name vicinity) -- (let ((entry (assq name *vicinity-table*))) -- (if entry -- (set-cdr! entry vicinity) -- (set! *vicinity-table* -- (acons name vicinity *vicinity-table*))))) -- --(define (install-require-module name vicinity-name file-name) -- (if (not *catalog*) ;Fix which loads catalog in slib -- (catalog:get 'random)) ;(doesn't load the feature 'random) -- (let ((entry (assq name *catalog*)) -- (vicinity (cdr (assq vicinity-name *vicinity-table*)))) -- (let ((path-name (in-vicinity vicinity file-name))) -- (if entry -- (set-cdr! entry path-name) -- (set! *catalog* -- (acons name path-name *catalog*)))))) -- --(define (make-exchanger obj) -- (lambda (rep) (let ((old obj)) (set! obj rep) old))) -+(define-module (ice-9 slib)) -+(load-from-path "slib/guile.init") diff --git a/guile-1.8.4-multilib.patch b/guile-1.8.4-multilib.patch new file mode 100644 index 0000000..73fd4d8 --- /dev/null +++ b/guile-1.8.4-multilib.patch @@ -0,0 +1,45 @@ +diff -up guile-1.8.4/libguile/Makefile.in.multilib guile-1.8.4/libguile/Makefile.in +--- guile-1.8.4/libguile/Makefile.in.multilib 2008-02-20 19:34:05.000000000 +0100 ++++ guile-1.8.4/libguile/Makefile.in 2008-02-20 19:34:05.000000000 +0100 +@@ -1630,6 +1630,11 @@ install-nodist_modincludeHEADERS: $(nodi + f=$(am__strip_dir) \ + echo " $(nodist_modincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(modincludedir)/$$f'"; \ + $(nodist_modincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(modincludedir)/$$f"; \ ++ if [ "$$f" = "scmconfig.h" ]; then \ ++ grep -q "SCM_SIZEOF_LONG 4" "$(DESTDIR)$(modincludedir)/$$f" && g=32 || g=64; \ ++ mv "$(DESTDIR)$(modincludedir)/$$f" "$(DESTDIR)$(modincludedir)/scmconfig-$$g.h"; \ ++ $(nodist_modincludeHEADERS_INSTALL) "$${d}scmconfig.h.mlib" "$(DESTDIR)$(modincludedir)/$$f"; \ ++ fi; \ + done + + uninstall-nodist_modincludeHEADERS: +diff -up guile-1.8.4/libguile/guile-snarf.in.multilib guile-1.8.4/libguile/guile-snarf.in +--- guile-1.8.4/libguile/guile-snarf.in.multilib 2008-02-12 15:04:09.000000000 +0100 ++++ guile-1.8.4/libguile/guile-snarf.in 2008-02-20 19:40:21.000000000 +0100 +@@ -39,7 +39,6 @@ + # #endif + # + # If the environment variable CPP is set, use its value instead of the +-# C pre-processor determined at Guile configure-time: "@CPP@". + + # Code: + +@@ -75,7 +74,7 @@ tempdir="$TMPDIR/guile-snarf.$$" + (umask 077 && mkdir $tempdir) || exit 1 + temp="$tempdir/tmp" + +-if [ x"$CPP" = x ] ; then cpp="@CPP@" ; else cpp="$CPP" ; fi ++if [ x"$CPP" = x ] ; then cpp="gcc -E" ; else cpp="$CPP" ; fi + + trap "rm -rf $tempdir" 0 1 2 15 + +diff -up /dev/null guile-1.8.4/libguile/scmconfig.h.mlib +--- /dev/null 2007-12-22 10:41:34.485021827 +0100 ++++ guile-1.8.4/libguile/scmconfig.h.mlib 2008-02-20 19:34:05.000000000 +0100 +@@ -0,0 +1,6 @@ ++#include ++#if __WORDSIZE == 32 ++#include "libguile/scmconfig-32.h" ++#else ++#include "libguile/scmconfig-64.h" ++#endif diff --git a/guile-1.8.4-testsuite.patch b/guile-1.8.4-testsuite.patch new file mode 100644 index 0000000..180c9c8 --- /dev/null +++ b/guile-1.8.4-testsuite.patch @@ -0,0 +1,21 @@ +diff -up guile-1.8.4/test-suite/tests/popen.test.testsuite guile-1.8.4/test-suite/tests/popen.test +--- guile-1.8.4/test-suite/tests/popen.test.testsuite 2006-08-25 03:21:39.000000000 +0200 ++++ guile-1.8.4/test-suite/tests/popen.test 2008-02-21 10:24:09.000000000 +0100 +@@ -82,7 +82,7 @@ + (port (with-error-to-port (cdr pair) + (lambda () + (open-input-pipe +- "exec 1>/dev/null; echo closed 1>&2; exec 2>/dev/null; sleep 999"))))) ++ "exec 1>/dev/null; echo closed 1>&2; exec 2>/dev/null; sleep 3"))))) + (close-port (cdr pair)) ;; write side + (and (char? (read-char (car pair))) ;; wait for child to do its thing + (char-ready? port) +@@ -132,7 +132,7 @@ + (port (with-error-to-port (cdr pair) + (lambda () + (open-output-pipe +- "exec 0&2; exec 2>/dev/null; sleep 999"))))) ++ "exec 0&2; exec 2>/dev/null; sleep 3"))))) + (close-port (cdr pair)) ;; write side + (and (char? (read-char (car pair))) ;; wait for child to do its thing + (catch 'system-error diff --git a/guile.spec b/guile.spec index e04fc5f..9fbbc80 100644 --- a/guile.spec +++ b/guile.spec @@ -1,13 +1,13 @@ Summary: A GNU implementation of Scheme for application extensibility Name: guile -Version: 1.8.2 -Release: 2%{?dist} +%define mver 1.8 +Version: 1.8.4 +Release: 1%{?dist} Source: ftp://ftp.gnu.org/pub/gnu/guile/guile-%{version}.tar.gz URL: http://www.gnu.org/software/guile/ -Patch1: guile-1.8.0-rpath.patch -Patch2: guile-1.8.1-slib.patch +Patch1: guile-1.8.4-multilib.patch +Patch2: guile-1.8.4-testsuite.patch Patch4: guile-1.8.1-deplibs.patch -Patch5: guile-1.8.0-multilib.patch License: GPLv2+ and LGPLv2+ Group: Development/Languages BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -42,15 +42,18 @@ install the guile package. %prep %setup -q -%patch1 -p1 -b .rpath -%patch2 -p1 -b .slib +%patch1 -p1 -b .multilib +%patch2 -p1 -b .testsuite %patch4 -p1 -b .deplibs -%patch5 -p1 -b .multilib %build %configure --disable-static --disable-error-on-warning +# Remove RPATH +sed -i 's|" $sys_lib_dlsearch_path "|" $sys_lib_dlsearch_path %{_libdir} "|' \ + {,guile-readline/}libtool + make %{?_smp_mflags} %install @@ -70,6 +73,12 @@ for i in $RPM_BUILD_ROOT%{_infodir}/goops.info; do iconv -f iso8859-1 -t utf-8 < $i > $i.utf8 && mv -f ${i}{.utf8,} done +touch $RPM_BUILD_ROOT%{_datadir}/guile/%{mver}/slibcat +ln -s ../../slib $RPM_BUILD_ROOT%{_datadir}/guile/%{mver}/slib + +%check +make %{?_smp_mflags} check + %clean rm -rf $RPM_BUILD_ROOT @@ -93,17 +102,29 @@ fi : %triggerin -- slib -ln -sfT ../../slib %{_datadir}/guile/site/slib -rm -f %{_datadir}/guile/site/slibcat -SCHEME_LIBRARY_PATH=%{_datadir}/slib/ \ - %{_bindir}/guile -l %{_datadir}/slib/guile.init -c "\ - (define (implementation-vicinity) \"%{_datadir}/guile/site/\") - (require 'new-catalog)" &> /dev/null +# Remove files created in guile < 1.8.3-2 +rm -f %{_datadir}/guile/site/slib{,cat} + +ln -sfT ../../slib %{_datadir}/guile/%{mver}/slib +rm -f %{_datadir}/guile/%{mver}/slibcat +export SCHEME_LIBRARY_PATH=%{_datadir}/slib/ +umask 0022 + +# Build SLIB catalog +for pre in \ + "(use-modules (ice-9 slib))" \ + "(load \"%{_datadir}/slib/guile.init\")" +do + %{_bindir}/guile -c "$pre + (set! implementation-vicinity (lambda () \"%{_datadir}/guile/%{mver}/\")) + (require 'new-catalog)" &> /dev/null && break + rm -f %{_datadir}/guile/%{mver}/slibcat +done : %triggerun -- slib -if [ "$1" = 0 -o "$2" = 0 ]; then - rm -f %{_datadir}/guile/site/slib{,cat} +if [ "$2" = 0 ]; then + rm -f %{_datadir}/guile/%{mver}/slib{,cat} fi %files @@ -115,7 +136,17 @@ fi %{_libdir}/libguile*.so.* %{_libdir}/libguilereadline-*.so %{_libdir}/libguile-srfi-srfi-*.so -%{_datadir}/guile +%dir %{_datadir}/guile +%dir %{_datadir}/guile/%{mver} +%{_datadir}/guile/%{mver}/ice-9 +%{_datadir}/guile/%{mver}/lang +%{_datadir}/guile/%{mver}/oop +%{_datadir}/guile/%{mver}/scripts +%{_datadir}/guile/%{mver}/srfi +%{_datadir}/guile/%{mver}/guile-procedures.txt +%ghost %{_datadir}/guile/%{mver}/slibcat +%ghost %{_datadir}/guile/%{mver}/slib +%dir %{_datadir}/guile/site %{_infodir}/* %files devel @@ -129,6 +160,13 @@ fi %{_includedir}/libguile.h %changelog +* Tue Apr 15 2008 Miroslav Lichvar - 5:1.8.4-1 +- update to 1.8.4 +- add %%check +- support slib-3a5 +- move slibcat and slib symlink out of site directory +- set umask in scriptlet (#242936) + * Wed Aug 22 2007 Miroslav Lichvar - 5:1.8.2-2 - update license tag - redirect guile output in triggerin script diff --git a/sources b/sources index 901b512..06536c8 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -a4b64a992deae0532f8015bcc6c40784 guile-1.8.2.tar.gz +aacc6a384af88a85574717a9221f5c6e guile-1.8.4.tar.gz -- cgit