Subject: Re: [bug#72793] [PATCH] Package DPDK

From: Zheng Junjie <[email-masked]>
Date: Wed, 06 Nov 2024 22:13:46 +0800

Kai Jellinghaus <[email-masked]> writes:

> 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))

Normally we use python-minimal, not python.

move some native-inputs to inputs. they're runtime dependent.

> +    (inputs '())

add numactl  libarchive  zlib jansson libxcrypt libpcap libbpf openssl
libbsd, is meson configure phase say.

> +    (arguments
> +      ; tests do exist, however they all require /sys/devices/system/
> to be available. TODO
> +     `(#:tests? #f))

test require /sys/devices/system/, so we canno't run tests.

add -Dplatform=generic -Dtests=false .

and add properties tunable? to #t

> +    (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

patch pushed.