diff --git a/_constraints b/_constraints
index c95bd15..a8a9fbb 100644
--- a/_constraints
+++ b/_constraints
@@ -1,9 +1,32 @@
+ kvm
+ SLOW_CPU
4
-
+
4
+
+
+ 6
+
+ 1
+
+
+
+ i586
+ x86_64
+
+
+
+ mmx
+ sse
+ sse2
+ sse3
+ ssse3
+
+
+
diff --git a/extflvector-length-inlined.patch b/extflvector-length-inlined.patch
new file mode 100644
index 0000000..e146ed3
--- /dev/null
+++ b/extflvector-length-inlined.patch
@@ -0,0 +1,26 @@
+From 80f84f2132233f8bcba05273cc23414caff8bd9c Mon Sep 17 00:00:00 2001
+From: Matthew Flatt
+Date: Sat, 2 Feb 2019 19:38:41 -0700
+Subject: [PATCH] fix extflvector-length for platforms where it's not inlined
+
+---
+ racket/src/racket/src/number.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/racket/src/racket/src/number.c b/racket/src/racket/src/number.c
+index 954efffbf1..e486ce265d 100644
+--- a/racket/src/racket/src/number.c
++++ b/racket/src/racket/src/number.c
+@@ -1083,7 +1083,11 @@ void scheme_init_extfl_number(Scheme_Startup_Env *env)
+ ADD_PRIM_W_ARITY("make-shared-extflvector", make_shared_extflvector, 1, 2, env);
+
+ p = scheme_make_immed_prim(extflvector_length, "extflvector-length", 1, 1);
+- SCHEME_PRIM_PROC_FLAGS(p) |= scheme_intern_prim_opt_flags(SCHEME_PRIM_IS_UNARY_INLINED
++ if (MZ_LONG_DOUBLE_AVAIL_AND(1))
++ flags = SCHEME_PRIM_IS_BINARY_INLINED;
++ else
++ flags = SCHEME_PRIM_SOMETIMES_INLINED;
++ SCHEME_PRIM_PROC_FLAGS(p) |= scheme_intern_prim_opt_flags(flags
+ | SCHEME_PRIM_PRODUCES_FIXNUM);
+ scheme_addto_prim_instance("extflvector-length", p, env);
+
diff --git a/racket-6.10.1.rpmlintrc b/racket-6.10.1.rpmlintrc
deleted file mode 100644
index f5623ad..0000000
--- a/racket-6.10.1.rpmlintrc
+++ /dev/null
@@ -1,6 +0,0 @@
-addFilter("unexpanded-macro /usr/share/racket/collects/srfi/")
-addFilter("file-contains-buildroot.*/usr/share/racket/pkgs/.*zo")
-addFilter("file-contains-buildroot.*/usr/share/doc/packages/racket/syntax/module-helpers.html")
-addFilter("file-contains-buildroot.*/usr/share/doc/packages/racket/rackunit/api.html")
-addFilter("file-contains-buildroot.*/usr/share/doc/packages/racket/reference/collects.html")
-
diff --git a/racket-7.1-src.tgz b/racket-7.1-src.tgz
deleted file mode 100644
index e53d6fa..0000000
--- a/racket-7.1-src.tgz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e973298a17893bb3afeafc68ca422bb9ffbd6c307059c753bcd1ffaccd071fa0
-size 26282006
diff --git a/racket-7.2-src.tgz b/racket-7.2-src.tgz
new file mode 100644
index 0000000..c49d408
--- /dev/null
+++ b/racket-7.2-src.tgz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e42d1ff0bb8c6b483a720387e5e9e68d39c1386cfdb14c565fc9d517e3049889
+size 26412598
diff --git a/racket-doc.patch b/racket-doc.patch
new file mode 100644
index 0000000..000c5fe
--- /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 2019-03-28 07:38:19.695803840 +0000
+@@ -43,7 +43,8 @@
+ (let* ([path (build-path (find-user-doc-dir) sub)]
+ [path (if (file-exists? path) path (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-rpmlintrc b/racket-rpmlintrc
new file mode 100644
index 0000000..d236bd9
--- /dev/null
+++ b/racket-rpmlintrc
@@ -0,0 +1,8 @@
+addFilter(".*unexpanded-macro.*/usr/share/racket/collects/srfi/.*")
+addFilter(".*W:.*explicit-lib-dependency.*lib.*")
+addFilter(".*W:.*zero-length.*")
+addFilter(".*W:.*pem-certificate.*/test\.pem.*")
+addFilter(".*W:.*script-without-shebang.*/starter-sh.*")
+addFilter(".*file-contains-buildroot.*/usr/share/doc/packages/racket/syntax/module-helpers.html.*")
+addFilter(".*file-contains-buildroot.*/usr/share/doc/packages/racket/rackunit/api.html.*")
+addFilter(".*file-contains-buildroot.*/usr/share/doc/packages/racket/reference/collects.html.*")
diff --git a/racket.changes b/racket.changes
index 3280278..e342fdd 100644
--- a/racket.changes
+++ b/racket.changes
@@ -1,3 +1,40 @@
+-------------------------------------------------------------------
+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
diff --git a/racket.spec b/racket.spec
index b7706ec..77881d9 100644
--- a/racket.spec
+++ b/racket.spec
@@ -1,7 +1,7 @@
#
# spec file for package racket
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2012, 2013 Togan Muftuoglu toganm@opensuse.org
#
# All modifications and additions to the file contributed by third parties
@@ -18,7 +18,7 @@
Name: racket
-Version: 7.1
+Version: 7.2
Release: 0
Summary: Scheme implementation with teaching tools
License: LGPL-2.1-or-later AND GPL-3.0-or-later
@@ -26,9 +26,12 @@ 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-6.10.1.rpmlintrc
+Source3: racket-rpmlintrc
+Patch0: racket-doc.patch
+Patch1: extflvector-length-inlined.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: ImageMagick
+BuildRequires: ca-certificates
BuildRequires: chrpath
BuildRequires: fdupes
BuildRequires: gcc-c++
@@ -41,8 +44,10 @@ BuildRequires: update-desktop-files
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(fontconfig)
BuildRequires: pkgconfig(freetype2)
-BuildRequires: pkgconfig(gtk+-2.0)
+BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(ice)
+BuildRequires: pkgconfig(libedit)
BuildRequires: pkgconfig(libffi)
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(openssl)
@@ -58,9 +63,20 @@ 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
@@ -81,6 +97,15 @@ 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
@@ -95,17 +120,23 @@ compile and link programs which use Racket.
%prep
%setup -q
+%patch0 -p0
+%patch1 -p2
-cp %{S:2} src/.
+cp -p %{S:2} src/
%build
-cd src
+cd src/
+
+%add_optflags -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=500 -fno-gcse
+%configure --prefix="%_datadir" --docdir="%_defaultdocdir/%name" --enable-shared \
+ --disable-static --disable-strip --enable-places --enable-lt="%_bindir/libtool" \
+ --enable-pthread
-%configure --prefix="%_datadir" --docdir="%_defaultdocdir/%name" --enable-shared --disable-static --disable-strip --enable-places --enable-lt="%_bindir/libtool"
make %{?_smp_mflags} VERBOSE=1
%install
-cd src
+cd src/
# use the following if setting extra plt_setup options
# export LD_LIBRARY_PATH=%%buildroot%%_libdir
@@ -119,8 +150,37 @@ install -d %buildroot/%_datadir/doc/%name/
find %buildroot%_libdir -name "*.la" -delete
find %buildroot%_libdir -name "*.a" -delete
+find %buildroot%_datadir -name ".LOCKpkgs.rktd" -delete
-install -Dm 644 %{S:2} %buildroot%_sysconfdir/bash_completion.d/%name
+# 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
+chmod 755 %{buildroot}%{_datadir}/%{name}/pkgs/htdp-lib/2htdp/uchat/xrun
+
+for html in syntax/module-helpers rackunit/api reference/collects
+do
+ html=%{_docdir}/%{name}/${html}.html
+ test -e $html || continue
+ sed -ri 's@%{buildroot}@@g' $html
+done
+
+# Bash completion
+install -Dm 644 %{S:2} %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
@@ -128,6 +188,9 @@ install -Dm 644 %_builddir/%name-%version/share/pkgs/drracket/drracket/drracket.
%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
%post
@@ -140,8 +203,8 @@ install -Dm 644 %_builddir/%name-%version/share/pkgs/drracket/drracket/drracket.
%files
%defattr(-,root,root,-)
-%doc README
-%doc %{_docdir}/%{name}
+%doc %dir %{_docdir}/%{name}
+%doc %{_docdir}/%{name}/README
%_bindir/drracket
%_bindir/gracket
%_bindir/gracket-text
@@ -164,7 +227,7 @@ install -Dm 644 %_builddir/%name-%version/share/pkgs/drracket/drracket/drracket.
%_bindir/slatex
%_bindir/slideshow
%_bindir/swindle
-%_libdir/*.so
+%_libdir/libracket3m-%{version}.so
%_libdir/%name/mzdyn3m.o
%_datadir/%name/*
%_libdir/%name/starter
@@ -181,19 +244,26 @@ install -Dm 644 %_builddir/%name-%version/share/pkgs/drracket/drracket/drracket.
%_mandir/man1/plt-help*
%dir %_libdir/%name
%dir %_datadir/%name
-%dir %_sysconfdir/bash_completion.d/
+%dir %_datadir/bash_completion
+%dir %_datadir/bash_completion/completions
%dir %_sysconfdir/%name
-%_sysconfdir/bash_completion.d/%name
+%_datadir/bash_completion/completions/%name
%config %_sysconfdir/%name/config.rktd
%_datadir/applications/drracket.desktop
%_datadir/applications/slideshow.desktop
%_datadir/pixmaps/drracket.png
%exclude %_datadir/%name/pkgs/mzscheme-lib/mzscheme/examples/*
+%files doc
+%defattr(-,root,root,-)
+%doc %{_docdir}/%{name}/*
+%exclude %{_docdir}/%{name}/README
+
%files devel
%defattr(-,root,root,-)
%_includedir/%name/*
%_libdir/%name/buildinfo
+%_libdir/libracket3m.so
%dir %_includedir/%name
%_datadir/%name/pkgs/mzscheme-lib/mzscheme/examples/*