Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package bemenu for openSUSE:Factory checked 
in at 2022-02-22 21:18:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/bemenu (Old)
 and      /work/SRC/openSUSE:Factory/.bemenu.new.1958 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "bemenu"

Tue Feb 22 21:18:08 2022 rev:13 rq:956607 version:0.6.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/bemenu/bemenu.changes    2022-02-21 
17:48:43.215631891 +0100
+++ /work/SRC/openSUSE:Factory/.bemenu.new.1958/bemenu.changes  2022-02-22 
21:18:42.370291908 +0100
@@ -1,0 +2,7 @@
+Tue Feb 22 06:46:32 UTC 2022 - Michael Vetter <mvet...@suse.com>
+
+- Update to 0.6.7:
+  * Symbol validation #247
+  * wayland: various fixes #249
+
+-------------------------------------------------------------------

Old:
----
  0.6.6.tar.gz

New:
----
  0.6.7.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ bemenu.spec ++++++
--- /var/tmp/diff_new_pack.83gsv7/_old  2022-02-22 21:18:42.890292003 +0100
+++ /var/tmp/diff_new_pack.83gsv7/_new  2022-02-22 21:18:42.894292003 +0100
@@ -18,7 +18,7 @@
 
 %define bcond_with curses
 Name:           bemenu
-Version:        0.6.6
+Version:        0.6.7
 Release:        0
 Summary:        Dynamic menu library and client program inspired by dmenu
 License:        MIT

++++++ 0.6.6.tar.gz -> 0.6.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bemenu-0.6.6/.github/workflows/ci.yml 
new/bemenu-0.6.7/.github/workflows/ci.yml
--- old/bemenu-0.6.6/.github/workflows/ci.yml   2022-02-18 23:42:23.000000000 
+0100
+++ new/bemenu-0.6.7/.github/workflows/ci.yml   2022-02-22 01:01:04.000000000 
+0100
@@ -17,15 +17,25 @@
            run: make PREFIX=install EXTRA_WARNINGS=-Werror
          - name: make install
            run: make install PREFIX=install
+         - name: print install tree
+           run: find install | sort
+         - name: check symbols
+           run: make check-symbols
 
    osx:
       runs-on: macos-latest
       steps:
          - uses: actions/checkout@v2
          - name: install build deps
-           run: brew update; brew install make pkg-config
+           run: brew update; brew install make pkg-config scdoc
          - name: make
-           run: sh build-osx.sh EXTRA_WARNINGS=-Werror clients curses
+           run: sh build-osx.sh EXTRA_WARNINGS=-Werror PREFIX=install clients 
curses
+         - name: make install
+           run: sh build-osx.sh PREFIX=install install
+         - name: print install tree
+           run: find install | sort
+         - name: check symbols
+           run: sh build-osx.sh check-symbols
 
    doxygen:
       runs-on: ubuntu-latest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bemenu-0.6.6/GNUmakefile new/bemenu-0.6.7/GNUmakefile
--- old/bemenu-0.6.6/GNUmakefile        2022-02-18 23:42:23.000000000 +0100
+++ new/bemenu-0.6.7/GNUmakefile        2022-02-22 01:01:04.000000000 +0100
@@ -60,16 +60,19 @@
 cdl.a: private override LDFLAGS += -fPIC
 cdl.a: lib/3rdparty/cdl.c lib/3rdparty/cdl.h
 
+util.a: private override LDFLAGS += -fPIC
+util.a: lib/util.c lib/internal.h
+
 libbemenu.so: private override LDLIBS += -ldl
-libbemenu.so: lib/bemenu.h lib/internal.h lib/filter.c lib/item.c 
lib/library.c lib/list.c lib/menu.c lib/util.c cdl.a
+libbemenu.so: lib/bemenu.h lib/internal.h lib/filter.c lib/item.c 
lib/library.c lib/list.c lib/menu.c util.a cdl.a
 
 bemenu-renderer-curses.so: private override LDLIBS += $(shell pkg-config 
--libs ncursesw) -lm
 bemenu-renderer-curses.so: private override CPPFLAGS += $(shell pkg-config 
--cflags-only-I ncursesw)
-bemenu-renderer-curses.so: lib/renderers/curses/curses.c
+bemenu-renderer-curses.so: lib/renderers/curses/curses.c util.a
 
 bemenu-renderer-x11.so: private override LDLIBS += $(shell pkg-config --libs 
x11 xinerama cairo pango pangocairo)
 bemenu-renderer-x11.so: private override CPPFLAGS += $(shell pkg-config 
--cflags-only-I x11 xinerama cairo pango pangocairo)
-bemenu-renderer-x11.so: lib/renderers/cairo_renderer.h lib/renderers/x11/x11.c 
lib/renderers/x11/x11.h lib/renderers/x11/window.c 
lib/renderers/x11/xkb_unicode.c lib/renderers/x11/xkb_unicode.h
+bemenu-renderer-x11.so: lib/renderers/cairo_renderer.h lib/renderers/x11/x11.c 
lib/renderers/x11/x11.h lib/renderers/x11/window.c 
lib/renderers/x11/xkb_unicode.c lib/renderers/x11/xkb_unicode.h util.a
 
 lib/renderers/wayland/xdg-shell.c:
        wayland-scanner private-code < "$$(pkg-config --variable=pkgdatadir 
wayland-protocols)/stable/xdg-shell/xdg-shell.xml" > $@
@@ -97,7 +100,7 @@
 xdg-output.a: lib/renderers/wayland/xdg-output-unstable-v1.c 
lib/renderers/wayland/xdg-output-unstable-v1.h
 bemenu-renderer-wayland.so: private override LDLIBS += $(shell pkg-config 
--libs wayland-client cairo pango pangocairo xkbcommon)
 bemenu-renderer-wayland.so: private override CPPFLAGS += $(shell pkg-config 
--cflags-only-I wayland-client cairo pango pangocairo xkbcommon)
-bemenu-renderer-wayland.so: lib/renderers/cairo_renderer.h 
lib/renderers/wayland/wayland.c lib/renderers/wayland/wayland.h 
lib/renderers/wayland/registry.c lib/renderers/wayland/window.c xdg-shell.a 
wlr-layer-shell.a xdg-output.a
+bemenu-renderer-wayland.so: lib/renderers/cairo_renderer.h 
lib/renderers/wayland/wayland.c lib/renderers/wayland/wayland.h 
lib/renderers/wayland/registry.c lib/renderers/wayland/window.c xdg-shell.a 
wlr-layer-shell.a xdg-output.a util.a
 
 common.a: client/common/common.c client/common/common.h
 bemenu: common.a client/bemenu.c
@@ -124,8 +127,8 @@
        -chmod 0755 $(addprefix "$(DESTDIR)$(PREFIX)$(bindir)"/,$(bins))
 
 install-man: bemenu.1
-       mkdir -p "$(DESTDIR)$(PREFIX)$(mandir)"
-       -cp $< "$(DESTDIR)$(PREFIX)$(mandir)"
+       -hash scdoc && mkdir -p "$(DESTDIR)$(PREFIX)$(mandir)"
+       -hash scdoc && cp $< "$(DESTDIR)$(PREFIX)$(mandir)"
 
 install-renderers: install-curses install-wayland install-x11
 
@@ -158,6 +161,9 @@
        git archive --prefix="bemenu-$(VERSION)/" -o "bemenu-$(VERSION).tar.gz" 
"$(GIT_TAG)"
        gpg --default-key "$(GPG_KEY_ID)" --armor --detach-sign 
"bemenu-$(VERSION).tar.gz"
 
+check-symbols: libbemenu.so lib/bemenu.h
+       sh scripts/check-symbols.sh $^ bemenu-renderer-*.so
+
 clean:
        $(RM) -r *.dSYM # OSX generates .dSYM dirs with -g ...
        $(RM) $(pkgconfigs) $(libs) $(bins) $(renderers) $(mans) *.a *.so.*
@@ -175,4 +181,4 @@
 .DELETE_ON_ERROR:
 .PHONY: all clean uninstall install install-base install-pkgconfig 
install-include install-libs install-lib-symlinks \
                install-man install-bins install-docs install-renderers 
install-curses install-wayland install-x11 \
-               doxygen sign clients curses x11 wayland
+               doxygen sign check-symbols clients curses x11 wayland
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bemenu-0.6.6/VERSION new/bemenu-0.6.7/VERSION
--- old/bemenu-0.6.6/VERSION    2022-02-18 23:42:23.000000000 +0100
+++ new/bemenu-0.6.7/VERSION    2022-02-22 01:01:04.000000000 +0100
@@ -1 +1 @@
-0.6.6
+0.6.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bemenu-0.6.6/lib/internal.h 
new/bemenu-0.6.7/lib/internal.h
--- old/bemenu-0.6.6/lib/internal.h     2022-02-18 23:42:23.000000000 +0100
+++ new/bemenu-0.6.7/lib/internal.h     2022-02-22 01:01:04.000000000 +0100
@@ -401,9 +401,6 @@
 /* library.c */
 bool bm_renderer_activate(struct bm_renderer *renderer, struct bm_menu *menu);
 
-/* menu.c */
-BM_PUBLIC bool bm_menu_item_is_selected(const struct bm_menu *menu, const 
struct bm_item *item);
-
 /* filter.c */
 struct bm_item** bm_filter_dmenu(struct bm_menu *menu, bool addition, uint32_t 
*out_nmemb);
 struct bm_item** bm_filter_dmenu_case_insensitive(struct bm_menu *menu, bool 
addition, uint32_t *out_nmemb);
@@ -421,22 +418,26 @@
 bool list_remove_item(struct list *list, const void *item);
 void list_sort(struct list *list, int (*compar)(const void *a, const void *b));
 
-/* util.c */
-BM_PUBLIC char* bm_strdup(const char *s);
-BM_PUBLIC bool bm_resize_buffer(char **in_out_buffer, size_t *in_out_size, 
size_t nsize);
-BM_PUBLIC BM_LOG_ATTR(1, 2) char* bm_dprintf(const char *fmt, ...);
-BM_PUBLIC BM_LOG_ATTR(3, 0) bool bm_vrprintf(char **in_out_buffer, size_t 
*in_out_len, const char *fmt, va_list args);
-BM_PUBLIC size_t bm_strip_token(char *string, const char *token, size_t 
*out_next);
-BM_PUBLIC int bm_strupcmp(const char *hay, const char *needle);
-BM_PUBLIC int bm_strnupcmp(const char *hay, const char *needle, size_t len);
-BM_PUBLIC char* bm_strupstr(const char *hay, const char *needle);
-BM_PUBLIC int32_t bm_utf8_string_screen_width(const char *string);
-BM_PUBLIC size_t bm_utf8_rune_next(const char *string, size_t start);
-BM_PUBLIC size_t bm_utf8_rune_prev(const char *string, size_t start);
-BM_PUBLIC size_t bm_utf8_rune_width(const char *rune, uint32_t u8len);
-BM_PUBLIC size_t bm_utf8_rune_remove(char *string, size_t start, size_t 
*out_rune_width);
-BM_PUBLIC size_t bm_utf8_rune_insert(char **string, size_t *bufSize, size_t 
start, const char *rune, uint32_t u8len, size_t *out_rune_width);
-BM_PUBLIC size_t bm_unicode_insert(char **string, size_t *bufSize, size_t 
start, uint32_t unicode, size_t *out_rune_width);
+/* util.c
+ * Functions here may be used in renderers also. They will be statically 
compiled to all units,
+ * so do not mark them as a BM_PUBLIC.
+ */
+char* bm_strdup(const char *s);
+bool bm_resize_buffer(char **in_out_buffer, size_t *in_out_size, size_t nsize);
+BM_LOG_ATTR(1, 2) char* bm_dprintf(const char *fmt, ...);
+BM_LOG_ATTR(3, 0) bool bm_vrprintf(char **in_out_buffer, size_t *in_out_len, 
const char *fmt, va_list args);
+size_t bm_strip_token(char *string, const char *token, size_t *out_next);
+int bm_strupcmp(const char *hay, const char *needle);
+int bm_strnupcmp(const char *hay, const char *needle, size_t len);
+char* bm_strupstr(const char *hay, const char *needle);
+int32_t bm_utf8_string_screen_width(const char *string);
+size_t bm_utf8_rune_next(const char *string, size_t start);
+size_t bm_utf8_rune_prev(const char *string, size_t start);
+size_t bm_utf8_rune_width(const char *rune, uint32_t u8len);
+size_t bm_utf8_rune_remove(char *string, size_t start, size_t *out_rune_width);
+size_t bm_utf8_rune_insert(char **string, size_t *bufSize, size_t start, const 
char *rune, uint32_t u8len, size_t *out_rune_width);
+size_t bm_unicode_insert(char **string, size_t *bufSize, size_t start, 
uint32_t unicode, size_t *out_rune_width);
+bool bm_menu_item_is_selected(const struct bm_menu *menu, const struct bm_item 
*item);
 
 #endif /* _BEMENU_INTERNAL_H_ */
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bemenu-0.6.6/lib/menu.c new/bemenu-0.6.7/lib/menu.c
--- old/bemenu-0.6.6/lib/menu.c 2022-02-18 23:42:23.000000000 +0100
+++ new/bemenu-0.6.7/lib/menu.c 2022-02-22 01:01:04.000000000 +0100
@@ -39,18 +39,6 @@
     bm_filter_dmenu_case_insensitive /* BM_FILTER_DMENU_CASE_INSENSITIVE */
 };
 
-bool
-bm_menu_item_is_selected(const struct bm_menu *menu, const struct bm_item 
*item)
-{
-    assert(menu);
-    assert(item);
-
-    uint32_t i, count;
-    struct bm_item **items = bm_menu_get_selected_items(menu, &count);
-    for (i = 0; i < count && items[i] != item; ++i);
-    return (i < count);
-}
-
 struct bm_menu*
 bm_menu_new(const char *renderer)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bemenu-0.6.6/lib/renderers/wayland/registry.c 
new/bemenu-0.6.7/lib/renderers/wayland/registry.c
--- old/bemenu-0.6.6/lib/renderers/wayland/registry.c   2022-02-18 
23:42:23.000000000 +0100
+++ new/bemenu-0.6.7/lib/renderers/wayland/registry.c   2022-02-22 
01:01:04.000000000 +0100
@@ -56,7 +56,7 @@
     }
 
     char *map_str;
-    if ((map_str = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0)) == 
MAP_FAILED) {
+    if ((map_str = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0)) == 
MAP_FAILED) {
         close(fd);
         return;
     }
@@ -605,7 +605,7 @@
     if (strcmp(interface, "wl_compositor") == 0) {
         wayland->compositor = wl_registry_bind(registry, id, 
&wl_compositor_interface, 3);
     } else if (strcmp(interface, zwlr_layer_shell_v1_interface.name) == 0) {
-        wayland->layer_shell = wl_registry_bind(registry, id, 
&zwlr_layer_shell_v1_interface, 1);
+        wayland->layer_shell = wl_registry_bind(registry, id, 
&zwlr_layer_shell_v1_interface, 2);
     } else if (strcmp(interface, "wl_seat") == 0) {
         wayland->seat = wl_registry_bind(registry, id, &wl_seat_interface, 7);
         wl_seat_add_listener(wayland->seat, &seat_listener, &wayland->input);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bemenu-0.6.6/lib/util.c new/bemenu-0.6.7/lib/util.c
--- old/bemenu-0.6.6/lib/util.c 2022-02-18 23:42:23.000000000 +0100
+++ new/bemenu-0.6.7/lib/util.c 2022-02-22 01:01:04.000000000 +0100
@@ -400,4 +400,16 @@
     return bm_utf8_rune_insert(in_out_string, in_out_buf_size, start, mb, 
u8len, out_rune_width);
 }
 
+bool
+bm_menu_item_is_selected(const struct bm_menu *menu, const struct bm_item 
*item)
+{
+    assert(menu);
+    assert(item);
+
+    uint32_t i, count;
+    struct bm_item **items = bm_menu_get_selected_items(menu, &count);
+    for (i = 0; i < count && items[i] != item; ++i);
+    return (i < count);
+}
+
 /* vim: set ts=8 sw=4 tw=0 :*/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bemenu-0.6.6/scripts/check-symbols.sh 
new/bemenu-0.6.7/scripts/check-symbols.sh
--- old/bemenu-0.6.6/scripts/check-symbols.sh   1970-01-01 01:00:00.000000000 
+0100
+++ new/bemenu-0.6.7/scripts/check-symbols.sh   2022-02-22 01:01:04.000000000 
+0100
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Check that no internal symbols are being leaked from the library
+# $1: path to the .so
+# $2: path to the lib/bemenu.h
+
+hash grep nm sort awk comm printf cat touch
+
+tmp="$(mktemp -d)"
+trap 'rm -rf "$tmp"' EXIT
+
+grep '^BM_PUBLIC' "$2" | grep -o '[a-z_]*(' | grep -o '[a-z_]*' | awk 'NF' | 
sort > "$tmp/hdr.txt"
+
+nm --extern-only "$1" |\
+   awk '/T/{if (substr($3,1,1) == "_") print substr($3, 2); else print $3}' |\
+   grep -o '[a-z_]*' | awk 'NF' | sort > "$tmp/lib.txt"
+
+comm -13 "$tmp/hdr.txt" "$tmp/lib.txt" > "$tmp/leaks.txt"
+comm -23 "$tmp/hdr.txt" "$tmp/lib.txt" > "$tmp/missing.txt"
+
+if [ -s "$tmp/leaks.txt" ]; then
+   printf 'SYMBOL LEAKAGE: following symbols should not be marked BM_PUBLIC:\n'
+   cat "$tmp/leaks.txt" | awk '$0="> "$0'
+   touch "$tmp/failure"
+fi
+
+if [ -s "$tmp/missing.txt" ]; then
+   printf 'SYMBOL MISSING: following BM_PUBLIC symbols were not found from the 
binary:\n'
+   cat "$tmp/missing.txt" | awk '$0="> "$0'
+   touch "$tmp/failure"
+fi
+
+shift 2
+for renderer in "$@"; do
+   nm --extern-only "$renderer" | awk '/T/{print $3}' | grep -v 
register_renderer | awk 'NF' > "$tmp/${renderer}_leaks.txt"
+   if [ -s "$tmp/${renderer}_leaks.txt" ]; then
+      printf 'SYMBOL LEAKAGE: %s should only have a register_renderer symbol 
visible\n' "$renderer"
+      cat "$tmp/${renderer}_leaks.txt" | awk '$0="> "$0'
+      touch "$tmp/failure"
+   fi
+done
+
+test -f "$tmp/failure" && exit 1 || exit 0

Reply via email to