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

From: phodina <[email-masked]>
Date: Tue, 07 Jun 2022 09:57:02 +0000

Hi Maxime,

sorry about the mirror, it's fixed in the patch.

> phodina via Guix-patches via schreef op di 07-06-2022 om 07:41 [+0000]:
>
> > + (inputs (list openssl libpcap libusb protobuf protobuf-c
> > libwebsockets sqlite zlib))
>
> [...]
>
> > +    (license license:gpl2+)))
>
>
> libwebsockets is lgpl2.1 according to the package definition.
> Its dependency openssl is asl2.0. According to the FSF, asl2.0 and
> gpl2.0 are incompatible. So possibly asl2.0 and lgpl2.1 are
> incompatible (though I haven't seen any reliable claim for
> compatibility or incompatibility for _l_gpl, maybe it is compatible)
> and hence libwebsockets needs to be removed from kismet and Guix.
>
> However, according to v4.0.0 in the changelog, it is Expat (‘MIT’)
> licensed, so maybe all that's needed is correcting the license
> information?
>
> Greetings,
> Maxime.

Well regarding the license. They have the following statement:

** UNLESS OTHERWISE NOTED IN THE FILE OR DIRECTORY, KISMET
   IS RELEASED UNDER THE GPL2 LICENSE

   SPECIFIC SUBCOMPONENTS AND FILES MAY BE UNDER LESS RESTRICTIVE
   LICENSES.  THESE DIFFERENCES ARE NOTED IN THE FILE OR IN THE
   LICENSE FILE OF THOSE SUBDIRECTORIES **

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.

The unfortunate thing with the current patch is it does not build as the boost library has been unbundled and the include headers fixed. What's missing is to add boost in the AutoConf scripts.

I don't have that kind of experience. If you know about some project that uses boost that could serve as reference it would be most welcome.

----
Petr

From a90149b12efd3ac8f43bfc79715ce20aa32467c2 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Tue, 7 Jun 2022 08:11:33 +0200
Subject: [PATCH v2] 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/networking.scm b/gnu/packages/networking.scm
index bfa956149d..71f7bd4a41 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,56 @@ (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 libusb
+                  libpcap
+                  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