diff --git a/packages/s/squirrel/.files b/packages/s/squirrel/.files
index 05f8784..91f19fa 100644
Binary files a/packages/s/squirrel/.files and b/packages/s/squirrel/.files differ
diff --git a/packages/s/squirrel/.rev b/packages/s/squirrel/.rev
index a3a83d0..0d06880 100644
--- a/packages/s/squirrel/.rev
+++ b/packages/s/squirrel/.rev
@@ -129,4 +129,27 @@
- drop squirrel-aliasing.patch, squirrel-ptr_conversion.patch (upstream)
1058212
+
+ 509952e4f18ac6d5a1d44ccd64732f84
+ 3.2
+
+ dimstar_suse
+ - spec file changes:
+ * drop static library because everything that needs maintenance
+ patch is then vulnerable without rebuild (see bug that was just patched)
+ * drop Group since it was wrong anyway
+ * move runtime library to its won subpackage from executable
+ * switch to cmake
+ * update sover ourselves since upstream doesn't do this and
+ seems to break ABI between versions.
+- c++11.patch: drop C++11 standard in favour of latest
+- sover.patch: patch to update sover on version updates, generated
+ from sover.patch.in during setup
+- squirrel-gcc47.patch: dropped, fixed upstream
+- squirrel-autoconfiscate.patch: dropped, obsolete
+- squirrel-rename_binary.patch: dropped, obsolete
+- squirrel-config.cmake.in: add missing file
+- squirrel.rpmlintrc: ignore EOL warnings in doc files
+ 1073749
+
diff --git a/packages/s/squirrel/c++11.patch b/packages/s/squirrel/c++11.patch
new file mode 100644
index 0000000..8797a1b
--- /dev/null
+++ b/packages/s/squirrel/c++11.patch
@@ -0,0 +1,12 @@
+Index: squirrel3/CMakeLists.txt
+===================================================================
+--- squirrel3.orig/CMakeLists.txt
++++ squirrel3/CMakeLists.txt
+@@ -13,7 +13,6 @@ include(GNUInstallDirs)
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}")
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}")
+ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}")
+-set(CMAKE_CXX_STANDARD 11)
+
+ if(CMAKE_COMPILER_IS_GNUCXX)
+ add_compile_options(
diff --git a/packages/s/squirrel/sover.patch b/packages/s/squirrel/sover.patch
new file mode 100644
index 0000000..ac5c902
--- /dev/null
+++ b/packages/s/squirrel/sover.patch
@@ -0,0 +1,13 @@
+Index: squirrel3/CMakeLists.txt
+===================================================================
+--- squirrel3.orig/CMakeLists.txt
++++ squirrel3/CMakeLists.txt
+@@ -51,7 +50,7 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ endif()
+
+ if(NOT DISABLE_DYNAMIC)
+- set_target_properties(squirrel sqstdlib PROPERTIES SOVERSION 0 VERSION 0.0.0)
++ set_target_properties(squirrel sqstdlib PROPERTIES SOVERSION 1001 VERSION 1001.1001.1001)
+ endif()
+
+ if(NOT SQ_DISABLE_INSTALLER AND NOT SQ_DISABLE_HEADER_INSTALLER)
diff --git a/packages/s/squirrel/sover.patch.in b/packages/s/squirrel/sover.patch.in
new file mode 100644
index 0000000..97376f2
--- /dev/null
+++ b/packages/s/squirrel/sover.patch.in
@@ -0,0 +1,13 @@
+Index: squirrel3/CMakeLists.txt
+===================================================================
+--- squirrel3.orig/CMakeLists.txt
++++ squirrel3/CMakeLists.txt
+@@ -51,7 +50,7 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ endif()
+
+ if(NOT DISABLE_DYNAMIC)
+- set_target_properties(squirrel sqstdlib PROPERTIES SOVERSION 0 VERSION 0.0.0)
++ set_target_properties(squirrel sqstdlib PROPERTIES SOVERSION 1000 VERSION 1000.1000.1000)
+ endif()
+
+ if(NOT SQ_DISABLE_INSTALLER AND NOT SQ_DISABLE_HEADER_INSTALLER)
diff --git a/packages/s/squirrel/squirrel-autoconfiscate.patch.bz2 b/packages/s/squirrel/squirrel-autoconfiscate.patch.bz2
deleted file mode 120000
index d2919a8..0000000
--- a/packages/s/squirrel/squirrel-autoconfiscate.patch.bz2
+++ /dev/null
@@ -1 +0,0 @@
-/ipfs/bafybeib3mtb52ysbasptaylnzromou6c2ioxzzuebssxn5vstjpcq6au3u
\ No newline at end of file
diff --git a/packages/s/squirrel/squirrel-config.cmake.in b/packages/s/squirrel/squirrel-config.cmake.in
new file mode 100644
index 0000000..6ed4a8a
--- /dev/null
+++ b/packages/s/squirrel/squirrel-config.cmake.in
@@ -0,0 +1,4 @@
+@PACKAGE_INIT@
+
+include("${CMAKE_CURRENT_LIST_DIR}/squirrel-config-version.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/squirrel-targets.cmake")
diff --git a/packages/s/squirrel/squirrel-gcc47.patch b/packages/s/squirrel/squirrel-gcc47.patch
deleted file mode 100644
index 000a7e1..0000000
--- a/packages/s/squirrel/squirrel-gcc47.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff -Naur SQUIRREL3.orig/squirrel/sqmem.h SQUIRREL3/squirrel/sqmem.h
---- SQUIRREL3.orig/squirrel/sqmem.h 1970-01-01 01:00:00.000000000 +0100
-+++ SQUIRREL3/squirrel/sqmem.h 2012-05-02 02:17:09.000000000 +0200
-@@ -0,0 +1,8 @@
-+/* see copyright notice in squirrel.h */
-+#ifndef _SQMEM_H_
-+#define _SQMEM_H_
-+
-+void *sq_vm_malloc(SQUnsignedInteger size);
-+void *sq_vm_realloc(void *p,SQUnsignedInteger oldsize,SQUnsignedInteger size);
-+void sq_vm_free(void *p,SQUnsignedInteger size);
-+#endif //_SQMEM_H_
-diff -Naur SQUIRREL3.orig/squirrel/sqstate.h SQUIRREL3/squirrel/sqstate.h
---- SQUIRREL3.orig/squirrel/sqstate.h 2012-05-02 02:16:59.000000000 +0200
-+++ SQUIRREL3/squirrel/sqstate.h 2012-05-02 02:17:09.000000000 +0200
-@@ -4,6 +4,7 @@
-
- #include "squtils.h"
- #include "sqobject.h"
-+#include "sqmem.h"
- struct SQString;
- struct SQTable;
- //max number of character for a printed number
diff --git a/packages/s/squirrel/squirrel-rename_binary.patch b/packages/s/squirrel/squirrel-rename_binary.patch
deleted file mode 100644
index 7f43f87..0000000
--- a/packages/s/squirrel/squirrel-rename_binary.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Index: sq/Makefile.am
-===================================================================
---- sq/Makefile.am.orig 2011-11-10 18:43:36.000000000 +0100
-+++ sq/Makefile.am 2011-11-10 18:44:40.983081687 +0100
-@@ -1,8 +1,8 @@
- EXTRA_DIST = sq.dsp
-
--bin_PROGRAMS = sq
--sq_SOURCES = sq.c
--sq_LDADD = ../squirrel/libsquirrel.la ../sqstdlib/libsqstdlib.la
-+bin_PROGRAMS = sqrl
-+sqrl_SOURCES = sq.c
-+sqrl_LDADD = ../squirrel/libsquirrel.la ../sqstdlib/libsqstdlib.la
-
- AM_CPPFLAGS = @SQ_64@ -I../include -I.
-
diff --git a/packages/s/squirrel/squirrel.changes b/packages/s/squirrel/squirrel.changes
index 78b053f..63a4201 100644
--- a/packages/s/squirrel/squirrel.changes
+++ b/packages/s/squirrel/squirrel.changes
@@ -1,4 +1,24 @@
-------------------------------------------------------------------
+Mon Mar 20 13:16:19 UTC 2023 - Adam Majer
+
+- spec file changes:
+ * drop static library because everything that needs maintenance
+ patch is then vulnerable without rebuild (see bug that was just patched)
+ * drop Group since it was wrong anyway
+ * move runtime library to its won subpackage from executable
+ * switch to cmake
+ * update sover ourselves since upstream doesn't do this and
+ seems to break ABI between versions.
+- c++11.patch: drop C++11 standard in favour of latest
+- sover.patch: patch to update sover on version updates, generated
+ from sover.patch.in during setup
+- squirrel-gcc47.patch: dropped, fixed upstream
+- squirrel-autoconfiscate.patch: dropped, obsolete
+- squirrel-rename_binary.patch: dropped, obsolete
+- squirrel-config.cmake.in: add missing file
+- squirrel.rpmlintrc: ignore EOL warnings in doc files
+
+-------------------------------------------------------------------
Fri Jan 13 11:24:10 UTC 2023 - Dirk Müller
- update to 3.2 (bsc#1201974, CVE-2021-41556):
diff --git a/packages/s/squirrel/squirrel.rpmlintrc b/packages/s/squirrel/squirrel.rpmlintrc
new file mode 100644
index 0000000..2f3bb27
--- /dev/null
+++ b/packages/s/squirrel/squirrel.rpmlintrc
@@ -0,0 +1,2 @@
+addFilter("(squirrel-examples.noarch|squirrel-doc.noarch): .* wrong-file-end-of-line-encoding")
+
diff --git a/packages/s/squirrel/squirrel.spec b/packages/s/squirrel/squirrel.spec
index 910ecb0..104c3b7 100644
--- a/packages/s/squirrel/squirrel.spec
+++ b/packages/s/squirrel/squirrel.spec
@@ -16,7 +16,14 @@
#
-%define tardir squirrel3
+### Upstream doesn't version the library and changes ABI
+### bump this version on every version update or check that it should remain
+### Re-run %%setup (quilt setup) after each update
+%define sover 1001
+
+# Disable LTO optimizations
+%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
+
%define tarver 3_2
Name: squirrel
Version: 3.2
@@ -25,13 +32,16 @@ Summary: A high level imperative/OO programming language
License: MIT
Group: Development/Languages/Other
URL: https://squirrel-lang.org/
-Source: https://downloads.sourceforge.net/%{name}/%{name}_%{tarver}_stable.tar.gz
-Patch0: squirrel-autoconfiscate.patch.bz2
-Patch3: squirrel-rename_binary.patch
-Patch4: squirrel-gcc47.patch
-BuildRequires: dos2unix
+Source: https://downloads.sourceforge.net/squirrel/squirrel_%{tarver}_stable.tar.gz
+Source1: squirrel-config.cmake.in
+Source10: sover.patch.in
+Source11: squirrel.rpmlintrc
+Patch1: c++11.patch
+# Generated from S:10 in %%prep, so update that if patch no longer applies
+Patch10: sover.patch
+BuildRequires: cmake
BuildRequires: gcc-c++
-BuildRequires: libtool
+BuildRequires: sed
%description
Squirrel is a programming language featuring higher-order functions,
@@ -39,28 +49,23 @@ classes, inheritance, delegation, tail recursion, generators,
cooperative threads, exception handling, reference counting, garbage
collection on demand, and a C-like syntax.
+%package -n libsquirrel%{sover}
+Summary: Development files for %{name}
+
+%description -n libsquirrel%{sover}
+This package contains runtime library for Squirrel
+
%package devel
Summary: Development files for %{name}
-Group: Development/Languages/C and C++
-Requires: %{name} = %{version}
+Requires: libsquirrel%{sover} = %{version}
%description devel
This package contains everything to embed the Squirrel engine in
your own application.
-%package devel-static
-Summary: Static squirrel libraries
-Group: Development/Languages/C and C++
-Requires: %{name} = %{version}
-
-%description devel-static
-This package contains the static versions of the engine and
-standard lbrary.
-
%package doc
Summary: Documentation for %{name}
-Group: Development/Languages/Other
-Requires: %{name} = %{version}
+Supplements: %{name} = %{version}
BuildArch: noarch
%description doc
@@ -68,61 +73,60 @@ Documentation files for squirrel.
%package examples
Summary: Example scripts for %{name}
-Group: Development/Languages/Other
-Requires: %{name} = %{version}
+Suggests: %{name} = %{version}
BuildArch: noarch
%description examples
Example scripts to show squirrel usage.
%prep
-%setup -q -n %{tardir}
-dos2unix -q $(find . -type f)
-%patch0
-%patch3
-%patch4 -p1
-find . -type f -exec chmod -x {} +
-chmod +x configure config.guess config.sub depcomp install-sh ltmain.sh missing
-autoreconf -fi
+%setup -q -n squirrel3
+sed -e 's,1000,%{sover},g' < %{_sourcedir}/sover.patch.in > %{_sourcedir}/sover.patch
+%patch1 -p1
+%patch10 -p1
+cp %SOURCE1 .
%build
-%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
-export CXXFLAGS="%{optflags} -std=gnu++0x"
-export CFLAGS="%{optflags}"
-%configure --enable-static
+%cmake \
+ -DDISABLE_STATIC=1 \
+ -DLONG_OUTPUT_NAMES=1
make %{?_smp_mflags}
%install
-%make_install
-install -d %{buildroot}/%{_defaultdocdir}/%{name}
-install -m 644 README HISTORY COPYRIGHT %{buildroot}/%{_defaultdocdir}/%{name}
-rm -fv %{buildroot}/%{_libdir}/*.la
+%cmake_install
+# compat link for older distros
+%if %suse_version < 1599
+ln -s /usr/bin/squirrel3 %{buildroot}%{_bindir}/sqrl
+%endif
-%post -p /sbin/ldconfig
-%postun -p /sbin/ldconfig
+%post -n libsquirrel%{sover} -p /sbin/ldconfig
+%postun -n libsquirrel%{sover} -p /sbin/ldconfig
%files
-%dir %{_defaultdocdir}/%{name}
-%doc %{_defaultdocdir}/%{name}/README
-%doc %{_defaultdocdir}/%{name}/HISTORY
-%doc %{_defaultdocdir}/%{name}/COPYRIGHT
+%{_bindir}/squirrel3
+%if %suse_version < 1599
%{_bindir}/sqrl
-%{_libdir}/*.so.*
+%endif
+
+%files -n libsquirrel%{sover}
+%license COPYRIGHT
+%{_libdir}/*.so.%{sover}
+%{_libdir}/*.so.%{sover}.*
%files devel
-%{_includedir}/*
+%dir %{_libdir}/cmake
+%dir %{_libdir}/cmake/squirrel
+%{_includedir}/sq*.h
%{_libdir}/*.so
-
-%files devel-static
-%{_libdir}/*.a
+%{_libdir}/cmake/squirrel/*
%files doc
-%exclude %{_defaultdocdir}/%{name}/README
-%exclude %{_defaultdocdir}/%{name}/HISTORY
-%exclude %{_defaultdocdir}/%{name}/COPYRIGHT
-%{_defaultdocdir}/%{name}/*
+%license COPYRIGHT
+%doc README HISTORY
+%doc doc/*
%files examples
-%{_datadir}/%{name}
+%license COPYRIGHT
+%doc samples/*
%changelog