commit d997701b382bdd187e4fbebc3e2c577cf5c070c3879fc848c290d2b864da22db Author: Fred Fu Date: Fri Aug 30 19:49:54 2024 +0000 - Update to 8.14. Changes down below: * The compiler/demod language integrates demodularization into the program rather than an external tool. Using the language approach cooperates with other Racket tools and allows demodularization to be used on libraries. Additionally, demodularization handles submodules and can prune definitions, significantly shrinking the size of some programs. * The contract-in form enables contracts to be specified in an importing module. * The #%declare form supports the #:flatten-requires and #:unlimited-compile keywords * Identifiers such as case-λ, match-λ and λ are equivalent to their Latin-alphabet equivalents (case-lambda, match-lambda, and lambda) in more contexts, including uses of match. * The hash-filter function allows the use of a predicate to select a sub-table of a hash table. * The module browser can perform filtering on submodules. * The raco test command-line form respects the current-test-invocation-directory parameter, and shows well-formed module paths in its output. * Racket CS allows the use of in-memory boot files. * The raco/testing collection brings together a variety of testing- related functions and forms. OBS-URL: https://build.opensuse.org/package/show/devel:languages:misc/racket?expand=0&rev=89 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/_constraints b/_constraints new file mode 100644 index 0000000..b360d26 --- /dev/null +++ b/_constraints @@ -0,0 +1,49 @@ + + + kvm + SLOW_CPU + + 4 + + 4 + + + 6 + + + 1 + + + + + i586 + x86_64 + + + + mmx + sse + sse2 + ssse3 + + + + + + ppc64le + s390x + + + + 8 + + + 12 + + 8 + + 4 + + + + diff --git a/racket-8.13-src.tgz b/racket-8.13-src.tgz new file mode 100644 index 0000000..e94e283 --- /dev/null +++ b/racket-8.13-src.tgz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:001e04920440b6589cf62d5677d18cc2ff6ae8fbaf77e63b8a8cf20890685fbc +size 34088892 diff --git a/racket-8.14-src.tgz b/racket-8.14-src.tgz new file mode 100644 index 0000000..04d7a82 --- /dev/null +++ b/racket-8.14-src.tgz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aab8cc0db336ed2d382803c708ad55a95fc52a4436c912f616f7c49d4845ae2c +size 34144519 diff --git a/racket-completion.bash b/racket-completion.bash new file mode 100644 index 0000000..b3e682f --- /dev/null +++ b/racket-completion.bash @@ -0,0 +1,181 @@ +# -*- mode: shell-script; sh-basic-offset: 2; indent-tabs-mode: nil -*- +# ex: ts=2 sw=2 noet filetype=sh + +# To enable this, add the following line to ~/.bash_completion +# +# source $PLTHOME/collects/meta/contrib/completion/racket-completion.bash +# +# Change $PLTHOME to whatever references your Racket installation. You +# will need to make sure that you have bash completions enabled, usually +# with "source /etc/bash_completion". + +# This completes only *.{rkt,ss,scm,scrbl} files unless there are none, +# in which case it completes other things. +_racket_filedir() { + COMPREPLY=() + _filedir "@(rkt|rktl|ss|scm|scrbl)" + if [[ "${#COMPREPLY[@]}" -eq 0 ]]; then _filedir; fi +} + +_find_exe() { + local exename="$1" + local dir="$(dirname "${COMP_WORDS[0]}")" + local exe="$(basename "${COMP_WORDS[0]}")" + if [[ "$dir" != "." || "${COMP_WORDS[0]}" = "$dir/$exe" ]]; then + echo "$dir/$exename" + else + echo "$exename" + fi +} + +_racket() { + local cur prev singleopts doubleopts + COMPREPLY=() + cur="$(_get_cword)" + prev="${COMP_WORDS[COMP_CWORD-1]}" + doubleopts="--help --version --eval --load --require --lib --script" + doubleopts+=" --require-script --main --repl --no-lib --version --warn" + doubleopts+=" --syslog --collects --search --addon --no-compiled" + doubleopts+=" --no-init-file" + singleopts="-h -e -f -t -l -p -r -u -k -m -i -n -v -W -L -X -S -A -I -U" + singleopts+=" -N -j -d -b -c -q" + warnlevels="none fatal error warning info debug" + + # if "--" is already given, complete all kind of files, but no options + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ "${COMP_WORDS[i]}" == "--" ]]; then _racket_filedir; return; fi + done + + # -k takes *two* integer arguments + if [[ 2 < "${#COMP_WORDS[@]}" ]]; then + if [[ "${COMP_WORDS[COMP_CWORD-2]}" == "-k" ]]; then return; fi + fi + + case "$cur" in + "--"* ) + COMPREPLY=( $(compgen -W "$doubleopts" -- "$cur") ) + ;; + "-"* ) + COMPREPLY=( $(compgen -W "$singleopts" -- "$cur") ) + ;; + * ) + case "$prev" in + # these do not take anything completable as arguments + "--help" | "-h" | "-e" | "--eval" | "-p" | "-k" ) + ;; + # these take dirs (not files) as arguments + "-X" | "-S" | "-A" | "--collects" | "--search" | "--addon" ) + _filedir -d + ;; + # these take warnlevels as arguments + "-W" | "--warn" | "-L" | "--syslog" ) + COMPREPLY=( $(compgen -W "$warnlevels" -- "$cur") ) + ;; + # otherwise, just a file + * ) + _racket_filedir + ;; + esac + ;; + esac +} + +complete -F _racket racket +complete -F _racket gracket +complete -F _racket gracket-text + +_raco_cmd="$(_find_exe "raco")" + +_raco_planet() { + local cur="${COMP_WORDS[COMP_CWORD]}" + local planetcmds=$( + printf '%s\n' "--help" + "${_raco_cmd}" planet --help 2>&1 | awk '/^ *raco planet / { print $3 }' + ) + COMPREPLY=( $(compgen -W "$planetcmds" -- "$cur") ) +} + +_raco_cmds=$() +_racket_cmd="$(_find_exe "racket")" + +_raco_help() { + local cur="${COMP_WORDS[COMP_CWORD]}" + if [[ ${#_raco_cmds[@]} -eq 0 ]]; then + _raco_cmds=$( + echo "help" + "$_racket_cmd" -e '(begin (require raco/all-tools) + (for ([(k v) (all-tools)]) (printf "~a\n" k)))' + ) + fi + COMPREPLY=( $(compgen -W "$_raco_cmds" -- "$cur") ) +} + +_racket_collects_dirs=() + +_complete_collects() { + local cur="$1" + if [[ "${#_racket_collects_dirs[@]}" -eq 0 ]]; then + _racket_collects_dirs=( + $( $_racket_cmd -e + '(for-each displayln (current-library-collection-paths))' ) + ) + fi + local wordlist="" + for dir in "${_racket_collects_dirs[@]}"; do + wordlist="$wordlist $(for x in $(compgen -d "$dir"); do basename "$x"; done)" + done + COMPREPLY=( $(compgen -W "$wordlist" -- "$cur") ) +} + +_raco_setup() +{ + local cur="${COMP_WORDS[COMP_CWORD]}" + local prev="${COMP_WORDS[COMP_CWORD-1]}" + + if [[ "$COMP_CWORD" -eq 2 ]]; then + _complete_collects ${cur} + else + case "${prev}" in + # specifying a particular collection + "-l" ) _complete_collects "$cur" ;; + * ) _filedir ;; + esac + fi +} + +_raco() { + COMPREPLY=() + local cur="${COMP_WORDS[COMP_CWORD]}" + + # + # Complete the arguments to some of the basic commands. + # + local makeopts="--disable-inline --no-deps -p --prefix --no-prim -v -vv --help -h" + + if [[ "$COMP_CWORD" -eq 1 ]]; then + # removing the empty string on the next line breaks things. such as my brain. + _raco_cmds="$( + echo "help" + $_racket_cmd -e '(begin (require raco/all-tools) + (for ([(k v) (all-tools)]) (printf "~a\n" k)))')" + COMPREPLY=($(compgen -W "$_raco_cmds" -- "$cur")) + elif [[ "$COMP_CWORD" -ge 2 ]]; then + # Here we'll handle the main raco commands + local prev="${COMP_WORDS[1]}" + case "$prev" in + "make" ) + case "$cur" in + "-"* ) COMPREPLY=( $(compgen -W "$makeopts" -- "$cur") ) ;; + * ) _filedir ;; + esac ;; + "planet" ) _raco_planet ;; + "help" ) _raco_help ;; + "setup" ) _raco_setup ;; + * ) _filedir ;; + esac + else + _filedir + fi +} + +complete -F _raco raco diff --git a/racket-doc.patch b/racket-doc.patch new file mode 100644 index 0000000..95eb07e --- /dev/null +++ b/racket-doc.patch @@ -0,0 +1,16 @@ +--- + share/pkgs/scribble-lib/help/search.rkt | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- share/pkgs/scribble-lib/help/search.rkt ++++ share/pkgs/scribble-lib/help/search.rkt +@@ -47,7 +47,8 @@ + ;; Doesn't exist, but notify and then fall back below: + (build-path (find-doc-dir) sub))) + (notify path) +- (if (file-exists? path) ++ (if (and (file-exists? path) ++ (file-exists? (build-path (find-doc-dir) "docindex.sqlite"))) + (send-url/file path #:fragment fragment #:query query) + (let ([part (lambda (pfx x) (if x (string-append pfx x) ""))]) + (send-url (string-append diff --git a/racket-fortify.patch b/racket-fortify.patch new file mode 100644 index 0000000..5c57638 --- /dev/null +++ b/racket-fortify.patch @@ -0,0 +1,53 @@ +--- + src/rktio/rktio_fs.c | 4 +++- + src/start/ustart.c | 5 +++-- + 2 files changed, 6 insertions(+), 3 deletions(-) + +--- src/rktio/rktio_fs.c ++++ src/rktio/rktio_fs.c 2024-06-18 12:25:03.035413375 +0000 +@@ -1,6 +1,7 @@ + #include "rktio.h" + #include "rktio_private.h" + #include ++#include + #include + #include + #include +@@ -1092,7 +1093,8 @@ char *rktio_readlink(rktio_t *rktio, con + return NULL; + } + #else +- int len, buf_len = 256; ++ ssize_t len; ++ size_t buf_len = PATH_MAX; + char *buffer = malloc(buf_len); + + while (1) { +--- src/start/ustart.c ++++ src/start/ustart.c 2024-06-18 12:25:13.635224103 +0000 +@@ -10,6 +10,7 @@ + #include + #include + #include ++#include + #include + + #if defined(__GNUC__) +@@ -266,7 +267,7 @@ int main(int argc, char **argv) + char *exe_path, *lib_path, *dll_path; + int start, decl_end, prog_end, end, count, fd, v, en, x11; + int argpos, inpos, collcount = 1, fix_argv; +- int bufsize = 127; ++ size_t bufsize = PATH_MAX; + + if (config[7] == '[') { + write_str(2, argv[0]); +@@ -280,7 +281,7 @@ int main(int argc, char **argv) + + /* resolve soft links */ + while (1) { +- int len; ++ ssize_t len; + char *buf; + buf = (char *)malloc(bufsize + 1); + len = readlink(me, buf, bufsize); diff --git a/racket-rpmlintrc b/racket-rpmlintrc new file mode 100644 index 0000000..21d527d --- /dev/null +++ b/racket-rpmlintrc @@ -0,0 +1,6 @@ +addFilter(".*E:.*explicit-lib-dependency.*lib.*") +addFilter(".*E:.*zero-length.*") +addFilter(".*W:.*hidden-file-or-dir.*/usr/share/racket/pkgs/.LOCKpkgs.rktd") +addFilter(".*E:.*script-without-shebang.*/starter-sh.*") +addFilter(".*E:.*script-without-shebang.*/setup-core.*") +addFilter(".*E:.*non-executable-script.*/usr/share/racket/pkgs/htdp-lib/2htdp/uchat/xrun.*") diff --git a/racket.changes b/racket.changes new file mode 100644 index 0000000..e3023c0 --- /dev/null +++ b/racket.changes @@ -0,0 +1,896 @@ +------------------------------------------------------------------- +Mon Aug 26 18:25:45 UTC 2024 - Martin Schreiner + +- Update to 8.14. Changes down below: + * The compiler/demod language integrates demodularization into the + program rather than an external tool. Using the language approach + cooperates with other Racket tools and allows demodularization to be + used on libraries. Additionally, demodularization handles submodules + and can prune definitions, significantly shrinking the size of some + programs. + * The contract-in form enables contracts to be specified in an + importing module. + * The #%declare form supports the #:flatten-requires and + #:unlimited-compile keywords + * Identifiers such as case-λ, match-λ and λ are equivalent to + their Latin-alphabet equivalents (case-lambda, match-lambda, and + lambda) in more contexts, including uses of match. + * The hash-filter function allows the use of a predicate to select a + sub-table of a hash table. + * The module browser can perform filtering on submodules. + * The raco test command-line form respects the + current-test-invocation-directory parameter, and shows well-formed + module paths in its output. + * Racket CS allows the use of in-memory boot files. + * The raco/testing collection brings together a variety of testing- + related functions and forms. + +------------------------------------------------------------------- +Fri Jun 21 07:17:41 UTC 2024 - Dr. Werner Fink + +- Switch over to pb (Platform without native-code Backend) for + architectures which do not build +- Add patch racket-fortify.patch to make it build with latest gcc + +------------------------------------------------------------------- +Fri May 24 13:46:41 UTC 2024 - Martin Schreiner + +- Update to 8.13. + +- Changes from 8.13: + * The racket/treelist and racket/mutable-treelist libraries provide + list-like containers that support many operations in effectively + constant time, including appending and extracting sub-lists without + mutating the given list. Treelists are implemented as RRB Vectors, + invented by Stucki, Riompf, Ureche, and Bagwell. + + * The hash-filter-keys and hash-filter-values functions allow users + to filter hashes using a predicate on either keys or values. + + * The vector-extend and vector*-extend functions provide a way to + pre-populate the prefix of a newly allocated vector using the + elements of an existing vector. + + * Command-line raco setup, package update, and package installation + use terminal control (when available) to show what they are working + on more compactly and with a progress bar. + + * Racket v8.13 uses Unicode 15.1 for character and string + operations. + + * Machine-specific cross-module optimization allows improved support for + static generation of foreign-function bindings. + + * The scribble/acmart language uses v2.01, which avoids errors + concerning the hyperref package in some latex installations. + +- Changes from 8.12: + * The "Die Macht der Abstraktion" language levels are no longer + present, replaced by the "Schreibe dein Programm" language levels + which have been available for several years. + + * The release fixes a problem with the binding structure of the + for/fold form in the rare situation when an iteration clause + identifier shadowed an accumulator identifier. This change may break + code that depends on the old binding structure. + + * Racket automatically sets the close-on-exec flag when opening a file, on + systems where this is available. This change lowers the cost of avoiding + problems that can occur when file descriptors become accidentally shared + between processes. + + * Match includes hash and hash* patterns. + + * The vector-set/copy function allows creation of a new vector that + differs at only one index. This change also adds vector-append and + vector-copy primitives. + + * The pregexp-quote function brings the functionality of + regexp-quote to pregexps. + + * The C FFI convention-based converter supports PascalCase and + camelCase in addition to an underscore-based convention. + + * The racket/case library allows case-like forms that use different + equality comparisons, such as eq? and equal-always?. + + * Scribble rendering to HTML adds linking and information buttons + when hovering over heading titles. + + * The interval-map data structure supports iterator functions in the + style of gen:ordered-dict. + +------------------------------------------------------------------- +Sun Apr 21 12:57:42 UTC 2024 - Christian Boltz + +- add mzdyn3m.o which gets built on s390x (possibly replacing mzdyn3m.lo) + +------------------------------------------------------------------- +Sun Apr 7 16:45:21 UTC 2024 - Christian Boltz + +- mzdyn3m.lo no longer gets built for s390x, remove it from %files + +------------------------------------------------------------------- +Fri Feb 23 11:29:47 UTC 2024 - Dominique Leuenberger + +- Use %autosetup macro. Allows to eliminate the usage of deprecated + %patchN. + +------------------------------------------------------------------- +Sat Dec 16 09:35:49 UTC 2023 - Dirk Müller + +- update to 8.11.1: + * This bug-fix release repairs a problem with building from source + when using the “builtpkgs” source distribution + +------------------------------------------------------------------- +Wed Nov 15 18:17:43 UTC 2023 - Fred Fu + +- Update to 8.11: + + * Match clauses can include a #:do option to allow evaluation of code and + bindings before a following #:when clause. + + * JSON Serialization supports indentation with an #:indent option to + write-json. Cf. https://docs.racket-lang.org/json/index.html#%28def._%28%28lib._json%2Fmain..rkt%29._write-json%29%29 + + * An initiate-sequence function simplifies the creation of + sequences. Cf. https://docs.racket-lang.org/reference/sequences.html#%28def._%28%28lib._racket%2Fsequence..rkt%29._initiate-sequence%29%29 + + * The :do-in form allows an inner definition + sequence. Cf. https://docs.racket-lang.org/reference/for.html#%28form._%28%28lib.racket%2Fprivate%2Fbase..rkt%29.~3ado-in%29%29 + + * The redex-define form allows pattern-matching in PLT Redex using a + define-like syntax. + Cf. https://docs.racket-lang.org/redex/reference.html#%28form._%28%28lib._redex%2Freduction-semantics..rkt%29._redex-define%29%29 + + * Racket and Chez Scheme use Robert L. Smith’s “Algorithm 116” for division of + complex numbers. Cf. https://dl.acm.org/doi/10.1145/368637.368661 + + * DrRacket has indentation guides that provide visual cues indicating how code + is indented and grouped, accessible by using (-shift-i). + + * “Comment-out” menu items can be specific to the #lang used by the current + file. + Cf. https://docs.racket-lang.org/framework/Text.html#%28def._%28%28lib._framework%2Fmain..rkt%29._text~3aindent-guides~3c~25~3e%29%29 + + * Unused identifiers have a tooltip indicating that they have no bound + occurrences. + + * Quickscript includes a new form of scripting in the form of “hook” functions + that can be attached to existing + events. Cf. https://docs.racket-lang.org/quickscript/index.html#%28part._.Hooks%29 + + * Plots include plot-inset and plot-legend-padding parameters to control the + amount of space left unused around the plot edge and plot + legend. Cf. https://docs.racket-lang.org/plot/params.html#%28def._%28%28lib._plot%2Fmain..rkt%29._plot-inset%29%29 + + * There are many other documentation improvements, optimizations, and bug fixes! + +------------------------------------------------------------------- +Fri Aug 18 20:18:56 UTC 2023 - Matthias Eliasson + +- Update to 8.10: + * syntax/parse no longer always compiles its patterns; this release + includes an interpreter which is used to reduce code size + * Racket includes primitives [im]mutable-string?, [im]mutable-bytes?, + [im]mutable-vector?, [im]mutable-box?, and [im]mutable-hash? + (cf. + https://docs.racket-lang.org/reference/booleans.html#%28mod-path._racket%2Fmutability%29) + * Redex adds judgment-form->rule-names (cf. + https://docs.racket-lang.org/redex/reference.html#%28def._%28%28lib._redex%2Freduction-semantics..rkt%29._judgment-form-~3erule-names%29%29) + * Fasl and compiled code allow fxvectors and flvectors + * DrRacket allows #lang-specific customization of the definition + navigation popdown (cf. + https://docs.racket-lang.org/tools/drracket_language.html#%28idx._%28gentag._55._%28lib._scribblings%2Ftools%2Ftools..scrbl%29%29%29) + * Racket and DrRacket include Finnish internationalization + * Check Syntax binding arrows are drawn for names bound with + define-local-member-name + * Many other improvements and bug fixes are included, including to + the scribble and plot packages +- Remove config.sub since the fix is now included in upstream release + +------------------------------------------------------------------- +Sun May 13 15:17:43 UTC 2023 - Fred Fu +- Update to 8.9: + * The HtDP student languages come with checked signatures. Programmers can + express signatures in a formal notation, and these signatures are checked at + run-time (in a performance-neutral manner). The addition of this formal + language associates meaning with several names that had no meaning before. — + This feature is experimental, and we may amend or retract it later. (cf. 2 + Beginning Student with List Abbreviations 27) + + * Switching into and out of dark mode is handled better on Mac OS and Linux. + + * Racket uses Unicode 15.0 for character and string operations. + + * The racket/hash-code library provides support for combining hash + codes. (cf. 4.1 Equality 5) + + * A language module can have a configure-expand submodule that is dynamically + required to configure a parameterization before expansion of another + module. (cf. 18.1 Running Racket or GRacket 1) + + * stream-cons supports multiple values. (cf. 4.16.2 Streams 5) + + * unit/c subcontracts may depend on bindings from any imported or exported + signature. Additionally, bindings’ contracts are enforced within + subcontracts, and violations blame the contract itself (like ->i). (cf. 7.9 + Unit Contracts 2) + + * racket/class provides the dynamic-instantiate procedure for instantiating a + class with a dynamic list of by-name initialization arguments. (cf. 6.3 + Creating Objects 2) + + * TCP output block buffering implies TCP_NODELAY. (cf. 15.3.1 TCP 3) + + * Submodules and Check Syntax require arrows work better together. + + * Typed Racket's shallow check generation is improved. + + * Many other improvements and bug fixes are included! + +------------------------------------------------------------------- +Wed Feb 15 21:17:43 UTC 2023 - Fred Fu +- Update to 8.8: + * The dependent contract form, ->i, supports a #:param element that specifies + dependencies for parameter values that are set during the dynamic extent of + the function call. + + * The copy-file library function supports permission-management arguments. + + * Pressing -return in DrRacket’s interactions window makes it easier to + edit and enter expressions without sending them to be evaluated. + + * The numeric comparison operators (=, etc.) require at least two arguments in + the “How To Design Programs” teaching languages. + + * Redex has improved typesetting when customized renders are used in certain + multi-line situations. + + * We have fixed many bugs, and written lots of documentation. + +------------------------------------------------------------------- +Wed Dec 14 09:55:06 UTC 2022 - Andreas Schwab + +- Update config.sub from upstream + +------------------------------------------------------------------- +Mon Dec 5 10:17:43 UTC 2022 - Fred Fu +- Update to 8.7: + * Typed Racket offers Shallow and Optional modes for its gradual + types. These modes lower the cost of interacting with untyped code, + but provide less protection against buggy interactions. + + * Racket uses Unicode 14.0 for character and string operations, and + includes grapheme operations. DrRacket supports emojis. + + * Racket supports RV64G (RISC-V). + + * Programmers can disable definition shadowing using + `(#%declare #:require=define)`. + + * The module dependency graphs available using raco dependencies-graph + and DrRacket's Module browser are faster and have new package + filtering support. + + * DrRacket is more responsive when killing programs that produce a lot + of output. + + * Plot 3D allows negative altitude values (e.g., looking at the plot + from "below"). + + * The `scriblib/bibtex` and `scriblib/autobib` libraries support DOIs. + + * There are many other repairs and improvements! + +------------------------------------------------------------------- +Thu Aug 18 10:17:43 UTC 2022 - Andreas Schwab + +- Fix file list + +------------------------------------------------------------------------- +Fri Aug 12 21:26:11 UTC 2022 - Fred Fu + +- Update to 8.6: + * Racket has an “equal-always?” primitive that equates values that will stay + the same even if mutated. See + https://docs.racket-lang.org/reference/Equality.html#%28def.%28%28quote.~23~25kernel%29._equal-always~3f%29%29 + + * This release uses a new build system, Zuo, which is implemented as a little + language, in accordance with the ideas of Language Oriented Programming + (LOP). The implementation has a single C file (plus libraries implemented in + Zuo), so it compiles easily. The zuo/build library is modeled on make and + Shake for tracking dependencies and build steps. See + https://docs.racket-lang.org/zuo/index.html and + https://racket.discourse.group/t/new-build-system-pushed-to-git-repo/873 + + * Racket supports stencil vectors, which associate a virtual bitmask with a + vector, enabling certain mask-equipped update operations. See + https://docs.racket-lang.org/reference/stencil_vectors.html + + * Racket supports Arm64 machines running Windows. + + * Redex has support for simultaneous substitutions. See + https://docs.racket-lang.org/redex/reference.html#%28form._%28%28lib._redex%2Freduction-semantics..rkt%29._substitute%29%29 + + * The Web Server provides control over the maximum number of concurrent + connections via its “safety limits” construct. See + https://docs.racket-lang.org/web-server-internal/dispatch-server-unit.html#%28part._safety-limits%29 + + * The Web Server has improved logging performance and improved request parsing performance, reducing tail latencies. + + * The Web Server supports logging response status code via + web-server/dispatchers/dispatch-logresp. See + https://docs.racket-lang.org/web-server-internal/dispatch-logresp.html + + * The db library supports custom types for PostgreSQL connections; see + pg-custom-type for details. See + https://docs.racket-lang.org/db/util.html#%28def._%28%28lib._db%2Futil%2Fpostgresql..rkt%29._pg-custom-type%29%29 + + * The release includes many other repairs and changes! + +- Remove patch racket-amsmath-mathabx.patch, since the conflict between modern + amsmath and mathabx LaTeX styles has been resolved in the upstream + +------------------------------------------------------------------- +Thu Jun 9 07:01:25 UTC 2022 - Dr. Werner Fink + +- Add patch racket-amsmath-mathabx.patch + * Avoid conflict between modern amsmath and mathabx LaTeX styles to + get e.g. scsh build again + +------------------------------------------------------------------------- +Sun May 8 18:26:11 UTC 2022 - Fred Fu +- Update to 8.5: + * Racket's new `-y` flag automatically keeps compiled files up to date, + reducing subsequent load times. + + * Error-message realms allow Racket-hosted languages to adapt and + rewrite error messages to make sense in a particular context. + + * Nonprivileged users can control package installation scope using an + "other-version" directory in the addon-dir. + + * Racket CS runs on platforms where native-code generation is not + currently supported (e.g., s390x or ppc64). See "README.txt" in the + source distribution for more information on the --enable-pb flag to + configure. + + * DrRacket's new 'Reopen Closed Tab' file menu item will open previously + closed tabs. + + * Typed Racket has support for the `xml` library; use `typed/xml`. + + * Rackunit reports source locations for failed test cases in the + Typed Racket language. + + * Plot has violin plots and improved box-and-whisker plots. + + * Boxes are supported alongside lists, vectors etc. in place-channel + messages. + + * Those who manually configure Racket CS to use Zlib compression for + compiled code should be aware of CVE-2018-25032; the next release and + the current snapshot builds use a newer, safer version of zlib. + + * The release includes many other repairs and changes! + +- Spec changes: + * add google-roboto-fonts to the build dependencies. Fonts are required for + the following two cases: 1. making scribble documents 2. compiling programs + that depend on font-related library (e.g. racket/draw) at compile time. + +------------------------------------------------------------------- +Sat Apr 16 15:26:11 UTC 2022 - Fred Fu +- Fix bug for boo#1198475 + * add a new build dependency, `ncurses-devel`, to enable `expeditor` + +------------------------------------------------------------------- +Sun Mar 6 15:26:11 UTC 2022 - Fred Fu +- Update to 8.4: + * Command-line Racket provides a new expression editor by default for + its read-eval-print loop (REPL). The new REPL is based on the Chez + Scheme expression editor, but extended to use the same + language-sensitive syntax coloring and indentation tools as DrRacket. + * Typed Racket adds a kind system, preventing programmers from + writing nonsensical type expressions. It checks whether type + constructors are correctly applied to arguments, and separates + type constructors from polymorphic types. The `:kind` form enables + checking the kind of a type expression at the REPL. The new system + also correctly rejects some ill-formed recursive types. + * Racket has a `file-or-directory-stat` for unified information about + file-system objects. + * DrRacket shows the region affected by an `#;` S-expression comment + by fading the commented-out region. + * Racket on Chez has faster multiplication and division for some + numbers. + * Web server: The files dispatcher supports all standard caching-related + HTTP response headers (e.g., Cache-Control). + * Web server: A new dispatcher captures the common pattern of processing + HTTP requests and responses in a layered fashion. + * The Web Server supports use of the Cache-Control header, and includes + a new wrapping dispatcher. + * Expander: add "portal" syntax to support new forms of syntax object + binding. + * Documentation search is improved. + * Some hash operations support an optional `try-order?` argument. + * The plot-metrics interface has documentation. + * Fonts support OpenType feature settings. + * The Gui library has improved support for Wayland. + * The computation of quadratic roots is further improved. + * The `set/c` contract adds support for random generation. + * DrRacket's interactions window supports #lang-specific coloring + and indentation. + * DrRacket's parenthesis-based keyboard shortcuts change based on + the parentheses that each different #lang uses. + * The release includes many other bug repairs and other improvements! + + Transition/Update notes: + * To turn off expeditor and make Racket's REPL go back to the old + editline/readline-based editor, use the command + + ,input readline + + and then restart Racket. Get back to the new expression editor with + + ,input expeditor + + To toggle color mode for the new expression editor, use one of the + following, which does not require restarting Racket: + + ,color #false + ,color #true + + * Support for comment fading in DrRacket requires an increment to + the "WXME" format version so files with non-text content written + by DrRacket v8.4 will open only in v8.4 and later. This does not + affect files that consist only of unicode text. + * The addition of the kind system to Typed Racket means that certain + mild abuses of the type system no longer type check, most notably + the 'application' of a polymorphic type. + +- Spec changes: + * fix the path to locate a list of html files where references of + %{build-root} need to removed + * add more html files to the list above + * remove the command that deletes `.LOCKpkgs.rktd`, so users will not + have to manually create this file as a root user in order to successfully + run `raco` or `drracket`. + +- RPMlintrc changes: + * remove unused filters. + * add a filter to ignore warnings on `.LOCKpkgs.rktd` + +------------------------------------------------------------------- +Wed Dec 1 12:26:11 UTC 2021 - Fred Fu +- Update to 8.3: + * Racket removes syntax arming and disarming in favor of a simpler system of + protected syntax operations, along with other updates to the syntax system. + * DrRacket has improved support for custom #lang languages. + * Typed Racket improves precision for type-checking of non-polymorphic + structures, existential types, and certain binding forms. + * Scribble HTML output gains a button to show / hide the table of contents on + mobile platforms. + * Redex’s stepper’s GUI shows IO-judgment form rule names. + * Many bug fixes! +- Remove dont-strip.patch, since --disable-strip has been repaired or improved + in 8.3. + +------------------------------------------------------------------- +Sun Oct 10 07:26:11 UTC 2021 - Fred Fu +- Update to 8.2: + * Racket CS improved the performance of large-integer arithmetic. + * Racket has improved support for layered and tethered installation. + * Racket CS supports nonatomic allocation via ffi/unsafe. + * Cross-compilation works fully with the raco cross tool, which + is distributed separately as the “raco-cross” package. + * DrRacket has performance improvements when editing files with + picts containing large bitmaps. + * Typed Racket more consistently refines field types of + non-polymorphic structs. + * Printing of values is unified across the teaching language + implementations and the stepper. +- Rebase racket-doc.patch + +------------------------------------------------------------------- +Wed Jun 16 07:26:11 UTC 2021 - Dr. Werner Fink + +- Fix for bug boo#1187288 + * Do not remove pre-compiled and compresse object files (*.zo) as + with 8.1 those are mandatory for a functional racket installation +- Enforce the usage of the system libraries libz and liblz4 + +------------------------------------------------------------------- +Mon May 31 08:09:50 UTC 2021 - Paolo Stivanin + +- Update to 8.1: + * DrRacket tabs can be dragged, and have new close buttons. + * Racket CS supports cross-compilation using raco exe. + * Racket CS supports Android on 32-bit and 64-bit ARM processors. + * The database library supports running queries in OS threads. + * Check-Syntax arrows correctly identify the definition site of + identifiers with contracts. + * Racket CS performance has improved for structure predicates + and accessors + * Racket CS is faster at multiplying extremely large numbers + and dividing large integers. + * Racket CS allows callbacks to raise exceptions if they are + annotated with #:callback-exns?. + * New ephemeron hash tables simplify the implementation of + tables where keys can refer to values. + * Typed Racket supports for/foldr. + * The stepper works for #lang htdp/*sl. + * Struct signatures work for the ASL teaching language. + +------------------------------------------------------------------- +Tue Apr 27 11:34:54 UTC 2021 - Paolo Stivanin + +- Update to 8.0: + * Racket CS is the default implementation + (except for ppc64le and s390x) + * Racket CS has better parallel garbage collection, a 10%–30% reduction + in the size of generated code, and various targeted optimizations. + * A rewrite of the test-engine package allows the #lang versions of + teaching languages to produce linked test-failure messages. + * The release comes with a new mark-up DSL for composing text to appear + in the REPL (simple-tree-text-markup). + * Redex has an added define-overriding-judgment form and improved + error source location reporting. + * Windows scrolling speed reflects the system preference. + * The db package uses the utf8mb4 charset for MySQL connections. +- Rebase dont-strip.patch + +------------------------------------------------------------------- +Fri Aug 21 13:14:06 UTC 2020 - Paolo Stivanin + +- Update to 7.8: +* Racket CS supports AArch32 and AArch64, including places and + futures. +* Racket CS supports an "incremental" garbage-collection mode that can + eliminate long GC pauses for some applications, such as animations and + interactive games. +* Racket CS unboxes local floating-point arithmetic +* DrRacket's spell check features lower overhead and has fewer bugs. +* Web Server performance under high concurrency is better by up to an + order of magnitude +* The math library includes the Kronecker product. +* The new prop:struct-field-info property provides static information + about field names. +* In `plot`, the legend font and the plot font can be controlled + independently, and error-bars have an `#:invert?` option. +* Racket CS uses a new HAMT implementation, dramatically reducing the memory + required for immutable hash tables. +* GC callbacks are reliably called on major collections in Racket CS. + Also, Garbage collection is 10-20% faster. +* DrRacket can recover much more quickly from errors involving large + stack traces. +* Call-with-current-language allows more reliable tests for language + level code. +* Use of the Cairo library can be multi-threaded. +* DrRacket's scrolling has been made more responsive. +* DrRacket's dark mode support is improved for Mac OS and Unix. +* The Web Server provides fine-grained control over various aspects of + handling client connections (timeouts, buffer sizes, maximum header + counts, etc.) via the new "safety limits" construct. +* The Web Server's handling of large files is improved, and its + latency for long-running request handlers is reduced. + +------------------------------------------------------------------- +Tue Mar 24 13:53:40 UTC 2020 - Adrian Schröter + +- adapt _constraints, sse3 never existed, but this is not anymore + ignored in OBS + +------------------------------------------------------------------- +Tue Jul 16 07:38:56 UTC 2019 - Jonathan Brielmaier + +- Update to 7.3: + * There is a new set of teaching languages for the upcoming + German-language textbook "Schreibe Dein Programm!" + * Racket's IO system has been refactored to improve performance + and simplify internal design. + * Racket's JSON reader is dramatically faster. + * The `plot` library includes color map support for renderers. + * The Racket web library has improved support for 307 redirects. + * The Racket web server provides better response messages by default + for common status codes. + * The `pict` library includes a `shear` function. +- remove patches: + * extflvector-length-inlined.patch: included in release +- clean up spec file + * %foo -> %{foo} + * remove %defattr + * multiple other smaller clean ups + +- Remove extflvector-length-inlined.patch + +------------------------------------------------------------------- +Wed Apr 3 14:22:44 UTC 2019 - Andreas Schwab + +- dont-strip.patch: don't strip libraries + +------------------------------------------------------------------- +Mon Apr 1 11:32:05 UTC 2019 - Dr. Werner Fink + +- Add patch extflvector-length-inlined.patch from upstream commit + 80f84f21 to get extflvector-length work even on i586 +- Add patch racket-doc.patch to be able to split package into + main and doc pacakges + +------------------------------------------------------------------- +Fri Mar 29 12:55:43 UTC 2019 - Dr. Werner Fink + +- Spec file clean up +- Try to get it work on some ix86 CPU versions + +------------------------------------------------------------------- +Wed Mar 27 18:12:23 UTC 2019 - Dr. Werner Fink + +- Require some missed libraries and certificates for build + as well as for installation even if rmplint cries +- Update to racket 7.2 + * The contract system supports collapsible contracts, which avoid + repeated wrappers in certain pathological situations. Thanks to Daniel + Feltey. + * Quickscript, a scripting tool for DrRacket, has become part of the + standard distribution. Thanks to Laurent Orseau. + * The web server's built-in configuration for serving static files + recognizes the ".mjs" extension for JavaScript modules. + * The `data/enumerate` library supports an additional form of + subtraction via `but-not/e`, following Yorgey and Foner's ICFP'18 + paper. Thanks to Max New. + * The `letrec.rkt` example model in Redex has been changed to more + closely match Racket, which led to some bug fixes in Racket's + implementation of `letrec` and `set!`. + * The racklog library has seen a number of improvements, including fixes + to logic variable binding, logic variables containing predicates being + applicable, and the introduction of an `%andmap` higher-order predicate. + +------------------------------------------------------------------- +Thu Nov 29 22:02:09 UTC 2018 - Tomasz Olszewski + +- Downgrade to Racket 7.1 + * 7.1.0.1 was only a snapshot release and is already gone from + Racket mirrors + +------------------------------------------------------------------- +Sat Oct 13 17:43:25 UTC 2018 - sean@suspend.net + +- Update to Racket 7.1.0.1 + * Syntax (#') now supports new template subforms: ~@ and ~? + * Interactive overlays can be added to plots produced by plot-snip + * Added contrcat-equivalent?, a way to compare contracts + * Lazy Racket supports functions with keyword arguments + + +------------------------------------------------------------------- +Mon Jun 25 09:43:21 UTC 2018 - schwab@suse.de + +- gc-aarch64.patch: remove obsolete patch, this GC implementation is no + longer used. + +------------------------------------------------------------------- +Wed Dec 27 08:46:28 UTC 2017 - kgronlund@suse.com + +- Update to Racket 6.11 + * Typed Racket supports refinement types and dependent function types. + * DrRacket’s Program Contour is significantly more efficient + * The web-server/formlets library produces formlets that are serializable + * The db library supports the Cassandra database +- Ensure more system resources when building package + +------------------------------------------------------------------- +Sun Sep 24 21:10:21 UTC 2017 - olszewst@gmail.com + +- Racket version bumped to 6.10.1. +- Spec changes + * Drop --collectsdir in %configure in favour of --prefix (%configure + would fail otherwise) + * Drop 0-size file guard. This used to delete lock files (LOCKpkgs.rktd) + lack of which would result in errors in many contexts, including + basic usage of both DrRacket and raco (package manager) + * Drop %_datadir/%name/collects from %dir, because parent folder is already + included in another %dir entry. This fixes a warning about collects folder + being listed twice. + * Added reference to starter-sh. + * Drop DrRacket's -singleInstance option from %suse_update_desktop_file. This + option caused error messages coming from %suse_update_desktop_file itself. + +------------------------------------------------------------------- +Sat Mar 11 22:37:03 UTC 2017 - sfalken@opensuse.org + +- Edited %files to explicity package %{_docdir}/%{name} to clear + unpackaged files builderror in openSUSE:Factory + +------------------------------------------------------------------- +Fri Jul 29 09:00:45 UTC 2016 - jengelh@inai.de + +- Guard 0-size deletion by -type f, as other types can have + size 0 too. Run spec-beautifier to bring (almost) all macro uses + into same style. + +------------------------------------------------------------------- +Mon Jul 25 00:10:49 UTC 2016 - kgronlund@suse.com + +- Update to Racket 6.6 + +------------------------------------------------------------------- +Sat May 3 01:37:00 UTC 2014 - MihailJP + +- Spec changes + * Collection 'config' should be included in main package + +------------------------------------------------------------------- +Sun Aug 11 20:59:59 UTC 2013 - schwab@suse.de + +- gc-aarch64.patch: add support for aarch64 + +------------------------------------------------------------------- +Sat Aug 10 13:58:09 UTC 2013 - toganm@opensuse.org + +- Update to Racket 5.3.6 + * This is a bug fix release. It eliminates errors from v5.3.5 + that people have found over the summer. +- Spec changes + * remove libpng16.patch and libpng16-adjustment.patch + * rather then use of mirrors for source downloads use the main + site as mirrors are not uptodate + +------------------------------------------------------------------- +Tue Jun 18 12:13:38 UTC 2013 - toganm@opensuse.org + +- Update to Racket v5.3.5 + + * This is a special-purpose release to match the arrival of "Realm of + Racket" in bookstores. Racket v.5.3.5 adds a single `realm' + collection to the v5.3.4 release. The new collection contains the + source code that readers of Realm may wish to use for experiments. + +- Add racket to the requires of webserver subpackage + +------------------------------------------------------------------- +Fri May 17 06:16:25 UTC 2013 - toganm@opensuse.org + +- Added backported patches libpn16.patch and libpng16-adjustment.patch + correcting libpn16 +- Fix randomly generated mode 666 documentation files + +------------------------------------------------------------------- +Tue May 14 14:33:37 UTC 2013 - toganm@opensuse.org + +- Update to 5.3.4 release for details see changelog.txt and News + + * Extflonums (80-bit floating-point numbers) are supported on some + x86/x86_64 platforms -- including Windows, and including platforms + where Racket is compiled to use SSE instructions for flonum + arithmetic. Thanks to Michael Filonenko. + * Tally Maze: a new game based an enumeration of 2d mazes. + * The Optimization Coach, a DrRacket plugin, has been moved from the + Racket distribution to the Racket package repository. Install it + with: raco pkg install optimization-coach + * Redex: `define-union-language' now merges productions when + languages define the same nonterminals. Thanks to William Bowman. + * The `srfi/19' library is now compatible with the date structure + type exported by `racket/base'. + +- Packaging changes + * 0001-Fix-install-path-for-doc-and-collects.patch based on debian + patch but correct doc install directory as well, this patch also + enable the removal of 0001-pkg-collects-path.patch + * For Factory use libpng12 as racket is not compatible with + libpng16 + * Include libtools to BuildRequires, not to depend on bundled software + in the source package + * Include full URL for the source package + +------------------------------------------------------------------- +Fri Mar 15 15:04:42 UTC 2013 - cfarrell@suse.com + +- license update: LGPL-2.1+ and GPL-3.0+ + testsuite contains GPL-3.0+ licensed code + +------------------------------------------------------------------- +Sat Feb 16 09:07:11 UTC 2013 - toganm@opensuse.org + +- Update to 5.3.3 release for details see changelog.txt and News + + * This is a bug-fix release to address a flaw in DrRacket v5.3.2 + concerning interactions between the contour window and the syntax + coloring. + + +------------------------------------------------------------------- +Fri Feb 1 11:16:05 UTC 2013 - toganm@opensuse.org + +- Update to 5.3.2 release for details see changelog.txt and News + + * Changed case to use equal? instead of eqv? + * Changed log-message to support a name argument + * Changed the synchronization result of a log receiver to include an + event name + * Added exn:fail:filesystem:errno and exn:fail:network:errno + * Added phantom byte strings + * Added 'word mode to system-type + * Added arguments to impersonate-prompt-tag and chaperone-prompt-tag + to support interposition on non-composable continuation results + * Add #fx() and #fl() reader forms for flvectors and fxvectors + * racket/unsafe/ops: added unsafe-cons-list + * racket/gui: added get-current-mouse-state, and added + display-changed to frame% + * racket/serialize: fxvectors and flvectors are serializable + * racket/net: added uri-path-segment-unreserved-encode + * racket/url: added current-url-encode-mode + * racket/date: fixed 'iso-8601 date formatting + * scribble/tag: added + * scribble/base: added make-section-tag, taglet? + r5rs, r6rs: fixed case and cond to disallow internal definitions + in clauses + * ffi/com: added com-get-property* + * file/untar: added + * file/untgz: added + * file/unzip: added + * compiler/zo-structs: generalize flonum? field to type + field in localref, let-one, and fun + * compiler/zo-structs: added a constantness field to module-variable + +------------------------------------------------------------------- +Thu Nov 8 09:28:40 UTC 2012 - toganm@opensuse.org + +- Update to 5.3.1 release for details see changelog and News + + * Changed make-log-receiver to accept a logger name as an event + filter + * Addded define-logger + * Changed -W, -L, PLTSTDERR, and PLTSYSLOG to support log filters + of the form " = ..." + * Changed log-error, etc., to support format mode + * Added racket/format, which is re-exported by racket + * Added #:break and #:final clauses to for forms + * Added exn:break:hang-up and exn:break:terminate, added extra + argument to break-thread and place-break, and redirect SIGTERM + and SIGHUP as breaks + * Add #:fill option to for/vector, for*/vector, for/flvector, + for*/flvector, for/fxvector, and for*/fxvector + * Added PLTCOMPILEDROOTS and --compiled/-R command-line flag + * Added reroot-path + * Changed a thread's initial prompt to use the default handler + (instead of accepting and ignoring abort arguments) + * ffi/unsafe: added cpointer-gcable? + * racket/class: added dynamic-get-field and dynamic-set-field! + * racket/set: added set-first and set-rest, sets are streams + * racket/require-transformer: an import's module path can be syntax + * scribble/base: add items/c + * scribble/decode: add spliceof + * syntax/for-body: added + +- drop racket-glibc-2.16.patch + +------------------------------------------------------------------- +Thu Oct 11 15:10:49 UTC 2012 - toganm@opensuse.org + +- enabled documentation + +------------------------------------------------------------------- +Wed Aug 8 08:03:24 UTC 2012 - toganm@opensuse.org + +- Update to official 5.3 release + +------------------------------------------------------------------- +Wed Aug 1 10:18:40 UTC 2012 - toganm@opensuse.org + +- split packaging + +------------------------------------------------------------------- +Thu Jul 26 22:34:05 UTC 2012 - toganm@opensuse.org + +- Use the upcoming version 5.3.0.16 from nightly builds + * add racket.desktop + * disable documentation as it breaks the build +- TODO + * fix the rpmlint warnings for srfi + +------------------------------------------------------------------- +Tue May 1 14:08:37 UTC 2012 - toganm@opensuse.org + +- Initial packaging for racket-lang diff --git a/racket.spec b/racket.spec new file mode 100644 index 0000000..b5d3ed6 --- /dev/null +++ b/racket.spec @@ -0,0 +1,331 @@ +# +# spec file for package racket +# +# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2012, 2013 Togan Muftuoglu toganm@opensuse.org +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%global _configure ../configure +Name: racket +Version: 8.14 +Release: 0 +Summary: Scheme implementation with teaching tools +License: Apache-2.0 OR MIT +Group: Development/Languages/Scheme +URL: http://racket-lang.org +Source0: http://download.racket-lang.org/installers/%{version}/%{name}-%{version}-src.tgz +Source2: racket-completion.bash +Source3: racket-rpmlintrc +Patch0: racket-doc.patch +Patch1: racket-fortify.patch +BuildRequires: ImageMagick +BuildRequires: ca-certificates +BuildRequires: chrpath +BuildRequires: fdupes +BuildRequires: gcc-c++ +BuildRequires: ghostscript-fonts-std +BuildRequires: google-roboto-fonts +BuildRequires: libexpat1 +BuildRequires: libjpeg-devel +BuildRequires: librsvg-devel +BuildRequires: libtool +BuildRequires: update-desktop-files +BuildRequires: pkgconfig(cairo) +BuildRequires: pkgconfig(fontconfig) +BuildRequires: pkgconfig(freetype2) +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(gtk+-3.0) +BuildRequires: pkgconfig(ice) +BuildRequires: pkgconfig(libedit) +BuildRequires: pkgconfig(libffi) +BuildRequires: pkgconfig(liblz4) +BuildRequires: pkgconfig(libpng) +BuildRequires: pkgconfig(ncurses) +BuildRequires: pkgconfig(openssl) +BuildRequires: pkgconfig(pango) +BuildRequires: pkgconfig(pixman-1) >= 0.22.0 +BuildRequires: pkgconfig(sm) +BuildRequires: pkgconfig(sqlite3) +BuildRequires: pkgconfig(x11) +BuildRequires: pkgconfig(xaw7) +BuildRequires: pkgconfig(xext) +BuildRequires: pkgconfig(xft) +BuildRequires: pkgconfig(xmu) +BuildRequires: pkgconfig(xrender) +BuildRequires: pkgconfig(xt) +BuildRequires: pkgconfig(zlib) +# The rpmbuild does not detect those! +Requires: libcairo2 +Requires: libedit0 +Requires: libglib-2_0-0 +Requires: libgtk-3-0 +Requires: libpango-1_0-0 +Requires: libsqlite3-0 +Provides: %{name}-drracket = %{version}-%{release} +Provides: %{name}-games = %{version}-%{release} +Provides: %{name}-webserver = %{version}-%{release} +Recommends: racket-doc = %{version}-%{release} + +%define add_optflags(a:f:t:p:w:W:d:g:O:A:C:D:E:H:i:M:n:P:U:u:l:s:X:B:I:L:b:V:m:x:c:S:E:o:v:) \ +%global optflags %{optflags} %{**} + +# maggia has this +# Disable the debug package since otherwise a build would create the following +# error message: +# *** ERROR: same build ID in nonidentical files! +# /usr/bin/mzscheme +# and /usr/bin/mred +# this should be set from the obs +#%%define debug_package %%nil + +%description +Racket (formerly called PLT Scheme) is a multi-paradigm programming language +in the Lisp/Scheme family, that also serves as a platform for language +creation, design, and implementation. + +The programming language is known for its powerful macro system which enables +the creation of embedded and domain-specific languages, language constructs +such as classes or modules, and separate dialects of Racket enable different +semantics. + +%package doc +Summary: Documentation HTML files for Racket +Group: Development/Languages/Scheme +Provides: %{name}:%{_docdir}/%{name}/docindex.sqlite +BuildArch: noarch + +%description doc +A local installation of the Racket documentation system. + +%package devel +Summary: Development header files for Racket +Group: Development/Languages/Scheme +Requires: %{name} = %{version}-%{release} +Requires: glibc-devel +Requires: libffi-devel +Recommends: %{name}-doc = %{version}-%{release} + +%description devel +This package contains the symlinks, headers and object files needed to +compile and link programs which use Racket. + +%prep +%autosetup -p0 + +cp -p %{SOURCE2} src/ + +%build +cd src/ +mkdir build +pushd build +%add_optflags -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=500 -fno-gcse -Wno-stringop-overread +# +# Overwrite stack size limit (hopefully a soft limit only) +# +for flag in s l m +do + ulimit -H$flag unlimited || true + ulimit -S$flag unlimited || true +done +echo "int main () { return !(sizeof(void*) >= 8); }" | gcc -x c -o test64 - +echo "int main () { return !(((union {unsigned int x; unsigned char c; }){1}).c); }" | gcc -x c -o testendianess - +./test64 && wide=64 || wide=32 +./testendianess && endianess=l || endianess=b +rm -f test64 testendianess +mach=tpb${wide}${endianess} +unset wide endianess +%configure \ + --prefix="%{_prefix}" \ + --exec-prefix="%{_prefix}" \ + --libdir=%{_libdir} \ + --docdir="%{_defaultdocdir}/%{name}" \ + --enable-shared \ +%ifarch ppc64le s390x + --enable-pb --enable-mach=$mach \ +%endif + --disable-static \ + --disable-strip \ + --enable-places \ + --enable-lt="%{_bindir}/libtool" \ + --enable-libz \ + --enable-liblz4 \ + --enable-pthread +%make_build +popd + +%install +topdir=$(pwd) +cd src/ +pushd build + +# use the following if setting extra plt_setup options +# export LD_LIBRARY_PATH=%%{buildroot}%%{_libdir} +# export PLT_SETUP_OPTIONS="-j 1 " + +install -d %{buildroot}/%{_datadir}/doc/%{name}/ + +%make_install + +popd + +# we do not need *.la and *.a files +find %{buildroot}%{_libdir} -name "*.la" -delete +find %{buildroot}%{_libdir} -name "*.a" -delete + +# make system clear +for bin in mred mzscheme racket +do + test -e $bin || continue + chrpath --delete %{buildroot}%{_bindir}/$bin || : +done +for bin in gracket starter +do + test -e $bin || continue + chrpath --delete %{buildroot}%{_libdir}/$bin || : +done +for bin in c-printf crypt esd magick sndfile tcl xmmsctrl xosd +do + bin=%{buildroot}%{_datadir}/%{name}/pkgs/racket-doc/ffi/examples/use-${bin}.rkt + test -e $bin || continue + sed -ri '1s@(/usr/bin/)env +@\1@p' $bin + chmod 755 $bin +done + +files_to_filter=" +syntax/module-helpers +rackunit/api +reference/collects +guide/exns +math/array_broadcasting +math/array_construct +math/array_convert +math/array_fold +math/array_indexing +math/array_nonstrict +math/array_pointwise +math/array_quick +math/array_sequences +math/array_slicing +math/array_strict +math/array_transform +math/array_types +math/matrix_construction +math/matrix_intro +math/matrix_poly +math/stats +ts-reference/Typed_Classes +" +for html in $files_to_filter +do + html=%{buildroot}%{_docdir}/%{name}/${html}.html + test -e $html || continue + sed -ri 's@%{buildroot}@@g' $html +done + +# Bash completion +install -Dm 644 %{SOURCE2} %{buildroot}%{_datadir}/bash_completion/completions/%{name} +install -Dm 644 %{_builddir}/%{name}-%{version}/share/pkgs/drracket/drracket/drracket.png %{buildroot}%{_datadir}/pixmaps/drracket.png + +# rewrite path in .desktop files +%suse_update_desktop_file -c drracket "DrRacket" "DrRacket is an interactive, integrated, graphical programming environment for the Racket programming languages" "%{_bindir}/drracket" "drracket" Development IDE +%suse_update_desktop_file -c slideshow "Slideshow" "Slideshow is a Racket-based tool for writing slide presentations as programs" "%{_bindir}/slideshow" "drracket" Development Documentation + +# Due package split we do this explicit to support older rpm version as well +install -m 0644 ../README %{buildroot}%{_docdir}/%{name}/README + +%fdupes %{buildroot}%{_prefix} + +# +# Dynamically determine which files gets installed +# bc, cs, and pb builds +# +pushd %{buildroot}%{_libdir} + find \( -name '*.boot' -o -name '*.so*' -o -name '*.lo' -o -name '*.o' -o -name bootinfo \) -printf '%{_libdir}/%%P\n' > ${topdir}/file.list +popd + +%post +/sbin/ldconfig +%desktop_database_post + +%postun +/sbin/ldconfig +%desktop_database_postun + +%files -f file.list +%doc %dir %{_docdir}/%{name} +%doc %{_docdir}/%{name}/README +%{_bindir}/drracket +%{_bindir}/gracket +%{_bindir}/gracket-text +%{_bindir}/mred +%{_bindir}/mred-text +%{_bindir}/mzc +%{_bindir}/mzpp +%{_bindir}/mzscheme +%{_bindir}/mztext +%{_bindir}/pdf-slatex +%{_bindir}/plt-games +%{_bindir}/plt-help +%{_bindir}/plt-r5rs +%{_bindir}/plt-r6rs +%{_bindir}/plt-web-server +%{_bindir}/racket +%{_bindir}/raco +%{_bindir}/scribble +%{_bindir}/setup-plt +%{_bindir}/slatex +%{_bindir}/slideshow +%{_bindir}/swindle +%{_libdir}/%{name}/starter +%{_libdir}/%{name}/gracket +%{_libdir}/%{name}/starter-sh +%verify(not md5 size mtime) %{_libdir}/%{name}/*.rktd +%dir %{_libdir}/%{name}/compiled/ +%{_libdir}/%{name}/compiled/* +%{_mandir}/man1/mz* +%{_mandir}/man1/racket* +%{_mandir}/man1/raco* +%{_mandir}/man1/setup-plt* +%{_mandir}/man1/drracket* +%{_mandir}/man1/gracket* +%{_mandir}/man1/mred* +%{_mandir}/man1/plt-help* +%dir %{_libdir}/%{name} +%dir %{_datadir}/%{name} +%dir %{_datadir}/bash_completion +%dir %{_datadir}/bash_completion/completions +%{_datadir}/bash_completion/completions/%{name} +%{_datadir}/applications/drracket.desktop +%{_datadir}/applications/slideshow.desktop +%{_datadir}/pixmaps/drracket.png +%exclude %dir %{_datadir}/%{name}/pkgs/mzscheme-lib/mzscheme/examples/ +%exclude %{_datadir}/%{name}/pkgs/mzscheme-lib/mzscheme/examples/*.c* +%verify(not md5 size mtime) %{_datadir}/%{name}/*.rktd +%verify(not md5 size mtime) %{_datadir}/%{name}/pkgs/*.rktd +%{_datadir}/%{name}/* +%dir %{_sysconfdir}/%{name} +%config %{_sysconfdir}/%{name}/config.rktd + +%files doc +%doc %{_docdir}/%{name}/* +%exclude %{_docdir}/%{name}/README + +%files devel +%{_includedir}/%{name}/* +%dir %{_includedir}/%{name} +%dir %{_datadir}/%{name}/pkgs/mzscheme-lib/mzscheme/examples/ +%{_datadir}/%{name}/pkgs/mzscheme-lib/mzscheme/examples/*.c* + +%changelog