Subject: [PATCH] Package DPDK

From: Kai Jellinghaus <[email-masked]>
Date: Sat, 24 Aug 2024 15:25:25 +0200

I've created a small patch to create a dpdk package. I did my best to
follow the docs, but please do point out any mistake I've made.
As you will see tests are disabled currently - I've not been able to
figure out how to mount /sys into the build sandbox. I'm not sure if
this is critical for accepting the package.
Additionally, this patch is based on my own copy of guix, so the base
commit is likely incompatible. Again, I'm unsure if this poses a
problem.

Lastly, I haven't seen info on how the copyright headers are done.
I've seen a bunch of different people so I'm assuming it's the author,
and copyright isn't somehow signed over.

Please let me know about any issues, I'm happy to put in the work.

>From e2cbd9c0a296bab233728e193d670199e1fda6aa Mon Sep 17 00:00:00 2001
Message-ID: <[email-masked]>
From: Kai Jellinghaus <[email-masked]>
Date: Sat, 24 Aug 2024 15:06:09 +0200
Subject: [PATCH] Package DPDK

Change-Id: Ib1486e7c9af77a88a90631f9dd775d54ba88ce9c
---
 gnu/local.mk          |  1 +
 gnu/packages/dpdk.scm | 63 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 64 insertions(+)
 create mode 100644 gnu/packages/dpdk.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 4d7b17e4b4..e0bb90fa13 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -249,6 +249,7 @@ GNU_SYSTEM_MODULES =                \
   %D%/packages/docbook.scm            \
   %D%/packages/docker.scm            \
   %D%/packages/documentation.scm        \
+  %D%/packages/dpdk.scm        \
   %D%/packages/dvtm.scm                \
   %D%/packages/easyrpg.scm            \
   %D%/packages/ebook.scm            \
diff --git a/gnu/packages/dpdk.scm b/gnu/packages/dpdk.scm
new file mode 100644
index 0000000000..4fb965799a
--- /dev/null
+++ b/gnu/packages/dpdk.scm
@@ -0,0 +1,63 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2024 Kai Jellinghaus <[email-masked]>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages dpdk)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix gexp)
+  #:use-module (guix utils)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system meson)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages backup)
+  #:use-module (gnu packages elf)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages pkg-config))
+
+(define-public dpdk
+  (package
+    (name "dpdk")
+    (version "24.07")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/DPDK/dpdk")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "04i4j4c5vcyldh0435hr01d2d5c0xf6y0sfg64764f79902i8p6i"))))
+    (build-system meson-build-system)
+    (native-inputs (list pkg-config python python-pyelftools numactl
libarchive libelf))
+    (inputs '())
+    (arguments
+      ; tests do exist, however they all require /sys/devices/system/
to be available. TODO
+     `(#:tests? #f))
+    (license (list
+      ; some files are additionally lgpl-2.1, but only in combination
with bsd-3
+      license:bsd-3 ; core components
+      license:gpl2 ; kernel components
+      license:expat ; lib/eal/windows/include/dirent.h, drivers/net/gve/base/*
+      license:bsd-2 ; lib/eal/windows/include/getopt.h
+      license:isc)) ; lib/eal/windows/getopt.c (dual licensed to bsd-2)
+    (synopsis "Data Plane Development Kit")
+    (description "DPDK is a set of libraries and drivers for fast
packet processing.")
+    (home-page "https://www.dpdk.org/")))
\ No newline at end of file

base-commit: e27369b5e62e58b480b7d0dfeb1ed03180342353
-- 
2.46.0