Message ID | 87va0zc5y7.fsf@nicolasgoaziou.fr |
---|---|
State | Accepted |
Headers | show |
Series | [bug#34728] Update Wireshark to 3.0.0 | expand |
Context | Check | Description |
---|---|---|
cbaines/comparison | success | View comparison |
cbaines/applying patch | fail | Apply failed |
Hi Nicolas, Nicolas Goaziou <mail@nicolasgoaziou.fr> skribis: > The following patch updates Wireshark to 3.0.0. > > This change is not trivial. In particular, upstream switched build > system (GNU to CMake) and it seems to annoy `validate-runpath' phase. > I tried various things to make it pass, e.g., removing "INSTALL_RPATH" > settings in various "CMakeLists.txt", or re-build rpath, à la > "powertabeditor", to no avail. > > Out of ideas, I disabled the phase. Wireshark seems to run anyway, even > though I didn't thoroughly tested it. Weird. >>From dbaee4641e329bbdd44b0645acb4ec5a97ee5eaa Mon Sep 17 00:00:00 2001 > From: Nicolas Goaziou <mail@nicolasgoaziou.fr> > Date: Sun, 3 Mar 2019 01:33:44 +0100 > Subject: [PATCH] gnu: wireshark: Update to 3.0.0. > > * gnu/packages/networking.scm (wireshark): Update to 3.0.0. Overall LGTM! If you’re confident you can go ahead and push, no need to wait until the update is outdated. ;-) > + ;; "CMakeLists.txt" uses $ORIGIN, which seems to confuse > + ;; `validate-runpath' phase. > + ;; > + ;; Errors are like the following: > + ;; "/gnu/store/...wireshark-3.0.0/lib/wireshark/plugins/3.0/epan/ethercat.so: > + ;; error: depends on 'libwireshark.so.12', which cannot be found in > + ;; RUNPATH". That is, "/gnu/store/...wireshark-3.0.0./lib" doesn't > + ;; seem to belong to RUNPATH. What’s the RUNPATH on ethercat.so? readelf -a ethercat.so | grep RUNPATH And where is libwireshark.so.12? ‘validate-runpath’ does interpret $ORIGIN, but maybe there’s a but there. Thanks, Ludo’.
Hello, Thank you for the review. Ludovic Courtès <ludo@gnu.org> writes: > Nicolas Goaziou <mail@nicolasgoaziou.fr> skribis: > >> + ;; "CMakeLists.txt" uses $ORIGIN, which seems to confuse >> + ;; `validate-runpath' phase. >> + ;; >> + ;; Errors are like the following: >> + ;; "/gnu/store/...wireshark-3.0.0/lib/wireshark/plugins/3.0/epan/ethercat.so: >> + ;; error: depends on 'libwireshark.so.12', which cannot be found in >> + ;; RUNPATH". That is, "/gnu/store/...wireshark-3.0.0./lib" doesn't >> + ;; seem to belong to RUNPATH. > > What’s the RUNPATH on ethercat.so? > > readelf -a ethercat.so | grep RUNPATH 0x000000000000001d (RUNPATH) Bibliothèque runpath:[:/gnu/store/...-glibc-2.28/lib:/gnu/store/...-gcc-5.5.0-lib/lib:/gnu/store/...-glib-2.56.3/lib:/gnu/store/...-libpcap-1.9.0/lib:/gnu/store/...-libgcrypt-1.8.3/lib:/gnu/store/...-libgpg-error-1.32/lib:/gnu/store/...-gnutls-3.6.5/lib:/gnu/store/...-gcc-5.5.0-lib/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../..] > And where is libwireshark.so.12? In "/gnu/store/...wireshark-3.0.0/lib". I don't understand why this is getting removed. > ‘validate-runpath’ does interpret $ORIGIN, but maybe there’s a but > there. Then my remark about $ORIGIN is wrong. Regards,
Hi Nicolas, Nicolas Goaziou <mail@nicolasgoaziou.fr> skribis: > Ludovic Courtès <ludo@gnu.org> writes: > >> Nicolas Goaziou <mail@nicolasgoaziou.fr> skribis: >> >>> + ;; "CMakeLists.txt" uses $ORIGIN, which seems to confuse >>> + ;; `validate-runpath' phase. >>> + ;; >>> + ;; Errors are like the following: >>> + ;; "/gnu/store/...wireshark-3.0.0/lib/wireshark/plugins/3.0/epan/ethercat.so: >>> + ;; error: depends on 'libwireshark.so.12', which cannot be found in >>> + ;; RUNPATH". That is, "/gnu/store/...wireshark-3.0.0./lib" doesn't >>> + ;; seem to belong to RUNPATH. >> >> What’s the RUNPATH on ethercat.so? >> >> readelf -a ethercat.so | grep RUNPATH > > 0x000000000000001d (RUNPATH) Bibliothèque runpath:[:/gnu/store/...-glibc-2.28/lib:/gnu/store/...-gcc-5.5.0-lib/lib:/gnu/store/...-glib-2.56.3/lib:/gnu/store/...-libpcap-1.9.0/lib:/gnu/store/...-libgcrypt-1.8.3/lib:/gnu/store/...-libgpg-error-1.32/lib:/gnu/store/...-gnutls-3.6.5/lib:/gnu/store/...-gcc-5.5.0-lib/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../..] Look, there’s no $ORIGIN in there! :-) So the problem is really that /gnu/store/…-wireshark-3.0.0/lib is missing. That’s not a problem in practice because ethercat.so is a plugin, so it’s dlopen’d by a process that already provides libwireshark. (It’s still bad style IMO.) Anyway you can keep #:validate-runpath? #f and adjust the comment. Thank you, Ludo’.
Hello, Ludovic Courtès <ludo@gnu.org> writes: > Look, there’s no $ORIGIN in there! :-) Indeed. The supposed $ORIGIN issue was a guess of mine. I guessed it wrong. > So the problem is really that /gnu/store/…-wireshark-3.0.0/lib is > missing. > > That’s not a problem in practice because ethercat.so is a plugin, so > it’s dlopen’d by a process that already provides libwireshark. (It’s > still bad style IMO.) > > Anyway you can keep #:validate-runpath? #f and adjust the comment. I updated the comment, and pushed as 2b6ab17f7d61bcee92194d8b155a709481a95244. Thank you. Regards,
From dbaee4641e329bbdd44b0645acb4ec5a97ee5eaa Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou <mail@nicolasgoaziou.fr> Date: Sun, 3 Mar 2019 01:33:44 +0100 Subject: [PATCH] gnu: wireshark: Update to 3.0.0. * gnu/packages/networking.scm (wireshark): Update to 3.0.0. --- gnu/packages/networking.scm | 101 ++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 51 deletions(-) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index f7477230a6..ebfdcfc345 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -591,7 +591,7 @@ of the same name.") (define-public wireshark (package (name "wireshark") - (version "2.6.6") + (version "3.0.0") (source (origin (method url-fetch) @@ -599,59 +599,58 @@ of the same name.") version ".tar.xz")) (sha256 (base32 - "0qz8a1ays63712pq1v7nnw7c57zlqkcifq7himfv5nsv0zm36ya8")))) - (build-system gnu-build-system) - (inputs `(("c-ares" ,c-ares) - ("glib" ,glib) - ("gnutls" ,gnutls) - ("libcap" ,libcap) - ("libgcrypt" ,libgcrypt) - ("libnl" ,libnl) - ("libpcap" ,libpcap) - ("libssh" ,libssh) - ("libxml2" ,libxml2) - ("lz4" ,lz4) - ("lua" ,lua-5.2) ;Lua 5.3 unsupported - ("krb5" ,mit-krb5) - ("portaudio" ,portaudio) - ("qtbase" ,qtbase) - ("qtmultimedia" ,qtmultimedia) - ("sbc" ,sbc) - ("snappy" ,snappy) - ("zlib" ,zlib))) - (native-inputs `(("perl" ,perl) - ("pkg-config" ,pkg-config) - ("python" ,python-wrapper) - ("qttools" ,qttools))) + "17h0ixq7yr6scscjkidaj3dh5x6dfd3f97ggdxlklkz9nbsk0kxw")))) + (build-system cmake-build-system) (arguments - `(#:configure-flags - (list (string-append "--with-c-ares=" (assoc-ref %build-inputs "c-ares")) - (string-append "--with-krb5=" (assoc-ref %build-inputs "krb5")) - (string-append "--with-libcap=" (assoc-ref %build-inputs "libcap")) - (string-append "--with-libssh=" (assoc-ref %build-inputs "libssh")) - (string-append "--with-lua=" (assoc-ref %build-inputs "lua")) - (string-append "--with-lz4=" (assoc-ref %build-inputs "lz4")) - (string-append "--with-pcap=" (assoc-ref %build-inputs "libpcap")) - (string-append "--with-portaudio=" - (assoc-ref %build-inputs "portaudio")) - (string-append "--with-sbc=" (assoc-ref %build-inputs "sbc")) - (string-append "--with-snappy=" (assoc-ref %build-inputs "snappy")) - (string-append "--with-zlib=" (assoc-ref %build-inputs "zlib"))) - #:phases + `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-source + (add-after 'unpack 'remove-failing-test + ;; Test 31/32 fails with errors like "Program reassemble_test is + ;; not available". Skipping it for now. (lambda _ - ;; Fix build against Qt 5.11. - (substitute* "ui/qt/packet_format_group_box.cpp" - (("#include <QStyle>") "#include <QStyle> -#include <QStyleOption>")) - (substitute* "ui/qt/time_shift_dialog.cpp" - (("#include <ui/time_shift.h>") "#include <ui/time_shift.h> -#include <QStyleOption>")) - (substitute* "ui/qt/wireless_frame.cpp" - (("#include <QProcess>") "#include <QProcess> -#include <QAbstractItemView>")) - #t))))) + (substitute* "CMakeLists.txt" + (("suite_unittests" all) (string-append "# " all))) + #t))) + ;; "CMakeLists.txt" uses $ORIGIN, which seems to confuse + ;; `validate-runpath' phase. + ;; + ;; Errors are like the following: + ;; "/gnu/store/...wireshark-3.0.0/lib/wireshark/plugins/3.0/epan/ethercat.so: + ;; error: depends on 'libwireshark.so.12', which cannot be found in + ;; RUNPATH". That is, "/gnu/store/...wireshark-3.0.0./lib" doesn't + ;; seem to belong to RUNPATH. + ;; + ;; For now, we disable this phase, as Wireshark seems to run properly + ;; anyway. + #:validate-runpath? #f)) + (inputs + `(("c-ares" ,c-ares) + ("glib" ,glib) + ("gnutls" ,gnutls) + ("libcap" ,libcap) + ("libgcrypt" ,libgcrypt) + ("libnl" ,libnl) + ("libpcap" ,libpcap) + ("libssh" ,libssh) + ("libxml2" ,libxml2) + ("lz4" ,lz4) + ("lua" ,lua-5.2) ;Lua 5.3 unsupported + ("krb5" ,mit-krb5) + ("qtbase" ,qtbase) + ("qtmultimedia" ,qtmultimedia) + ("qtsvg" ,qtsvg) + ("sbc" ,sbc) + ("snappy" ,snappy) + ("zlib" ,zlib))) + (native-inputs + `(("bison" ,bison) + ("doxygen" ,doxygen) + ("flex" ,flex) + ("gettext" ,gettext-minimal) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python-wrapper) + ("qttools" ,qttools))) (synopsis "Network traffic analyzer") (description "Wireshark is a network protocol analyzer, or @dfn{packet sniffer}, that lets you capture and interactively browse the contents of -- 2.21.0