mirror of
https://github.com/zeek/zeek.git
synced 2025-10-14 20:48:21 +00:00
Changes to allow DEB packaging via CPack, addresses #458
This commit is contained in:
parent
1199085b27
commit
f18951a77e
5 changed files with 100 additions and 26 deletions
|
@ -1 +1 @@
|
||||||
Subproject commit 54f3ff4e6627d4a44d1e014e8e581e4e9dfed8c3
|
Subproject commit 12c1f32d65fdf72d4af1450b0c9c5a5e398bba08
|
|
@ -1 +1 @@
|
||||||
Subproject commit d9bfa3e7c25aa0fdc27a1f8520f2bb474ecd44af
|
Subproject commit e4e49c312a559886f7ec6d6f8efd582bbeb297ad
|
|
@ -63,10 +63,7 @@ endmacro(SetPackageVersion)
|
||||||
#
|
#
|
||||||
# Darwin - PackageMaker
|
# Darwin - PackageMaker
|
||||||
# Linux - RPM if the platform has rpmbuild installed
|
# Linux - RPM if the platform has rpmbuild installed
|
||||||
# DEB is ommitted because CPack does not give enough
|
# DEB if the platform has dpkg-shlibdeps installed
|
||||||
# control over how the package is created and lacks support
|
|
||||||
# for automatic dependency detection.
|
|
||||||
#
|
|
||||||
#
|
#
|
||||||
# CPACK_GENERATOR is set by this macro
|
# CPACK_GENERATOR is set by this macro
|
||||||
# CPACK_SOURCE_GENERATOR is set by this macro
|
# CPACK_SOURCE_GENERATOR is set by this macro
|
||||||
|
@ -77,9 +74,14 @@ macro(SetPackageGenerators)
|
||||||
list(APPEND CPACK_GENERATOR PackageMaker)
|
list(APPEND CPACK_GENERATOR PackageMaker)
|
||||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
find_program(RPMBUILD_EXE rpmbuild)
|
find_program(RPMBUILD_EXE rpmbuild)
|
||||||
|
find_program(DPKGSHLIB_EXE dpkg-shlibdeps)
|
||||||
if (RPMBUILD_EXE)
|
if (RPMBUILD_EXE)
|
||||||
set(CPACK_GENERATOR ${CPACK_GENERATOR} RPM)
|
set(CPACK_GENERATOR ${CPACK_GENERATOR} RPM)
|
||||||
endif ()
|
endif ()
|
||||||
|
if (DPKGSHLIB_EXE)
|
||||||
|
set(CPACK_GENERATOR ${CPACK_GENERATOR} DEB)
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS true)
|
||||||
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
endmacro(SetPackageGenerators)
|
endmacro(SetPackageGenerators)
|
||||||
|
|
||||||
|
@ -159,11 +161,27 @@ macro(SetPackageInstallScripts VERSION)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
|
# DEB packages can automatically handle configuration files
|
||||||
|
# if provided in a "conffiles" file in the packaging
|
||||||
|
set(conffiles_file ${CMAKE_CURRENT_BINARY_DIR}/conffiles)
|
||||||
|
if (INSTALLED_CONFIG_FILES)
|
||||||
|
string(REPLACE " " ";" conffiles ${INSTALLED_CONFIG_FILES})
|
||||||
|
endif ()
|
||||||
|
file(WRITE ${conffiles_file} "")
|
||||||
|
foreach (_file ${conffiles})
|
||||||
|
file(APPEND ${conffiles_file} "${_file}\n")
|
||||||
|
endforeach ()
|
||||||
|
|
||||||
|
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/conffiles)
|
||||||
|
|
||||||
|
# RPMs don't need any explicit direction regarding config files.
|
||||||
|
|
||||||
# Leaving the set of installed config files empty will just
|
# Leaving the set of installed config files empty will just
|
||||||
# bypass the logic in the pre/post install scripts and let
|
# bypass the logic in the default pre/post install scripts and let
|
||||||
# the RPM do their own thing (regarding backups, etc.)
|
# the RPMs/DEBs do their own thing (regarding backups, etc.)
|
||||||
# when upgrading packages.
|
# when upgrading packages.
|
||||||
set (INSTALLED_CONFIG_FILES "")
|
set(INSTALLED_CONFIG_FILES "")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cmake/package_preinstall.sh.in)
|
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cmake/package_preinstall.sh.in)
|
||||||
|
@ -171,10 +189,16 @@ macro(SetPackageInstallScripts VERSION)
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/package_preinstall.sh.in
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/package_preinstall.sh.in
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/package_preinstall.sh
|
${CMAKE_CURRENT_BINARY_DIR}/package_preinstall.sh
|
||||||
@ONLY)
|
@ONLY)
|
||||||
|
configure_file(
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/package_preinstall.sh.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/preinst
|
||||||
|
@ONLY)
|
||||||
set(CPACK_PREFLIGHT_SCRIPT
|
set(CPACK_PREFLIGHT_SCRIPT
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/package_preinstall.sh)
|
${CMAKE_CURRENT_BINARY_DIR}/package_preinstall.sh)
|
||||||
set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE
|
set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/package_preinstall.sh)
|
${CMAKE_CURRENT_BINARY_DIR}/package_preinstall.sh)
|
||||||
|
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/preinst)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cmake/package_postupgrade.sh.in)
|
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cmake/package_postupgrade.sh.in)
|
||||||
|
@ -182,10 +206,16 @@ macro(SetPackageInstallScripts VERSION)
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/package_postupgrade.sh.in
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/package_postupgrade.sh.in
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/package_postupgrade.sh
|
${CMAKE_CURRENT_BINARY_DIR}/package_postupgrade.sh
|
||||||
@ONLY)
|
@ONLY)
|
||||||
|
configure_file(
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/package_postupgrade.sh.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/postinst
|
||||||
|
@ONLY)
|
||||||
set(CPACK_POSTUPGRADE_SCRIPT
|
set(CPACK_POSTUPGRADE_SCRIPT
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/package_postupgrade.sh)
|
${CMAKE_CURRENT_BINARY_DIR}/package_postupgrade.sh)
|
||||||
set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE
|
set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/package_postupgrade.sh)
|
${CMAKE_CURRENT_BINARY_DIR}/package_postupgrade.sh)
|
||||||
|
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/postinst)
|
||||||
endif ()
|
endif ()
|
||||||
endmacro(SetPackageInstallScripts)
|
endmacro(SetPackageInstallScripts)
|
||||||
|
|
||||||
|
|
|
@ -48,21 +48,13 @@ if [ -n "${sampleFiles}" ]; then
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# make sure that world-writeable dirs have the sticky bit set
|
# Set up world writeable spool and logs directory for broctl, making sure
|
||||||
# so that unprivileged can't rename/remove files within
|
# to set the sticky bit so that unprivileged users can't rename/remove files.
|
||||||
|
# (CMake/CPack is supposed to install them, but has problems with empty dirs)
|
||||||
if [ -d /var/opt/bro/spool ]; then
|
if [ -n "@EMPTY_WORLD_DIRS@" ]; then
|
||||||
chmod +t /var/opt/bro/spool
|
for dir in "@EMPTY_WORLD_DIRS@"; do
|
||||||
fi
|
mkdir -p ${dir}
|
||||||
|
chmod 777 ${dir}
|
||||||
if [ -d /var/opt/bro/spool/tmp ]; then
|
chmod +t ${dir}
|
||||||
chmod +t /var/opt/bro/spool/tmp
|
done
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d /var/opt/bro/spool/policy ]; then
|
|
||||||
chmod +t /var/opt/bro/spool/policy
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d /var/opt/bro/logs ]; then
|
|
||||||
chmod +t /var/opt/bro/logs
|
|
||||||
fi
|
fi
|
||||||
|
|
52
make-deb-packages
Executable file
52
make-deb-packages
Executable file
|
@ -0,0 +1,52 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This script generates binary DEB packages.
|
||||||
|
# They can be found in build/ after running.
|
||||||
|
|
||||||
|
prefix=/opt/bro
|
||||||
|
|
||||||
|
# CMake/CPack versions before 2.8.2 have bugs that can create bad packages
|
||||||
|
CMAKE_PACK_REQ=2.8.2
|
||||||
|
CMAKE_VER=`cmake -version`
|
||||||
|
|
||||||
|
if [ "${CMAKE_VER}" \< "${CMAKE_PACK_REQ}" ]; then
|
||||||
|
echo "Package creation requires CMake > 2.8.2" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# The DEB CPack generator depends on `dpkg-shlibdeps` to automatically
|
||||||
|
# determine what dependencies to set for the packages
|
||||||
|
type dpkg-shlibdeps > /dev/null 2>&1 || {
|
||||||
|
echo "\
|
||||||
|
Creating DEB packages requires the `dpkg-shlibs` command, usually provided by
|
||||||
|
the 'dpkg-dev' package, please install it first.
|
||||||
|
" >&2;
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
# During the packaging process, `dpkg-shlibs` will fail if used on a library
|
||||||
|
# that links to other internal/project libraries unless an RPATH is used or
|
||||||
|
# we set LD_LIBRARY_PATH such that it can find the internal/project library
|
||||||
|
# in the temporary packaging tree.
|
||||||
|
export LD_LIBRARY_PATH=./${prefix}/lib
|
||||||
|
|
||||||
|
# Minimum Bro
|
||||||
|
./configure --prefix=${prefix} --disable-broccoli --disable-broctl \
|
||||||
|
--pkg-name-prefix=Bro --binary-package
|
||||||
|
( cd build && make package )
|
||||||
|
|
||||||
|
# Full Bro package
|
||||||
|
./configure --prefix=${prefix} --pkg-name-prefix=Bro-all --binary-package
|
||||||
|
( cd build && make package )
|
||||||
|
|
||||||
|
# Broccoli
|
||||||
|
cd aux/broccoli
|
||||||
|
./configure --prefix=${prefix} --binary-package
|
||||||
|
( cd build && make package && mv Broccoli*.deb ../../../build/ )
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
# Broctl
|
||||||
|
cd aux/broctl
|
||||||
|
./configure --prefix=${prefix} --binary-package
|
||||||
|
( cd build && make package && mv Broctl*.deb ../../../build/ )
|
||||||
|
cd ../..
|
Loading…
Add table
Add a link
Reference in a new issue