SHA256
1
0
forked from pool/racket
racket/racket.spec
Fred Fu d997701b38 - 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
2024-08-30 19:49:54 +00:00

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