Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package smlnj for openSUSE:Factory checked in at 2026-09-16 17:44:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/smlnj (Old) and /work/SRC/openSUSE:Factory/.smlnj.new.383539 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "smlnj" Wed Sep 16 17:44:24 2026 rev:28 rq:1378222 version:2026.2 Changes: -------- --- /work/SRC/openSUSE:Factory/smlnj/smlnj.changes 2024-05-06 17:55:34.400156040 +0200 +++ /work/SRC/openSUSE:Factory/.smlnj.new.383539/smlnj.changes 2026-09-16 17:48:30.814481143 +0200 @@ -1,0 +2,15 @@ +Sat Sep 12 16:15:22 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to 2026.2 (development line with LLVM code generator): + * bug fixes across compiler, runtime and Basis library + * new inline bit operations on words, Trilean structure in SML/NJ lib + * build.sh supports -install directory, macOS installers notarized +- Switch to per-arch upstream source tarballs with bundled boot files; + drop obsolete pack_new_version.sh, urlgetter.sh and MLRISC.diff + (uninstalled doc helper with wrong perl path) +- Narrow ExclusiveArch to x86_64 and aarch64 (upstream supports + 64-bit Unix only); adds native aarch64 support +- Build compiles the bundled LLVM code generator; new build + requirements on cmake, autoconf, automake and python3 + +------------------------------------------------------------------- Old: ---- MLRISC.diff pack_new_version.sh smlnj-110.99.5.tar.xz urlgetter.sh New: ---- smlnj-amd64-unix-2026.2.tgz smlnj-arm64-unix-2026.2.tgz ----------(Old B)---------- Old:- Switch to per-arch upstream source tarballs with bundled boot files; drop obsolete pack_new_version.sh, urlgetter.sh and MLRISC.diff (uninstalled doc helper with wrong perl path) ----------(Old E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ smlnj.spec ++++++ --- /var/tmp/diff_new_pack.FEP1N3/_old 2026-09-16 17:48:36.637724354 +0200 +++ /var/tmp/diff_new_pack.FEP1N3/_new 2026-09-16 17:48:36.641724521 +0200 @@ -1,7 +1,7 @@ # # spec file for package smlnj # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,77 +17,91 @@ Name: smlnj -Version: 110.99.5 +Version: 2026.2 Release: 0 Summary: Standard ML of New Jersey License: BSD-3-Clause -Group: Development/Languages/Other URL: https://www.smlnj.org/ -Source: smlnj-%{version}.tar.xz -Source1: pack_new_version.sh -Source2: urlgetter.sh -Source3: smlnj-rpmlintrc -Patch1: MLRISC.diff +# Upstream ships one source tarball per Unix arch; contents are identical +# except for the bundled boot.ARCH-unix.tgz bootstrap heap +Source0: https://smlnj.org/dist/working/%{version}/smlnj-amd64-unix-%{version}.tgz +Source1: https://smlnj.org/dist/working/%{version}/smlnj-arm64-unix-%{version}.tgz +Source2: smlnj-rpmlintrc +# keep package names: --perl explodes autoconf/automake into perl(...) providers +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: cmake +BuildRequires: gcc BuildRequires: gcc-c++ -ExclusiveArch: %{ix86} x86_64 ppc +BuildRequires: make +BuildRequires: python3 +# development line supports 64-bit AMD64/AArch64 Unix only +ExclusiveArch: x86_64 aarch64 %description SML/NJ is an interactive compiler for the Standard ML Programming Language (1997 Revision). %prep -%setup -q -tar -xzf config.tgz -# place urlgetter -cp %{SOURCE2} . - -mkdir base -cd base -tar -xzf ../runtime.tgz -tar -xzf ../MLRISC.tgz -%patch -P 1 +%ifarch x86_64 +%setup -q -T -b 0 -n smlnj +%endif +%ifarch aarch64 +%setup -q -T -b 1 -n smlnj +%endif %build -# remove reference to remote d/l -echo "SRCARCHIVEURL=/" > ./config/srcarchiveurl -export BUILDDIR="%{_builddir}/%{name}-%{version}" -export URLGETTER="%{_sourcedir}/urlgetter.sh" - -CFLAGS="%{optflags}" config/install.sh -default 64 +# build.sh builds and installs in one go (bundled LLVM, runtime, heap, +# libraries); stage under BUILD, rpm wipes BUILDROOT before the install phase +bash build.sh -install $PWD/stage-smlnj %install -mkdir -p %{buildroot}%{_libdir}/smlnj -cp -a bin lib %{buildroot}%{_libdir}/smlnj +mkdir -p %{buildroot}%{_libdir} +cp -a stage-smlnj %{buildroot}%{_libdir}/smlnj +# LLVM static libs/headers are linked into run.* already; drop the rest, +# keeping libHeap2Obj.a (heap2exec input) +rm -f %{buildroot}%{_libdir}/smlnj/bin/{llvm-config,llvm-tblgen,llc,llvm-libtool-darwin} +rm -f %{buildroot}%{_libdir}/smlnj/lib/libLLVM*.a %{buildroot}%{_libdir}/smlnj/lib/libCFGCodeGen.a +rm -rf %{buildroot}%{_libdir}/smlnj/include %{buildroot}%{_libdir}/smlnj/lib/cmake +# driver scripts bake the staging path; rewrite it to the final libdir path +for f in %{buildroot}%{_libdir}/smlnj/bin/* %{buildroot}%{_libdir}/smlnj/bin/.*-sml; do + [ -f "$f" ] && sed -i -e "s,$PWD/stage-smlnj,%{_libdir}/smlnj," "$f" +done mkdir -p %{buildroot}%{_bindir} for f in %{buildroot}%{_libdir}/smlnj/bin/*; do - sed -i -e "s,$PWD,%{_libdir}/smlnj," $f - ln -sf ${f#%{buildroot}} %{buildroot}%{_bindir} -done -for f in %{buildroot}%{_libdir}/smlnj/bin/.*-sml; do - sed -i -e "s,$PWD,%{_libdir}/smlnj," $f + # llvm-config is a build-time tool only; keep it out of PATH + [ "${f##*/}" = "llvm-config" ] && continue + [ -f "$f" ] && ln -sf %{_libdir}/smlnj/bin/${f##*/} %{buildroot}%{_bindir}/${f##*/} done # ship required env var -# todo: move this to the build, if possible -# especially as there is a conflict -# if you installed both 32-bit and 64-bit archs mkdir -p %{buildroot}%{_sysconfdir}/profile.d echo "export SMLNJ_HOME=%{_libdir}/smlnj" > %{buildroot}%{_sysconfdir}/profile.d/%{name}.sh +%check +export SMLNJ_HOME=%{buildroot}%{_libdir}/smlnj +export CM_PATHCONFIG=%{buildroot}%{_libdir}/smlnj/lib/pathconfig +# @SMLversion is answered by the driver script itself; evaluate through the +# heap instead so the check exercises heap load, CM and the Basis library +HEAP=$(echo %{buildroot}%{_libdir}/smlnj/bin/.heap/sml.*-linux) +RUN=$(echo %{buildroot}%{_libdir}/smlnj/bin/.run/run.*-linux) +echo 'val _ = print (Int.toString (foldl (op+) 0 (List.tabulate (100, fn x => x * x))) ^ "\n");' | \ + $RUN @SMLcmdname=sml @SMLload=$HEAP @SMLalloc=1M | grep -q 328350 + %files -%doc %{version}-* +%license LICENSE +%doc README.md NOTES.md CONTRIBUTING.md +%{_bindir}/asdlgen +%{_bindir}/heap2exec +%{_bindir}/heap2obj %{_bindir}/ml-antlr %{_bindir}/ml-build %{_bindir}/ml-burg -%{_bindir}/ml-lex %{_bindir}/ml-makedepend -%ifarch %{ix86} -%{_bindir}/ml-nlffigen -%endif %{_bindir}/ml-ulex %{_bindir}/ml-yacc +%{_bindir}/print-cfg %{_bindir}/sml %{_libdir}/smlnj -# todo: cook it into the build, if possible %config %{_sysconfdir}/profile.d/%{name}.sh
