]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
Initial attempt at debian packaging, modified hyperscan packaging
authorKonstantinos Margaritis <markos@freevec.org>
Wed, 22 Dec 2021 11:13:12 +0000 (13:13 +0200)
committerKonstantinos Margaritis <markos@freevec.org>
Wed, 22 Dec 2021 11:13:12 +0000 (13:13 +0200)
17 files changed:
CMakeLists.txt
debian/changelog [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/gbp.conf [new file with mode: 0644]
debian/libvectorscan-dev.examples [new file with mode: 0644]
debian/libvectorscan-dev.install [new file with mode: 0644]
debian/libvectorscan5.install [new file with mode: 0644]
debian/libvectorscan5.lintian-overrides [new file with mode: 0644]
debian/libvectorscan5.preinst [new file with mode: 0755]
debian/rules [new file with mode: 0755]
debian/source/format [new file with mode: 0644]
debian/tests/build-lib [new file with mode: 0755]
debian/tests/control [new file with mode: 0644]
debian/tests/simplegrep.result [new file with mode: 0644]
debian/upstream/metadata [new file with mode: 0644]
debian/watch [new file with mode: 0644]

index 76bca8134d4a4457375b77c11b020d6d83eb0107..823844aca12ea4169b354ab8c195695e9678382e 100644 (file)
@@ -3,7 +3,7 @@ project (vectorscan C CXX)
 
 set (HS_MAJOR_VERSION 5)
 set (HS_MINOR_VERSION 4)
-set (HS_PATCH_VERSION 5)
+set (HS_PATCH_VERSION 6)
 set (HS_VERSION ${HS_MAJOR_VERSION}.${HS_MINOR_VERSION}.${HS_PATCH_VERSION})
 
 set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..27c3bbe
--- /dev/null
@@ -0,0 +1,5 @@
+vectorscan (5.4.6-1) UNRELEASED; urgency=medium
+
+  * Initial release. (Closes: #XXXXXX)
+
+ -- Konstantinos Margaritis <markos@debian.org>  Wed, 15 Dec 2021 13:20:38 +0200
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..ad14c3d
--- /dev/null
@@ -0,0 +1,60 @@
+Source: vectorscan
+Priority: optional
+Maintainer: Konstantinos Margaritis <markos@debian.org>
+Build-Depends: cmake (>=2.8.11),
+               debhelper-compat (=12),
+               libboost-dev (>=1.57),
+               libpcap-dev,
+               pkg-config,
+               po-debconf,
+               python3,
+               ragel (>=6.9)
+Standards-Version: 4.5.1
+Section: libs
+Rules-Requires-Root: no
+Homepage: https://vectorcamp.gr/vectorscan
+Vcs-Git: https://salsa.debian.org/debian/hyperscan.git
+Vcs-Browser: https://salsa.debian.org/debian/vectorscan
+
+Package: libvectorscan-dev
+Section: libdevel
+Architecture: any-amd64 arm64 ppc64el
+Replaces: libhyperscan-dev
+Conflicts: libhyperscan-dev
+Provides: libhyperscan-dev
+Depends: libvectorscan5 (= ${binary:Version}), ${misc:Depends}
+Description: Development files for the Vectorscan library
+ Vectorscan is a portable fork of Intel's Hyperscan project. It is a drop-in
+ replacement that promises to be API/ABI compatible with the original project,
+ while allowing it to run on other architectures such as AArch64 and Power9.
+ .
+ This package contains development libraries, header files and documentation for
+ the regular expression matching library libhyperscan. You can either use the
+ supplied shared or static library.
+ .
+ libvectorscan only runs on CPUs with a SIMD unit. On the Intel side, the minimum
+ requirement is SSE4.2, AArch64 ISA already implies Advanced SIMD/NEON and Power9
+ already implies VSX.
+
+Package: libvectorscan5
+Architecture: any-amd64 arm64 ppc64el
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: debconf
+Replaces: libhyperscan5
+Conflicts: libhyperscan5
+Provides: libhyperscan5
+Description: High-performance regular expression matching library
+ Vectorscan is a portable fork of Intel's Hyperscan project. It is a drop-in
+ replacement that promises to be API/ABI compatible with the original project,
+ while allowing it to run on other architectures such as AArch64 and Power9.
+ .
+ Hyperscan is a high-performance multiple regex matching library.
+ It follows the regular expression syntax of the commonly-used libpcre library,
+ but is a standalone library with its own C API. Hyperscan uses hybrid automata
+ techniques to allow simultaneous matching of large numbers (up to tens of
+ thousands) of regular expressions and for the matching of regular expressions
+ across streams of data. Hyperscan is typically used in a DPI library stack.
+ .
+ libvectorscan only runs on CPUs with a SIMD unit. On the Intel side, the minimum
+ requirement is SSE4.2, AArch64 ISA already implies Advanced SIMD/NEON and Power9
+ already implies VSX.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..3c2604c
--- /dev/null
@@ -0,0 +1,127 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: hyperscan
+Source: https://github.com/intel/hyperscan
+
+Files: *
+Copyright: 2015 Intel Corporation <hyperscan@intel.com>
+License: BSD-3-Clause-Intel
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+ 3. Neither the name of Intel Corporation nor the names of its contributors
+    may be used to endorse or promote products derived from this software
+    without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE HOLDERS OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Files: src/crc32.c
+Copyright: 2004-2006 Intel Corporation
+License: BSD-2-Clause
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE HOLDERS OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Files: include/boost-patched/graph/dominator_tree.hpp
+Copyright: 2005-2009 Jongsoo Park <jongsoo.park@gmail.com>
+License: BSL-1.0
+ Permission is hereby granted, free of charge, to any person or organization
+ obtaining a copy of the software and accompanying documentation covered by
+ this license (the "Software") to use, reproduce, display, distribute,
+ execute, and transmit the Software, and to prepare derivative works of the
+ Software, and to permit third-parties to whom the Software is furnished to
+ do so, all subject to the following:
+ .
+ The copyright notices in the Software and this entire statement, including
+ the above license grant, this restriction and the following disclaimer,
+ must be included in all copies of the Software, in whole or in part, and
+ all derivative works of the Software, unless such copies or derivative
+ works are solely in the form of machine-executable object code generated by
+ a source language processor.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+ SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+ FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+Files: unit/gtest/*
+Copyright: 2008 Google Inc.
+License: BSD-3-Clause-Google
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+ 3. Neither the name of Google Inc. nor the names of its contributors
+    may be used to endorse or promote products derived from this software
+    without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE HOLDERS OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Files: debian/*
+Copyright: 2016 Robert Haist <rhaist@mailbox.org>
+           2016 Hilko Bengen <bengen@debian.org>
+           2016 SZLin <szlin@cs.nctu.edu.tw>
+License: GPL-2+
+ This package 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 2 of the License, or
+ (at your option) any later version.
+ .
+ This package 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 this program. If not, see <https://www.gnu.org/licenses/>
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644 (file)
index 0000000..d87d655
--- /dev/null
@@ -0,0 +1,3 @@
+[DEFAULT]
+
+pristine-tar=True
diff --git a/debian/libvectorscan-dev.examples b/debian/libvectorscan-dev.examples
new file mode 100644 (file)
index 0000000..00af7c3
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/vectorscan/examples/*
diff --git a/debian/libvectorscan-dev.install b/debian/libvectorscan-dev.install
new file mode 100644 (file)
index 0000000..76f28fa
--- /dev/null
@@ -0,0 +1,4 @@
+usr/include/*
+usr/lib/*/lib*.a
+usr/lib/*/lib*.so
+usr/lib/*/pkgconfig/*
diff --git a/debian/libvectorscan5.install b/debian/libvectorscan5.install
new file mode 100644 (file)
index 0000000..3ddde58
--- /dev/null
@@ -0,0 +1 @@
+usr/lib/*/lib*.so.*
diff --git a/debian/libvectorscan5.lintian-overrides b/debian/libvectorscan5.lintian-overrides
new file mode 100644 (file)
index 0000000..18e4807
--- /dev/null
@@ -0,0 +1,5 @@
+# Rationale:
+# The original library name libhs4 is to short and could
+# be mistaken. So we changed it to libhyperscan5 for Debian.
+
+libvectorscan5: package-name-doesnt-match-sonames
diff --git a/debian/libvectorscan5.preinst b/debian/libvectorscan5.preinst
new file mode 100755 (executable)
index 0000000..682bdf2
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+    install|upgrade)
+        if [ "$DEBIAN_FRONTEND" != noninteractive ] && \
+               [ -f /proc/cpuinfo ] && \
+               ! grep -q '^flags[[:space:]]*:.*[[:space:]]sse4_2[[:space:]]' /proc/cpuinfo
+        then
+            . /usr/share/debconf/confmodule
+            db_version 2.0
+            db_input critical libvectorscan/cpu-sse4_2 || true
+            db_go
+            db_get libhyperscan/cpu-sse42
+            if [ "$RET" = 'false' ]; then
+                echo 'Aborting installation because of missing SSE4.2 extension.' >&2
+                db_purge
+                exit 1
+            fi
+        fi
+    ;;
+
+    abort-upgrade)
+    ;;
+
+    *)
+        echo "preinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..daf8f43
--- /dev/null
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+
+
+export DEB_CMAKE_FLAGS = -DBUILD_AVX2=on -DBUILD_AVX512=on -DBUILD_AVX512VBMI=off
+
+%:
+       dh $@
+
+override_dh_auto_configure:
+       dh_auto_configure -- \
+               -DBUILD_STATIC_AND_SHARED=1 \
+               -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+               ${DEB_CMAKE_FLAGS}
+
+override_dh_missing:
+       dh_missing --fail-missing
diff --git a/debian/source/format b/debian/source/format
new file mode 100644 (file)
index 0000000..163aaf8
--- /dev/null
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/tests/build-lib b/debian/tests/build-lib
new file mode 100755 (executable)
index 0000000..037651c
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh
+# autopkgtest check: Build a program against libhyperscan and check whether a
+#                    runnable binary is produced.
+# Author: Sascha Steinbiss <satta@debian.org>
+set -e
+
+SRC=$(pwd)/examples/simplegrep.c
+RES=$(pwd)/debian/tests/simplegrep.result
+WORKDIR=$(mktemp -d)
+
+trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM
+cd $WORKDIR
+
+gcc -o simplegrep $SRC $(pkg-config --cflags --libs libhs)
+[ -x simplegrep ]
+echo "build: OK"
+
+echo "barbaz" > 1
+./simplegrep ba 1 > 2
+diff 2 $RES
+echo "run: OK"
diff --git a/debian/tests/control b/debian/tests/control
new file mode 100644 (file)
index 0000000..dfde0b2
--- /dev/null
@@ -0,0 +1,2 @@
+Tests: build-lib
+Depends: build-essential, pkg-config, @
diff --git a/debian/tests/simplegrep.result b/debian/tests/simplegrep.result
new file mode 100644 (file)
index 0000000..de95bb2
--- /dev/null
@@ -0,0 +1,3 @@
+Scanning 7 bytes with Hyperscan
+Match for pattern "ba" at offset 2
+Match for pattern "ba" at offset 5
diff --git a/debian/upstream/metadata b/debian/upstream/metadata
new file mode 100644 (file)
index 0000000..9675c23
--- /dev/null
@@ -0,0 +1,5 @@
+---
+Bug-Database: https://github.com/vectorcamp/vectorscan/issues
+Bug-Submit: https://github.com/vectorcamp/vectorscan/issues/new
+Repository: https://github.com/vectorcamp/vectorscan.git
+Repository-Browse: https://github.com/vectorcamp/vectorscan
diff --git a/debian/watch b/debian/watch
new file mode 100644 (file)
index 0000000..6a53d33
--- /dev/null
@@ -0,0 +1,4 @@
+version=4
+opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%<project>-$1.tar.gz%" \
+    https://github.com/vectorcamp/vectorscan/releases \
+    (?:.*?/)?v?(\d[\d.]*)\.tar\.gz debian uupdate