Skip to content

Commit

Permalink
Merge pull request #85 from VectorCamp/feature/add-debian-package
Browse files Browse the repository at this point in the history
Feature/add debian package
  • Loading branch information
markos authored Jan 21, 2022
2 parents 90018f9 + 0949576 commit 6cd6957
Show file tree
Hide file tree
Showing 15 changed files with 270 additions and 3 deletions.
12 changes: 9 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -236,8 +236,14 @@ if (ARCH_AARCH64)
endif ()
endif(ARCH_AARCH64)

set(ARCH_C_FLAGS "-${ARCH_FLAG}=${GNUCC_ARCH} -mtune=${TUNE_FLAG} ${ARCH_C_FLAGS}")
set(ARCH_CXX_FLAGS "-${ARCH_FLAG}=${GNUCC_ARCH} -mtune=${TUNE_FLAG} ${ARCH_CXX_FLAGS}")

message(STATUS "ARCH_C_FLAGS : ${ARCH_C_FLAGS}")
message(STATUS "ARCH_CXX_FLAGS : ${ARCH_CXX_FLAGS}")

if (NOT FAT_RUNTIME)
set(ARCH_C_FLAGS "-${ARCH_FLAG}=${GNUCC_ARCH} -mtune=${TUNE_FLAG} ${ARCH_C_FLAGS}")
set(ARCH_CXX_FLAGS "-${ARCH_FLAG}=${GNUCC_ARCH} -mtune=${TUNE_FLAG} ${ARCH_CXX_FLAGS}")
endif()

#if (ARCH_IA32 OR ARCH_X86_64 OR ARCH_ARM32 OR ARCH_AARCH64)
# if (NOT CMAKE_C_FLAGS MATCHES .*march.* AND NOT CMAKE_C_FLAGS MATCHES .*mtune.*)
Expand Down
5 changes: 5 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
vectorscan (5.4.6.1) unstable; urgency=medium

* Initial release. (Closes: #1004079)

-- Konstantinos Margaritis <[email protected]> Wed, 15 Dec 2021 13:20:38 +0200
60 changes: 60 additions & 0 deletions debian/control
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
Source: vectorscan
Priority: optional
Maintainer: Konstantinos Margaritis <[email protected]>
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: Portable fork of Intel's Hyperscan library (development files)
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.
.
Vectorscan only runs on CPUs with a SIMD unit. On x86 CPUs, the minimum
requirement is SSE4.2, AArch64 ISA already implies Advanced SIMD/NEON and
ppc64le (Power8/Power9) already implies VSX enabled by default.

Package: libvectorscan5
Architecture: any-amd64 arm64 ppc64el
Depends: ${misc:Depends}, ${shlibs:Depends}, sse4.2-support [any-amd64]
Pre-Depends: debconf
Replaces: libhyperscan5
Conflicts: libhyperscan5
Provides: libhyperscan5
Description: Portable fork of Intel's Hyperscan 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.
.
Vectorscan only runs on CPUs with a SIMD unit. On x86 CPUs, the minimum
requirement is SSE4.2, AArch64 ISA already implies Advanced SIMD/NEON and
ppc64le (Power8/Power9) already implies VSX enabled by default.
130 changes: 130 additions & 0 deletions debian/copyright
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: vectorscan
Source: https://github.com/VectorCamp/vectorscan

Files: *
Copyright: 2015 Intel Corporation <[email protected]>
2019-2022 VectorCamp PC <[email protected]>
2021-2022 Arm Limited
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 <[email protected]>
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 <[email protected]>
2016 Hilko Bengen <[email protected]>
2016 SZLin <[email protected]>
2021-2022 VectorCamp PC
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".
1 change: 1 addition & 0 deletions debian/libvectorscan-dev.examples
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
usr/share/doc/vectorscan/examples/*
4 changes: 4 additions & 0 deletions debian/libvectorscan-dev.install
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
usr/include/*
usr/lib/*/lib*.a
usr/lib/*/lib*.so
usr/lib/*/pkgconfig/*
1 change: 1 addition & 0 deletions debian/libvectorscan5.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
usr/lib/*/lib*.so.*
5 changes: 5 additions & 0 deletions debian/libvectorscan5.lintian-overrides
Original file line number Diff line number Diff line change
@@ -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
19 changes: 19 additions & 0 deletions debian/rules
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/usr/bin/make -f

export DEB_BUILD_MAINT_OPTIONS = hardening=+all

ifeq ($(DEB_HOST_ARCH),amd64)
export DEB_CMAKE_FLAGS = -DBUILD_AVX2=on -DBUILD_AVX512=on -DBUILD_AVX512VBMI=off -DFAT_RUNTIME=on
endif

%:
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
1 change: 1 addition & 0 deletions debian/source/format
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.0 (native)
21 changes: 21 additions & 0 deletions debian/tests/build-lib
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/sh
# autopkgtest check: Build a program against libhyperscan and check whether a
# runnable binary is produced.
# Author: Sascha Steinbiss <[email protected]>
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"
2 changes: 2 additions & 0 deletions debian/tests/control
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Tests: build-lib
Depends: build-essential, pkg-config, @
3 changes: 3 additions & 0 deletions debian/tests/simplegrep.result
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Scanning 7 bytes with Hyperscan
Match for pattern "ba" at offset 2
Match for pattern "ba" at offset 5
5 changes: 5 additions & 0 deletions debian/upstream/metadata
Original file line number Diff line number Diff line change
@@ -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
4 changes: 4 additions & 0 deletions debian/watch
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 6cd6957

Please sign in to comment.