Subject: [bug#55827] [PATCH v2] gnu: Add kismet.

From: phodina <[email-masked]>
Date: Fri, 10 Jun 2022 08:44:24 +0000

Hi,

> phodina schreef op di 07-06-2022 om 09:57 [+0000]:
>
> > I'm not a laywer so can't really say if they are compatible or not in
> > this case. Therefore the websockets are now removed by configuration
> > flag.
> >
> > However, if I think the best approach would be to create issue/bring
> > this issue to the developers of Kismet.
>
>
> I don't think this is necessary, because of ...
>
> > However, according to v4.0.0 in the changelog, [libwebsockets] is
> > Expat (‘MIT’) licensed, so maybe all that's needed is correcting the
> > license information?
>
>
> (basically, the license information in the package definition and the
> LICENSE file of libwebsockets do not seem to agree).
>
> WDYT?
>
> Greetings,
> Maxime.

Yeah seems there isn't an issue since v4.0 libwebsockets license was changed to MIT as stated here [1].

It was last updated in commit acd953bd64b72cf7185f1d97f33cb6770ff8bfaf.

So I include libwesockets in kismet inputs and provide patch for license of libwesockets.

1 https://github.com/warmcat/libwebsockets/tree/v4.1.6#v40-is-released

----
Petr
From e62ddd99f36e5761beeb4fc89f293888e3056548 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 10 Jun 2022 10:41:14 +0200
Subject: [PATCH v2 2/2] gnu: libwesockets: Update license.

* gnu/packages/web.scm (libwebsockets)[license]: Change to expat.

diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 8306ea54fb..250267eb52 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -57,6 +57,7 @@
 ;;; Copyright © 2021 Vinicius Monego <[email-masked]>
 ;;; Copyright © 2022 cage <[email-masked]>
 ;;; Copyright © 2022 Pradana Aumars <[email-masked]>
+;;; Copyright © 2022 Petr Hodina <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1451,9 +1452,7 @@ (define-public libwebsockets
 and server WebSockets connections---a protocol layered above HTTP that allows
 for efficient socket-like bidirectional reliable communication channels.")
     (home-page "https://libwebsockets.org")
-
-    ;; This is LGPLv2.1-only with extra exceptions specified in 'LICENSE'.
-    (license license:lgpl2.1)))
+    (license license:expat)))
 
 (define-public wabt
   (package
-- 
2.35.1

From 1127c7ba385bf2e55d1c84d8d46162eb461d7548 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Tue, 7 Jun 2022 08:11:33 +0200
Subject: [PATCH v2 1/2] gnu: Add kismet.

* gnu/packages/networking.scm (kismet): New variable.
* gnu/local.mk: Add patch.
* gnu/packages/patches/kismet-unbundle-boost.patch: New file.

diff --git a/gnu/local.mk b/gnu/local.mk
index 68b317b32a..d6cf85d220 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1349,6 +1349,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/kinit-kdeinit-extra_libs.patch		\
   %D%/packages/patches/kinit-kdeinit-libpath.patch		\
   %D%/packages/patches/kio-search-smbd-on-PATH.patch		\
+  %D%/packages/patches/kismet-unbundle-boost.patch		\
   %D%/packages/patches/kmail-Fix-missing-link-libraries.patch \
   %D%/packages/patches/kmod-module-directory.patch		\
   %D%/packages/patches/kmscon-runtime-keymap-switch.patch	\
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index b47afea0c6..734abbf205 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -9265,3 +9265,4 @@ (define-public touchegg
 gestures you make on your touchpad or touchscreen into visible actions in your
 desktop.")
     (license license:gpl3+)))
+
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index bfa956149d..716fcd7b09 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -49,6 +49,7 @@
 ;;; Copyright © 2021 Maxime Devos <[email-masked]>
 ;;; Copyright © 2022 Simon South <[email-masked]>
 ;;; Copyright © 2022 Pierre Langlois <[email-masked]>
+;;; Copyright © 2022 Petr Hodina <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -114,6 +115,7 @@ (define-module (gnu packages networking)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libidn)
+  #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages kerberos)
@@ -129,6 +131,7 @@ (define-module (gnu packages networking)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages polkit)
   #:use-module (gnu packages pretty-print)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-crypto)
@@ -547,6 +550,58 @@ (define-public python-pysctp
 SCTP-aware kernel (most are).")
     (license license:lgpl2.1+)))
 
+(define-public kismet
+  (package
+    (name "kismet")
+    (version "2022-02")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://www.kismetwireless.net/git/kismet.git")
+                    (commit (string-append "kismet-" version "-R1"))))
+              (patches (search-patches "kismet-unbundle-boost.patch"))
+              (modules '((guix build utils)))
+              (snippet '(begin
+                          ;; Drop bundled libraries.
+                          (delete-file-recursively "boost")))
+              (sha256
+               (base32
+                "01q86hrgpai433sc65dlnqy91qd26w5dwyp37adszqxfb6d2an1r"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:tests?
+           #f ;no test suite
+           ;; Disable C-based libwebsockets due to incompatibility
+           ;; between licenses with openssl (asl2.0 and lgpl2.1)
+           #:configure-flags
+           #~(list "--disable-libwebsockets")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'fix-install
+                 (lambda* _
+                   (substitute* "Makefile.in"
+                     (("-o \\$\\(INSTUSR\\) -g \\$\\(SUIDGROUP\\)") "")
+                     (("-o \\$\\(INSTUSR\\) -g \\$\\(INSTGRP\\)") "")))))))
+    (home-page "https://www.kismetwireless.net/")
+    (native-inputs (list perl pkg-config python python-2))
+    (inputs (list boost
+                  libusb
+                  libpcap
+                  libwebsockets
+                  openssl
+                  protobuf
+                  protobuf-c
+                  sqlite
+                  zlib))
+    (synopsis "Wireless network and device detector")
+    (description
+     "This package provides a wireless network and device detector, sniffer,
+wardriving tool, and WIDS (wireless intrusion detection) framework.  Kismet
+works with Wi-Fi interfaces, Bluetooth interfaces, some SDR
+(software defined radio) hardware like the RTLSDR, and other specialized
+capture hardware")
+    (license license:gpl2+)))
+
 (define-public knockd
   (package
     (name "knockd")
diff --git a/gnu/packages/patches/kismet-unbundle-boost.patch b/gnu/packages/patches/kismet-unbundle-boost.patch
new file mode 100644
index 0000000000..06e028bb23
--- /dev/null
+++ b/gnu/packages/patches/kismet-unbundle-boost.patch
@@ -0,0 +1,104 @@
+From 170ed96fe53531f93cdbca184faeda4bdf457169 Mon Sep 17 00:00:00 2001
+From: Petr Hodina <[email-masked]>
+Date: Tue, 7 Jun 2022 11:34:29 +0200
+Subject: [PATCH] Unbundle boost.
+
+
+diff --git a/globalregistry.h b/globalregistry.h
+index 1974f54..3d97364 100644
+--- a/globalregistry.h
++++ b/globalregistry.h
+@@ -34,7 +34,7 @@
+ #include "util.h"
+ #include "uuid.h"
+ 
+-#include "boost/asio.hpp"
++#include <boost/asio.hpp>
+ 
+ class global_registry;
+ 
+diff --git a/gpsgpsd_v3.h b/gpsgpsd_v3.h
+index 77acb14..8cb3cd4 100644
+--- a/gpsgpsd_v3.h
++++ b/gpsgpsd_v3.h
+@@ -25,7 +25,7 @@
+ #include "kis_gps.h"
+ #include "timetracker.h"
+ 
+-#include "boost/asio.hpp"
++#include <boost/asio.hpp>
+ 
+ using boost::asio::ip::tcp;
+ 
+diff --git a/gpsnmea_v2.h b/gpsnmea_v2.h
+index d761fd3..7518b94 100644
+--- a/gpsnmea_v2.h
++++ b/gpsnmea_v2.h
+@@ -28,7 +28,7 @@
+ #define ASIO_HAS_STD_CHRONO
+ #define ASIO_HAS_MOVE
+ 
+-#include "boost/asio.hpp"
++#include <boost/asio.hpp>
+ 
+ // Generic NMEA parser for GPS
+ 
+diff --git a/gpsserial_v3.h b/gpsserial_v3.h
+index c9f633f..2fa9acb 100644
+--- a/gpsserial_v3.h
++++ b/gpsserial_v3.h
+@@ -29,7 +29,7 @@
+ #define ASIO_HAS_STD_CHRONO
+ #define ASIO_HAS_MOVE
+ 
+-#include "boost/asio.hpp"
++#include <boost/asio.hpp>
+ 
+ // NMEA serial-attached GPS
+ // Implemented using ASIO serial
+diff --git a/gpstcp_v2.h b/gpstcp_v2.h
+index 75ec2e9..ab46216 100644
+--- a/gpstcp_v2.h
++++ b/gpstcp_v2.h
+@@ -29,7 +29,7 @@
+ #define ASIO_HAS_STD_CHRONO
+ #define ASIO_HAS_MOVE
+ 
+-#include "boost/asio.hpp"
++#include <boost/asio.hpp>
+ 
+ using boost::asio::ip::tcp;
+ 
+diff --git a/kis_external.h b/kis_external.h
+index 217f18a..af397b5 100644
+--- a/kis_external.h
++++ b/kis_external.h
+@@ -42,7 +42,7 @@
+ #include "kis_external_packet.h"
+ #include "kis_net_beast_httpd.h"
+ 
+-#include "boost/asio.hpp"
++#include <boost/asio.hpp>
+ using boost::asio::ip::tcp;
+ 
+ #include <google/protobuf/message_lite.h>
+diff --git a/kis_net_beast_httpd.h b/kis_net_beast_httpd.h
+index 355996c..989745e 100644
+--- a/kis_net_beast_httpd.h
++++ b/kis_net_beast_httpd.h
+@@ -28,9 +28,9 @@
+ #include <thread>
+ #include <unordered_map>
+ 
+-#include "boost/asio.hpp"
+-#include "boost/beast.hpp"
+-#include "boost/optional.hpp"
++#include <boost/asio.hpp>
++#include <boost/beast.hpp>
++#include <boost/optional.hpp>
+ 
+ #include "entrytracker.h"
+ #include "future_chainbuf.h"
+-- 
+2.35.1
+
-- 
2.35.1