From dc266775fc2ac8c8d99efc4f7f62804c6d24ef29 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Mon, 6 Dec 2021 19:35:47 +0100 Subject: [PATCH] - updated to 0.99.beta20, fixes: CVE-2018-20545 CVE-2018-20546 CVE-2018-20547 CVE-2018-20548 CVE-2018-20549 CVE-2021-3410 CVE-2021-30498 CVE-2021-30499 - updated ruby-vendordir patch - added sh patch (remove bashism from configure) - added plugins patch (fix plugin symbols exporting with hidden visibility support) - reenabled ncurses by default (now colors work with ABI 6) - drop .la files --- libcaca-plugins.patch | 39 +++++++++++++++++++++++++++++ libcaca-sh.patch | 11 ++++++++ libcaca.spec | 58 +++++++++++++++++++++++++++++-------------- ruby-vendordir.patch | 18 +++++++------- 4 files changed, 98 insertions(+), 28 deletions(-) create mode 100644 libcaca-plugins.patch create mode 100644 libcaca-sh.patch diff --git a/libcaca-plugins.patch b/libcaca-plugins.patch new file mode 100644 index 0000000..fc9cf49 --- /dev/null +++ b/libcaca-plugins.patch @@ -0,0 +1,39 @@ +--- libcaca-0.99.beta20/caca/caca_internals.h.orig 2021-10-19 15:47:32.000000000 +0200 ++++ libcaca-0.99.beta20/caca/caca_internals.h 2021-12-06 17:15:52.742419166 +0100 +@@ -252,7 +252,11 @@ extern int _caca_getticks(caca_timer_t * + /* Internal event functions */ + extern void _caca_handle_resize(caca_display_t *); + #if defined(USE_SLANG) || defined(USE_NCURSES) || defined(USE_CONIO) || defined(USE_GL) +-extern void _push_event(caca_display_t *, caca_privevent_t *); ++extern ++#if defined(CACA_ENABLE_VISIBILITY) ++__attribute__((visibility("default"))) ++#endif ++void _push_event(caca_display_t *, caca_privevent_t *); + extern int _pop_event(caca_display_t *, caca_privevent_t *); + #endif + +--- libcaca-0.99.beta20/caca/driver/gl.c.orig 2015-01-17 12:51:01.000000000 +0100 ++++ libcaca-0.99.beta20/caca/driver/gl.c 2021-12-06 17:16:26.072238603 +0100 +@@ -604,6 +604,9 @@ static void gl_compute_font(caca_display + * Driver initialisation + */ + ++#if defined(CACA_ENABLE_VISIBILITY) ++__attribute__((visibility("default"))) ++#endif + int gl_install(caca_display_t *dp) + { + #if defined(HAVE_GETENV) && defined(GLUT_XLIB_IMPLEMENTATION) +--- libcaca-0.99.beta20/caca/driver/x11.c.orig 2017-04-21 15:33:16.000000000 +0200 ++++ libcaca-0.99.beta20/caca/driver/x11.c 2021-12-06 17:17:57.918407696 +0100 +@@ -966,6 +966,9 @@ static void x11_put_glyph(caca_display_t + * Driver initialisation + */ + ++#if defined(CACA_ENABLE_VISIBILITY) ++__attribute__((visibility("default"))) ++#endif + int x11_install(caca_display_t *dp) + { + #if defined HAVE_GETENV diff --git a/libcaca-sh.patch b/libcaca-sh.patch new file mode 100644 index 0000000..a016958 --- /dev/null +++ b/libcaca-sh.patch @@ -0,0 +1,11 @@ +--- libcaca-0.99.beta20/configure.ac.orig 2021-12-05 21:19:06.371427650 +0100 ++++ libcaca-0.99.beta20/configure.ac 2021-12-05 21:23:03.620142363 +0100 +@@ -269,7 +269,7 @@ if test "${enable_cocoa}" != "no"; then + [ac_cv_my_have_cocoa="yes"]) + CFLAGS="$save_CFLAGS" + if test "${ac_cv_my_have_cocoa}" = "yes"; then +- [[[ "$target_os" =~ [0-9]+ ]]] && darwin_ver="${BASH_REMATCH[[0]]}" ++ darwin_ver="$(echo "$target_os}" | sed -ne 's/.*\([0-9]\+\).*/\1/p')" + case x${target} in + xpowerpc*darwin*) + # 10.3 needed to link with X11 diff --git a/libcaca.spec b/libcaca.spec index 96db3ea..93b1f4f 100644 --- a/libcaca.spec +++ b/libcaca.spec @@ -4,16 +4,18 @@ %bcond_without java # Java binding %bcond_without ruby # Ruby binding %bcond_without python # Python binding +%bcond_without ncurses # ncurses driver +%bcond_without slang # slang driver -%ifnarch %{ix86} %{x8664} alpha arm hppa ia64 mips ppc s390 s390x sparc sparcv9 +%ifnarch %{ix86} %{x8664} alpha %{arm} hppa ia64 mips ppc s390 s390x sparc sparcv9 %undefine with_dotnet %endif %ifarch i386 %undefine with_dotnet %endif -%define rel 10 -%define subver beta19 +%define rel 1 +%define subver beta20 Summary: Graphics library that outputs text instead of pixels Summary(pl.UTF-8): Biblioteka graficzna wyświetlająca tekst zamiast pikseli Name: libcaca @@ -21,11 +23,14 @@ Version: 0.99 Release: 0.%{subver}.%{rel} License: WTFPL v2 Group: Libraries -Source0: http://caca.zoy.org/raw-attachment/wiki/libcaca/%{name}-%{version}.%{subver}.tar.gz -# Source0-md5: a3d4441cdef488099f4a92f4c6c1da00 +#Source0Download: https://github.com/cacalabs/libcaca/releases +Source0: https://github.com/cacalabs/libcaca/releases/download/v%{version}.%{subver}/%{name}-%{version}.%{subver}.tar.bz2 +# Source0-md5: 019c036ef038e7b5727b46f07fda739b Patch0: %{name}-monodir.patch Patch1: ruby-vendordir.patch -URL: http://caca.zoy.org/ +Patch2: %{name}-sh.patch +Patch3: %{name}-plugins.patch +URL: http://caca.zoy.org/wiki/libcaca BuildRequires: OpenGL-devel BuildRequires: autoconf >= 2.50 BuildRequires: automake @@ -36,11 +41,13 @@ BuildRequires: freeglut-devel >= 2.0.0 BuildRequires: imlib2-devel BuildRequires: libstdc++-devel BuildRequires: libtool >= 2:1.5 +%{?with_ncurses:BuildRequires: ncurses-devel >= 5} BuildRequires: pkgconfig +BuildRequires: rpm-build >= 4.6 BuildRequires: rpmbuild(macros) >= 1.533 BuildRequires: rpmbuild(monoautodeps) BuildRequires: sed >= 4.0 -BuildRequires: slang-devel >= 2.0.0 +%{?with_slang:BuildRequires: slang-devel >= 2.0.0} #BuildRequires: texlive-fonts-jknappen #BuildRequires: texlive-format-pdflatex #BuildRequires: texlive-latex-ams @@ -200,6 +207,18 @@ C++ bindings for libcaca - static libraries. %description c++-static -l pl.UTF-8 Wiązania C++ do libcaca - biblioteki statyczne. +%package apidocs +Summary: API documentation for libcaca library +Summary(pl.UTF-8): Dokumentacja API biblioteki libcaca +Group: Documentation +BuildArch: noarch + +%description apidocs +API documentation for libcaca library. + +%description apidocs -l pl.UTF-8 +Dokumentacja API biblioteki libcaca. + %package -n dotnet-caca-sharp Summary: C# bindings for libcaca Summary(pl.UTF-8): Wiązania C# do libcaca @@ -256,6 +275,8 @@ Wiązania języka Ruby do libcaca. %setup -q -n %{name}-%{version}.%{subver} %patch0 -p1 %patch1 -p1 +%patch2 -p1 +%patch3 -p1 %build %{__libtoolize} @@ -263,20 +284,19 @@ Wiązania języka Ruby do libcaca. %{__autoconf} %{__autoheader} %{__automake} -# NOTE: ncurses driver builds, but there's no color when linked against -# ABI 6. While caca defaults to ncurses this must be disabled until fixed. # NOTE: as of libcaca 0.99beta19 / doxygen 1.8.7 pdflatex fails - use # KPSEWHICH hack to disable PDF documentation. %configure \ - KPSEWHICH=/nonexisting \ %{?with_dotnet:CSC=/usr/bin/dmcs} \ + KPSEWHICH=/nonexisting \ + --disable-cocoa \ --enable-csharp%{!?with_dotnet:=no} \ --enable-cxx \ --enable-gl \ --enable-java%{!?with_java:=no} \ - --disable-ncurses \ + --enable-ncurses%{!?with_ncurses:=no} \ --enable-plugins \ - --enable-slang \ + --enable-slang%{!?with_slang:=no} \ --enable-x11 # --disable-silent-rules doesn't work due to AM_DEFAULT_VERBOSITY=0; use V=1 instead @@ -301,9 +321,8 @@ echo '.so cacafire.1' > $RPM_BUILD_ROOT%{_mandir}/man1/cacademo.1 # loadable modules %{__rm} $RPM_BUILD_ROOT%{_libdir}/caca/*.{a,la} %{__rm} $RPM_BUILD_ROOT%{ruby_vendorarchdir}/*.la -%if %{with java} -%{__rm} $RPM_BUILD_ROOT%{_libdir}/libcaca-java.la -%endif +# obsoleted by pkg-config +%{__rm} $RPM_BUILD_ROOT%{_libdir}/libcaca*.la # man3 pages have too common base names to be included %{__rm} $RPM_BUILD_ROOT%{_mandir}/man3/*.3caca # packaged as %doc in -devel @@ -325,7 +344,7 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(644,root,root,755) -%doc AUTHORS COPYING ChangeLog NEWS NOTES README THANKS +%doc AUTHORS COPYING NEWS NOTES README THANKS %attr(755,root,root) %{_bindir}/cacaclock %attr(755,root,root) %{_bindir}/cacademo %attr(755,root,root) %{_bindir}/cacafire @@ -357,10 +376,8 @@ rm -rf $RPM_BUILD_ROOT %files devel %defattr(644,root,root,755) -%doc doc/html/* %attr(755,root,root) %{_bindir}/caca-config %attr(755,root,root) %{_libdir}/libcaca.so -%{_libdir}/libcaca.la %{_includedir}/caca.h %{_includedir}/caca0.h %{_includedir}/caca_conio.h @@ -381,7 +398,6 @@ rm -rf $RPM_BUILD_ROOT %files c++-devel %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/libcaca++.so -%{_libdir}/libcaca++.la %{_includedir}/caca++.h %{_pkgconfigdir}/caca++.pc @@ -389,6 +405,10 @@ rm -rf $RPM_BUILD_ROOT %defattr(644,root,root,755) %{_libdir}/libcaca++.a +%files apidocs +%defattr(644,root,root,755) +%doc doc/html/* + %if %{with dotnet} %files -n dotnet-caca-sharp %defattr(644,root,root,755) diff --git a/ruby-vendordir.patch b/ruby-vendordir.patch index 2c615d0..58f3084 100644 --- a/ruby-vendordir.patch +++ b/ruby-vendordir.patch @@ -1,13 +1,13 @@ ---- libcaca-0.99.beta19/configure.ac~ 2014-05-16 22:07:53.000000000 +0300 -+++ libcaca-0.99.beta19/configure.ac 2014-07-28 10:58:16.493153286 +0300 -@@ -467,8 +467,8 @@ +--- libcaca-0.99.beta20/configure.ac.orig 2021-12-05 21:13:36.396548611 +0100 ++++ libcaca-0.99.beta20/configure.ac 2021-12-05 21:15:11.839364886 +0100 +@@ -491,8 +491,8 @@ if test "${enable_ruby}" != "no"; then if test "${RUBY}" != "no"; then - RUBY_CFLAGS="$(ruby -r mkmf -e 'conf = RbConfig::CONFIG.merge("hdrdir" => $hdrdir, "arch_hdrdir" => $arch_hdrdir); print RbConfig::expand("#$INCFLAGS", conf)')" - RUBY_LIBS="-L$(ruby -r rbconfig -e 'print RbConfig::CONFIG@<:@"libdir"@:>@') -l$(ruby -r rbconfig -e 'print RbConfig::CONFIG@<:@"RUBY_SO_NAME"@:>@')" -- RUBY_SITEARCHDIR=`ruby -r rbconfig -e 'print RbConfig::CONFIG@<:@"sitearchdir"@:>@'` -- RUBY_SITELIBDIR=`ruby -r rbconfig -e 'print RbConfig::CONFIG@<:@"sitelibdir"@:>@'` -+ RUBY_SITEARCHDIR=`ruby -r rbconfig -e 'print RbConfig::CONFIG@<:@"vendorarchdir"@:>@'` -+ RUBY_SITELIBDIR=`ruby -r rbconfig -e 'print RbConfig::CONFIG@<:@"vendorlibdir"@:>@'` + RUBY_CFLAGS="$("${RUBY}" -r mkmf -e 'conf = RbConfig::CONFIG.merge("hdrdir" => $hdrdir, "arch_hdrdir" => $arch_hdrdir); print RbConfig::expand("#$INCFLAGS", conf)')" + RUBY_LIBS="-L$("${RUBY}" -r rbconfig -e 'print RbConfig::CONFIG@<:@"libdir"@:>@') -l$("${RUBY}" -r rbconfig -e 'print RbConfig::CONFIG@<:@"RUBY_SO_NAME"@:>@')" +- RUBY_SITEARCHDIR=`"${RUBY}" -r rbconfig -e 'print RbConfig::CONFIG@<:@"sitearchdir"@:>@'` +- RUBY_SITELIBDIR=`"${RUBY}" -r rbconfig -e 'print RbConfig::CONFIG@<:@"sitelibdir"@:>@'` ++ RUBY_SITEARCHDIR=`"${RUBY}" -r rbconfig -e 'print RbConfig::CONFIG@<:@"vendorarchdir"@:>@'` ++ RUBY_SITELIBDIR=`"${RUBY}" -r rbconfig -e 'print RbConfig::CONFIG@<:@"vendorlibdir"@:>@'` AC_SUBST(RUBY_CFLAGS) AC_SUBST(RUBY_LIBS) AC_SUBST(RUBY_SITEARCHDIR) -- 2.44.0