From 47cc1adca146ef64fd66674b8994ee99ba908472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= Date: Wed, 9 Aug 2017 08:27:38 +0200 Subject: [PATCH] icewm: update to 1.4.2 Closes #7317 --- .../icewm/patches/backtrace_on_glibc.patch | 20 -- .../icewm/patches/fix-strlcat_strlcpy.patch | 236 ++++++++++++++++++ srcpkgs/icewm/patches/musl.patch | 23 ++ srcpkgs/icewm/template | 37 +-- 4 files changed, 268 insertions(+), 48 deletions(-) delete mode 100644 srcpkgs/icewm/patches/backtrace_on_glibc.patch create mode 100644 srcpkgs/icewm/patches/fix-strlcat_strlcpy.patch create mode 100644 srcpkgs/icewm/patches/musl.patch diff --git a/srcpkgs/icewm/patches/backtrace_on_glibc.patch b/srcpkgs/icewm/patches/backtrace_on_glibc.patch deleted file mode 100644 index 15ac1c0fd7f..00000000000 --- a/srcpkgs/icewm/patches/backtrace_on_glibc.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- src/misc.cc -+++ src/misc.cc -@@ -15,7 +15,7 @@ - #include - #endif - --#ifdef linux -+#ifdef __GLIBC__ - #include - #endif - -@@ -539,7 +539,7 @@ bool isreg(char const *path) { - } - - void show_backtrace() { --#ifdef linux -+#ifdef __GLIBC__ - const char head[] = "\nbacktrace:\n"; - const char tail[] = "end\n"; - void *array[20]; diff --git a/srcpkgs/icewm/patches/fix-strlcat_strlcpy.patch b/srcpkgs/icewm/patches/fix-strlcat_strlcpy.patch new file mode 100644 index 00000000000..9721e125b05 --- /dev/null +++ b/srcpkgs/icewm/patches/fix-strlcat_strlcpy.patch @@ -0,0 +1,236 @@ +--- src/apppstatus.cc 2017-07-30 10:59:06.000000000 +0200 ++++ src/apppstatus.cc 2017-08-09 09:12:54.332052762 +0200 +@@ -366,7 +366,7 @@ + sscanf(p, "%s %s %s %s %s", val[0], val[1], val[2], val[3], val[4]); + for (i = 0; i < 4; i++) { + if (strncmp(val[i+1], "?", 1) != 0) +- strlcpy(phoneNumber, val[i+1], sizeof phoneNumber); ++ my_strlcpy(phoneNumber, val[i+1], sizeof phoneNumber); + } + } + +--- src/base.h 2017-07-30 10:59:06.000000000 +0200 ++++ src/base.h 2017-08-09 09:11:13.082025484 +0200 +@@ -44,9 +44,9 @@ + /*** String Functions *********************************************************/ + + /* Prefer this as a safer alternative over strcpy. Return strlen(from). */ +-size_t strlcpy(char *dest, const char *from, size_t dest_size); ++size_t my_strlcpy(char *dest, const char *from, size_t dest_size); + /* Prefer this over strcat. Return strlen(dest) + strlen(from). */ +-size_t strlcat(char *dest, const char *from, size_t dest_size); ++size_t my_strlcat(char *dest, const char *from, size_t dest_size); + + char *newstr(char const *str); + char *newstr(char const *str, int len); +--- src/gnome2.cc 2017-07-30 10:59:06.000000000 +0200 ++++ src/gnome2.cc 2017-08-09 09:11:21.819027846 +0200 +@@ -158,8 +158,8 @@ + const int plen = strlen(fPath); + + char tmp[256]; +- strlcpy(tmp, fPath, sizeof tmp); +- strlcat(tmp, "/.directory", sizeof tmp); ++ my_strlcpy(tmp, fPath, sizeof tmp); ++ my_strlcat(tmp, "/.directory", sizeof tmp); + + if (isDir && !stat(tmp, &sb)) { // looks like kde/gnome1 style + +@@ -279,8 +279,8 @@ + + while ((file = readdir(dir)) != NULL) { + char fullpath[256]; +- strlcpy(fullpath, dirname, sizeof fullpath); +- strlcat(fullpath, file->d_name, sizeof fullpath); ++ my_strlcpy(fullpath, dirname, sizeof fullpath); ++ my_strlcat(fullpath, file->d_name, sizeof fullpath); + GnomeDesktopItem *ditem = + gnome_desktop_item_new_from_file(fullpath, + (GnomeDesktopItemLoadFlags)0, +--- src/icehelp.cc 2017-07-30 10:59:06.000000000 +0200 ++++ src/icehelp.cc 2017-08-09 09:11:31.490030459 +0200 +@@ -1790,8 +1790,8 @@ + const size_t size = 9 + strlen(cfmt) + strlen(cstr) + strlen(crea); + char *cbuf = (char *)malloc(size); + snprintf(cbuf, size, cfmt, cstr); +- strlcat(cbuf, ":\n ", size); +- strlcat(cbuf, crea, size); ++ my_strlcat(cbuf, ":\n ", size); ++ my_strlcat(cbuf, crea, size); + + node *root = new node(node::div); + flist nodes(root); +--- src/icesm.cc 2017-07-30 10:59:06.000000000 +0200 ++++ src/icesm.cc 2017-08-09 09:13:12.946057758 +0200 +@@ -28,10 +28,10 @@ + wordexp_t w; + if (wordexp(trim(buf), &w, 0) != 0 || w.we_wordc == 0) + return false; +- size_t len = strlcpy(buf, trim(w.we_wordv[0]), bufsiz); ++ size_t len = my_strlcpy(buf, trim(w.we_wordv[0]), bufsiz); + for (size_t k = 1; k < w.we_wordc && len < bufsiz; ++k) { +- strlcat(buf, " ", bufsiz); +- len = strlcat(buf, trim(w.we_wordv[k]), bufsiz); ++ my_strlcat(buf, " ", bufsiz); ++ len = my_strlcat(buf, trim(w.we_wordv[k]), bufsiz); + } + wordfree(&w); + if (len >= bufsiz) +@@ -39,7 +39,7 @@ + #else + char *str = trim(buf); + if (str > buf) +- strlcpy(buf, str, bufsiz); ++ my_strlcpy(buf, str, bufsiz); + #endif + if (buf[0] == '#' || buf[0] == '=') + buf[0] = 0; +--- src/icesound.cc 2017-07-30 10:59:06.000000000 +0200 ++++ src/icesound.cc 2017-08-09 09:11:26.686029161 +0200 +@@ -145,8 +145,8 @@ + char * findSample(int sid) { + char basefname[1024]; + +- strlcpy(basefname, gui_events[sid].name, sizeof basefname); +- strlcat(basefname, ".wav", sizeof basefname); ++ my_strlcpy(basefname, gui_events[sid].name, sizeof basefname); ++ my_strlcat(basefname, ".wav", sizeof basefname); + + return findSample(basefname); + } +--- src/misc.cc 2017-07-30 10:59:06.000000000 +0200 ++++ src/misc.cc 2017-08-09 09:13:39.372064834 +0200 +@@ -448,7 +448,7 @@ + #endif + + /* Prefer this as a safer alternative over strcpy. Return strlen(from). */ +-size_t strlcpy(char *dest, const char *from, size_t dest_size) ++size_t my_strlcpy(char *dest, const char *from, size_t dest_size) + { + const char *in = from; + if (dest_size > 0) { +@@ -463,12 +463,12 @@ + } + + /* Prefer this over strcat. Return strlen(dest) + strlen(from). */ +-size_t strlcat(char *dest, const char *from, size_t dest_size) ++size_t my_strlcat(char *dest, const char *from, size_t dest_size) + { + char *to = dest; + char *const stop = to + dest_size - 1; + while (to < stop && *to) ++to; +- return to - dest + strlcpy(to, from, dest_size - (to - dest)); ++ return to - dest + my_strlcpy(to, from, dest_size - (to - dest)); + } + + char *newstr(char const *str) { +--- src/strtest.cc 2017-07-30 10:59:06.000000000 +0200 ++++ src/strtest.cc 2017-08-09 09:13:24.395060823 +0200 +@@ -286,63 +286,63 @@ + strtest tester("strlc"); + char d[10] = "@"; + size_t n; +- n = strlcpy(d, "", 0); ++ n = my_strlcpy(d, "", 0); + sequal(d, "@"); + assert(d, n == 0); + +- n = strlcpy(d, "a", 0); ++ n = my_strlcpy(d, "a", 0); + sequal(d, "@"); + assert(d, n == 1); + +- n = strlcpy(d, "", 1); ++ n = my_strlcpy(d, "", 1); + sequal(d, ""); + assert(d, n == 0); + +- n = strlcpy(d, "a", 1); ++ n = my_strlcpy(d, "a", 1); + sequal(d, ""); + assert(d, n == 1); + +- n = strlcpy(d, "a", 2); ++ n = my_strlcpy(d, "a", 2); + sequal(d, "a"); + assert(d, n == 1); + +- n = strlcpy(d, "ab", 2); ++ n = my_strlcpy(d, "ab", 2); + sequal(d, "a"); + assert(d, n == 2); + +- n = strlcpy(d, "ab", 3); ++ n = my_strlcpy(d, "ab", 3); + sequal(d, "ab"); + assert(d, n == 2); + +- n = strlcpy(d, "abc", sizeof d); ++ n = my_strlcpy(d, "abc", sizeof d); + sequal(d, "abc"); + assert(d, n == 3); + +- n = strlcat(d, "def", 4); ++ n = my_strlcat(d, "def", 4); + sequal(d, "abc"); + assert(d, n == 6); + +- n = strlcat(d, "def", sizeof d); ++ n = my_strlcat(d, "def", sizeof d); + sequal(d, "abcdef"); + assert(d, n == 6); + +- n = strlcat(d, "ghijkl", sizeof d); ++ n = my_strlcat(d, "ghijkl", sizeof d); + sequal(d, "abcdefghi"); + assert(d, n == 12); + +- n = strlcpy(d, "123", sizeof d); ++ n = my_strlcpy(d, "123", sizeof d); + sequal(d, "123"); + assert(d, n == 3); + +- n = strlcpy(d, d + 1, sizeof d); ++ n = my_strlcpy(d, d + 1, sizeof d); + sequal(d, "23"); + assert(d, n == 2); + +- n = strlcpy(d, d + 1, sizeof d); ++ n = my_strlcpy(d, d + 1, sizeof d); + sequal(d, "3"); + assert(d, n == 1); + +- n = strlcpy(d, d + 1, sizeof d); ++ n = my_strlcpy(d, d + 1, sizeof d); + sequal(d, ""); + assert(d, n == 0); + } +@@ -418,7 +418,7 @@ + while (a.next()) { + const char *e = a.entry(); + assert(e, strcoll(buf, e) < 0); +- strlcpy(buf, e, sizeof buf); ++ my_strlcpy(buf, e, sizeof buf); + } + assert(buf, strcoll(buf, "~~~~~~~~~") < 0); + } +@@ -437,7 +437,7 @@ + cstring c(s.entry()); + const char *e = c.c_str(); + assert(e, strcoll(buf, e) < 0); +- strlcpy(buf, e, sizeof buf); ++ my_strlcpy(buf, e, sizeof buf); + } + assert(buf, strcoll(buf, "~~~~~~~~~") < 0); + } +--- src/udir.cc 2017-07-30 10:59:06.000000000 +0200 ++++ src/udir.cc 2017-08-09 09:13:28.346061883 +0200 +@@ -66,7 +66,7 @@ + if (impl) { + DirPtr dirp(impl); + if (dirp.next()) { +- strlcpy(fEntry, dirp.name(), sizeof fEntry); ++ my_strlcpy(fEntry, dirp.name(), sizeof fEntry); + return true; + } + } diff --git a/srcpkgs/icewm/patches/musl.patch b/srcpkgs/icewm/patches/musl.patch new file mode 100644 index 00000000000..e7d18e31287 --- /dev/null +++ b/srcpkgs/icewm/patches/musl.patch @@ -0,0 +1,23 @@ +--- src/ylocale.cc 2017-07-30 10:59:06.000000000 +0200 ++++ src/ylocale.cc 2017-08-09 08:15:50.938841549 +0200 +@@ -55,6 +55,8 @@ + int const codesetItems[] = { + #ifdef CONFIG_NL_CODESETS + CONFIG_NL_CODESETS ++#elif !defined(__GLIBC__) ++ CODESET, 0 + #else + CODESET, _NL_CTYPE_CODESET_NAME, 0 + #endif +--- src/globit.c 2017-07-30 10:59:06.000000000 +0200 ++++ src/globit.c 2017-08-09 08:17:18.691824584 +0200 +@@ -143,7 +143,9 @@ + } else if (*pattern == '~') { + /* yes, tilde */ + is_absolute = 2; ++#if defined(__GLIBC__) + glob_flags |= GLOB_TILDE; ++#endif + /* any slash in the pattern? */ + while (*cp && *cp != '/') + ++cp; diff --git a/srcpkgs/icewm/template b/srcpkgs/icewm/template index 9374c4f6e99..fb6ba704170 100644 --- a/srcpkgs/icewm/template +++ b/srcpkgs/icewm/template @@ -1,36 +1,17 @@ # Template file for 'icewm' pkgname=icewm -version=1.3.8 -revision=6 -build_style=gnu-configure -configure_args="--enable-shaped-decorations --enable-gradients" -make_build_args="V=1" -make_install_target="install install-docs install-desktop" -hostmakedepends="automake libtool pkg-config" +version=1.4.2 +revision=1 +build_style=cmake +configure_args="--enable-shaped-decorations --enable-gradients + --enable-guievents --with-icesound=ALSA,OSS --disable-menus-gnome2" +hostmakedepends="asciidoc gettext-devel libtool mkfontdir pkg-config" makedepends="libXrandr-devel libXft-devel libSM-devel libXinerama-devel gdk-pixbuf-devel" -short_desc="A Window Manager designed for speed, usability, and consistency" +short_desc="Window Manager designed for speed, usability, and consistency" maintainer="Juan RP " license="LGPL-2" homepage="http://www.icewm.org/" -distfiles="${SOURCEFORGE_SITE}/${pkgname}/${pkgname}-${version}.tar.gz" -checksum=17588d9e0bbbb23587bc04c83da9dd94fd4da6894ecfee6d7f3ed50d780dcd18 +distfiles="https://github.com/bbidulock/icewm/archive/${version}.tar.gz" +checksum=7c05a742a175c31fd3e3362649163e08b1033284f589460b90c49265a5fc9015 CXXFLAGS="-Wno-error=narrowing -fno-delete-null-pointer-checks" -if [ -n "$CROSS_BUILD" ]; then - # The iconv detection does not work when cross compiling - configure_args+=" --disable-i18n" - # Required to compile genpref for the host - hostmakedepends+=" libX11-devel" - # Set host tools for compiling genprefs - export HOSTCXX="${CXX_FOR_BUILD}" - export HOSTCXX_LINK="${CXX_FOR_BUILD}" - export HOSTCXXFLAGS="${CXXFLAGS_FOR_BUILD}" - export HOSTLDFLAGS="${LDFLAGS_FOR_BUILD}" -fi - -pre_configure() { - if [ -n "$CROSS_BUILD" ]; then - patch -p0 < ${FILESDIR}/fix-configure_in_flags.patch - fi - ./autogen.sh -}