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