- 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
This commit is contained in:
Fred Fu 2024-08-30 19:49:54 +00:00 committed by Git OBS Bridge
commit d997701b38
11 changed files with 1562 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -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

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

49
_constraints Normal file
View File

@ -0,0 +1,49 @@
<?xml version="1.0"?>
<constraints>
<sandbox>kvm</sandbox>
<hostlabel exclude="true">SLOW_CPU</hostlabel>
<hardware>
<processors>4</processors>
<physicalmemory>
<size unit="G">4</size>
</physicalmemory>
<memory>
<size unit="G">6</size>
</memory>
<disk>
<size unit="G">1</size>
</disk>
</hardware>
<overwrite>
<conditions>
<arch>i586</arch>
<arch>x86_64</arch>
</conditions>
<hardware>
<cpu>
<flag>mmx</flag>
<flag>sse</flag>
<flag>sse2</flag>
<flag>ssse3</flag>
</cpu>
</hardware>
</overwrite>
<overwrite>
<conditions>
<arch>ppc64le</arch>
<arch>s390x</arch>
</conditions>
<hardware>
<physicalmemory>
<size unit="G">8</size>
</physicalmemory>
<memory>
<size unit="G">12</size>
</memory>
<processors>8</processors>
<disk>
<size unit="G">4</size>
</disk>
</hardware>
</overwrite>
</constraints>

3
racket-8.13-src.tgz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:001e04920440b6589cf62d5677d18cc2ff6ae8fbaf77e63b8a8cf20890685fbc
size 34088892

3
racket-8.14-src.tgz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:aab8cc0db336ed2d382803c708ad55a95fc52a4436c912f616f7c49d4845ae2c
size 34144519

181
racket-completion.bash Normal file
View File

@ -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

16
racket-doc.patch Normal file
View File

@ -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

53
racket-fortify.patch Normal file
View File

@ -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 <errno.h>
+#include <limits.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
@@ -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 <string.h>
#include <fcntl.h>
#include <errno.h>
+#include <limits.h>
#include <stdio.h>
#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);

6
racket-rpmlintrc Normal file
View File

@ -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.*")

896
racket.changes Normal file
View File

@ -0,0 +1,896 @@
-------------------------------------------------------------------
Mon Aug 26 18:25:45 UTC 2024 - Martin Schreiner <martin.schreiner@suse.com>
- 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 <werner@suse.de>
- 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 <martin.schreiner@suse.com>
- 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 <suse-beta@cboltz.de>
- add mzdyn3m.o which gets built on s390x (possibly replacing mzdyn3m.lo)
-------------------------------------------------------------------
Sun Apr 7 16:45:21 UTC 2024 - Christian Boltz <suse-beta@cboltz.de>
- mzdyn3m.lo no longer gets built for s390x, remove it from %files
-------------------------------------------------------------------
Fri Feb 23 11:29:47 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Use %autosetup macro. Allows to eliminate the usage of deprecated
%patchN.
-------------------------------------------------------------------
Sat Dec 16 09:35:49 UTC 2023 - Dirk Müller <dmueller@suse.com>
- 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 <moonsolo@gmail.com>
- 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. Smiths “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 (<menu-key>-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 <elimat@opensuse.org>
- 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 <moonsolo@gmail.com>
- 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 <moonsolo@gmail.com>
- 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 <SHIFT>-return in DrRackets 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 <schwab@suse.de>
- Update config.sub from upstream
-------------------------------------------------------------------
Mon Dec 5 10:17:43 UTC 2022 - Fred Fu <moonsolo@gmail.com>
- 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 <schwab@suse.de>
- Fix file list
-------------------------------------------------------------------------
Fri Aug 12 21:26:11 UTC 2022 - Fred Fu <moonsolo@gmail.com>
- 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 <werner@suse.de>
- 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 <moonsolo@gmail.com>
- 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 <moonsolo@gmail.com>
- 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 <moonsolo@gmail.com>
- 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 <moonsolo@gmail.com>
- 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.
* Redexs steppers 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 <moonsolo@gmail.com>
- 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 <werner@suse.de>
- 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 <info@paolostivanin.com>
- 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 <info@paolostivanin.com>
- 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 <info@paolostivanin.com>
- 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 <adrian@suse.de>
- adapt _constraints, sse3 never existed, but this is not anymore
ignored in OBS
-------------------------------------------------------------------
Tue Jul 16 07:38:56 UTC 2019 - Jonathan Brielmaier <jbrielmaier@suse.de>
- 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 <schwab@suse.de>
- dont-strip.patch: don't strip libraries
-------------------------------------------------------------------
Mon Apr 1 11:32:05 UTC 2019 - Dr. Werner Fink <werner@suse.de>
- 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 <werner@suse.de>
- 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 <werner@suse.de>
- 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 <olszewst@gmail.com>
- 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.
* DrRackets 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 "<level> <name>=<level> ..."
* 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

331
racket.spec Normal file
View File

@ -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