d997701b38
* 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
332 lines
9.8 KiB
RPMSpec
332 lines
9.8 KiB
RPMSpec
#
|
|
# 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
|