mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Merge remote branch 'origin/topic/jsiwek/packaging'
* origin/topic/jsiwek/packaging: Changes for packaging Changes to CMake logic for binary packaging Changes for CPack binary packaging Fix package configuration macro returning from sub-project too early Add warning when building and installing are done by different users Fix for PackageMaker not accepting non-numeric versions Fix for OS X 10.5 compile error wrt llabs() Prefer static libraries for some dependencies on OS X Added OS X configures options for SDK & minimum version Changes to allow source packaging via CPack
This commit is contained in:
commit
de06588f27
25 changed files with 627 additions and 148 deletions
23
CHANGES
23
CHANGES
|
@ -2,6 +2,29 @@
|
||||||
|
|
||||||
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
|
||||||
|
1.6-dev.4 Sat Jan 15 14:14:21 PST 2011
|
||||||
|
|
||||||
|
- Updates to the build system (Jonathan Siwek)
|
||||||
|
|
||||||
|
* ``make dist`` is now available to be used with the top-level
|
||||||
|
Makefile for creating source packages according to #344.
|
||||||
|
|
||||||
|
* ``make-rpm-packages`` and ``make-mac-packages`` scripts can
|
||||||
|
now generate binary packages according to #295.
|
||||||
|
|
||||||
|
* Additional configure options to change packaging behavior.
|
||||||
|
|
||||||
|
* OS X builds will now prefer to link static libraries of
|
||||||
|
optional dependencies that don't come with the vanilla
|
||||||
|
operating system.
|
||||||
|
|
||||||
|
* Fix for OS X 10.5 compile error dealing with the llabs()
|
||||||
|
function from stdlib.
|
||||||
|
|
||||||
|
* Installing as a different user than the one that
|
||||||
|
configured/built now works (although, a harmless error message
|
||||||
|
about not being able to write the install manifest may occur).
|
||||||
|
|
||||||
1.6-dev.3 Wed Dec 8 04:09:38 PST 2010
|
1.6-dev.3 Wed Dec 8 04:09:38 PST 2010
|
||||||
|
|
||||||
- Merge with Subversion repository as of r7137. Incorporated change:
|
- Merge with Subversion repository as of r7137. Incorporated change:
|
||||||
|
|
|
@ -159,81 +159,27 @@ add_subdirectory(policy)
|
||||||
#add_subdirectory(scripts)
|
#add_subdirectory(scripts)
|
||||||
#add_subdirectory(doc)
|
#add_subdirectory(doc)
|
||||||
|
|
||||||
if (INSTALL_BROCCOLI)
|
include(CheckOptionalBuildSources)
|
||||||
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/aux/broccoli/CMakeLists.txt)
|
|
||||||
add_subdirectory(aux/broccoli)
|
|
||||||
else ()
|
|
||||||
message(FATAL_ERROR "Broccoli selected for installation, "
|
|
||||||
"but the source code does not exist in "
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/aux/broccoli")
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (INSTALL_BROCTL)
|
CheckOptionalBuildSources(aux/broctl Broctl INSTALL_BROCTL)
|
||||||
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/aux/broctl/CMakeLists.txt)
|
CheckOptionalBuildSources(aux/bro-aux Bro-Aux INSTALL_AUX_TOOLS)
|
||||||
add_subdirectory(aux/broctl)
|
CheckOptionalBuildSources(aux/broccoli Broccoli INSTALL_BROCCOLI)
|
||||||
else ()
|
|
||||||
message(FATAL_ERROR "Broctl selected for installation, "
|
|
||||||
"but the source code does not exist in "
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/aux/broctl")
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (INSTALL_AUX_TOOLS)
|
|
||||||
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/aux/bro-aux/CMakeLists.txt)
|
|
||||||
add_subdirectory(aux/bro-aux)
|
|
||||||
else ()
|
|
||||||
message(FATAL_ERROR "Bro auxilliary tools selected for installation, "
|
|
||||||
"but the source code does not exist in "
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/aux/bro-aux")
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
## Packaging Setup
|
## Packaging Setup
|
||||||
|
|
||||||
include(SetPackageVersion)
|
if (INSTALL_BROCTL)
|
||||||
SetPackageVersion(${VERSION})
|
# CPack RPM Generator may not automatically detect this
|
||||||
include(SetPackageGenerators)
|
set(CPACK_RPM_PACKAGE_REQUIRES "python >= 2.4.0")
|
||||||
include(SetPackageFileName)
|
|
||||||
|
|
||||||
set(CPACK_PACKAGE_VENDOR "Lawrence Berkeley National Laboratory")
|
|
||||||
set(CPACK_PACKAGE_CONTACT "info@bro-ids.org")
|
|
||||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
|
|
||||||
"The Bro Network Intrusion Detection System")
|
|
||||||
|
|
||||||
# CPack may enforce file name extensions for certain package generators
|
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/README
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/README.txt
|
|
||||||
COPYONLY)
|
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/COPYING
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt
|
|
||||||
COPYONLY)
|
|
||||||
|
|
||||||
set(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_CURRENT_BINARY_DIR}/README.txt)
|
|
||||||
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt)
|
|
||||||
set(CPACK_RESOURCE_FILE_README ${CMAKE_CURRENT_BINARY_DIR}/README.txt)
|
|
||||||
set(CPACK_RESOURCE_FILE_WELCOME ${CMAKE_CURRENT_BINARY_DIR}/README.txt)
|
|
||||||
|
|
||||||
if (APPLE)
|
|
||||||
# /usr prefix is hardcoded for PackageMaker generator, but that
|
|
||||||
# directory may not be ideal for OS X (it's tricky to remove
|
|
||||||
# packages installed there). So instead we rely on CMAKE_INSTALL_PREFIX
|
|
||||||
# and set the following variable to workaround the hardcoded /usr prefix
|
|
||||||
set(CPACK_PACKAGING_INSTALL_PREFIX "/")
|
|
||||||
set(CPACK_PACKAGE_DEFAULT_LOCATION ${CMAKE_INSTALL_PREFIX})
|
|
||||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
||||||
# A prefix of /usr would follow Filesystem Hierarchy Standard.
|
|
||||||
# For RPM packaging by CPack, /usr should be a default, but
|
|
||||||
# CMAKE_INSTALL_PREFIX also needs to be set to /usr so that
|
|
||||||
# the default BROPATH is set right at build time
|
|
||||||
set(CPACK_RPM_PACKAGE_LICENSE "BSD")
|
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Ignore the build directory
|
# If this CMake project is a sub-project of another, we will not
|
||||||
set(CPACK_SOURCE_IGNORE_FILES ${CMAKE_BINARY_DIR} ".git")
|
# configure the generic packaging because CPack will fail in the case
|
||||||
|
# that the parent project has already configured packaging
|
||||||
include(CPack)
|
if ("${PROJECT_SOURCE_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
|
||||||
|
include(ConfigurePackaging)
|
||||||
|
ConfigurePackaging(${VERSION})
|
||||||
|
endif ()
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
## Build Summary
|
## Build Summary
|
||||||
|
@ -276,3 +222,17 @@ message(
|
||||||
"\n"
|
"\n"
|
||||||
"\n================================================================\n"
|
"\n================================================================\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
## Show warning when installing user is different from the one that configured
|
||||||
|
|
||||||
|
install(CODE "
|
||||||
|
if (NOT $ENV{USER} STREQUAL \$ENV{USER})
|
||||||
|
message(STATUS \"ATTENTION: Install is being performed by user \"
|
||||||
|
\"'\$ENV{USER}', but the build directory was configured by \"
|
||||||
|
\"user '$ENV{USER}'. This may result in a permissions error \"
|
||||||
|
\"when writing the install manifest, but you can ignore it \"
|
||||||
|
\"and consider the installation as successful if you don't \"
|
||||||
|
\"care about the install manifest.\")
|
||||||
|
endif ()
|
||||||
|
")
|
||||||
|
|
8
INSTALL
8
INSTALL
|
@ -70,12 +70,18 @@ build/, using default build options. It then installs the Bro binary
|
||||||
into /usr/local/bro/bin. Depending on the Bro package you
|
into /usr/local/bro/bin. Depending on the Bro package you
|
||||||
downloaded, there may be auxiliary tools and libraries available in
|
downloaded, there may be auxiliary tools and libraries available in
|
||||||
the aux/ directory. If so, they will be installed by default as well
|
the aux/ directory. If so, they will be installed by default as well
|
||||||
if not explicitly disabled via configure options.
|
if not explicitly disabled via configure options and may also have
|
||||||
|
additional installation/configuration instructions that you can
|
||||||
|
find in their source directories.
|
||||||
|
|
||||||
You can specify a different installation directory with
|
You can specify a different installation directory with
|
||||||
|
|
||||||
> ./configure --prefix=<dir>
|
> ./configure --prefix=<dir>
|
||||||
|
|
||||||
|
Note that "/usr" and "/opt/bro" are standard prefixes for binary
|
||||||
|
packages to be installed, so those are typically not good choices
|
||||||
|
unless you are creating such a package.
|
||||||
|
|
||||||
Run "./configure --help" for more options.
|
Run "./configure --help" for more options.
|
||||||
|
|
||||||
Running Bro
|
Running Bro
|
||||||
|
|
49
Makefile
49
Makefile
|
@ -6,6 +6,14 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
BUILD=build
|
BUILD=build
|
||||||
|
BROCCOLI=aux/broccoli
|
||||||
|
BROCTL=aux/broctl
|
||||||
|
|
||||||
|
# CMake/CPack versions before 2.8.2 have bugs that can create bad packages
|
||||||
|
CMAKE_PACK_REQ=2.8.2
|
||||||
|
CMAKE_VER=`cmake -version`
|
||||||
|
|
||||||
|
OSX_VER_CMD=sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2
|
||||||
|
|
||||||
all: configured
|
all: configured
|
||||||
( cd $(BUILD) && make )
|
( cd $(BUILD) && make )
|
||||||
|
@ -16,13 +24,48 @@ install: configured
|
||||||
clean: configured
|
clean: configured
|
||||||
( cd $(BUILD) && make clean )
|
( cd $(BUILD) && make clean )
|
||||||
|
|
||||||
dist: configured
|
dist: cmake_version
|
||||||
( cd $(BUILD) && make package_source )
|
# Minimum Bro source package
|
||||||
|
( \
|
||||||
|
./configure --ignore-dirs='aux/broctl;aux/broccoli' --pkg-name-prefix=Bro && \
|
||||||
|
cd $(BUILD) && \
|
||||||
|
make package_source \
|
||||||
|
)
|
||||||
|
# Full Bro source package
|
||||||
|
( \
|
||||||
|
./configure --pkg-name-prefix=Bro-all && \
|
||||||
|
cd $(BUILD) && \
|
||||||
|
make package_source \
|
||||||
|
)
|
||||||
|
# Broccoli source package
|
||||||
|
( \
|
||||||
|
cd $(BROCCOLI) && \
|
||||||
|
./configure && \
|
||||||
|
cd $(BUILD) && \
|
||||||
|
make package_source && \
|
||||||
|
mv Broccoli*.tar.gz ../../../$(BUILD)/ && \
|
||||||
|
cd .. && \
|
||||||
|
rm -r $(BUILD) \
|
||||||
|
)
|
||||||
|
# Broctl source package
|
||||||
|
( \
|
||||||
|
cd $(BROCTL) && \
|
||||||
|
./configure && \
|
||||||
|
cd $(BUILD) && \
|
||||||
|
make package_source && \
|
||||||
|
mv Broctl*.tar.gz ../../../$(BUILD)/ && \
|
||||||
|
cd .. && \
|
||||||
|
rm -r $(BUILD) \
|
||||||
|
)
|
||||||
|
|
||||||
distclean:
|
distclean:
|
||||||
rm -rf $(BUILD)
|
rm -rf $(BUILD)
|
||||||
|
|
||||||
.PHONY : configured
|
|
||||||
configured:
|
configured:
|
||||||
@test -d $(BUILD) || ( echo "Error: No build/ directory found. Did you run configure?" && exit 1 )
|
@test -d $(BUILD) || ( echo "Error: No build/ directory found. Did you run configure?" && exit 1 )
|
||||||
@test -e $(BUILD)/Makefile || ( echo "Error: No build/Makefile found. Did you run configure?" && exit 1 )
|
@test -e $(BUILD)/Makefile || ( echo "Error: No build/Makefile found. Did you run configure?" && exit 1 )
|
||||||
|
|
||||||
|
cmake_version:
|
||||||
|
@test "$(CMAKE_VER)" \> "cmake version $(CMAKE_PACK_REQ)" || ( echo "Error: please use a CMake version greater than $(CMAKE_PACK_REQ)" && exit 1 )
|
||||||
|
|
||||||
|
.PHONY : all install clean distclean configured cmake_version
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
1.6-dev.3
|
1.6-dev.4
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 4e1dad4ee69b85d04af72c0faaff47fddf3240e2
|
Subproject commit eca3047a90e11975df8c1d523c796fe45bc4ea4e
|
|
@ -1 +1 @@
|
||||||
Subproject commit 7b829fbe8d6fa36c33c0c07a8f09cc0d68cd17f1
|
Subproject commit 148ce0f3abdea5019fa1642d8108b09cc4c8d7a0
|
|
@ -1 +1 @@
|
||||||
Subproject commit 2bf6c82eed841d2a8e7104875717296fe50ca126
|
Subproject commit c2769d9cd826ecaa08431d6af329db75a7d43583
|
|
@ -1 +1 @@
|
||||||
Subproject commit a05be1242b4e06dca1bb1a38ed871e7e2d78181b
|
Subproject commit 13986eb50729f45834eb050be4a6233c83f9295d
|
21
cmake/CheckOptionalBuildSources.cmake
Normal file
21
cmake/CheckOptionalBuildSources.cmake
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# A macro that checks whether optional sources exist and if they do, they
|
||||||
|
# are added to the build/install process, else a warning is issued
|
||||||
|
#
|
||||||
|
# _dir: the subdir of the current source dir in which the optional
|
||||||
|
# sources are located
|
||||||
|
# _packageName: a string that identifies the package
|
||||||
|
# _varName: name of the variable indicating whether package is scheduled
|
||||||
|
# to be installed
|
||||||
|
|
||||||
|
macro(CheckOptionalBuildSources _dir _packageName _varName)
|
||||||
|
if (${_varName})
|
||||||
|
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_dir}/CMakeLists.txt)
|
||||||
|
add_subdirectory(${_dir})
|
||||||
|
else ()
|
||||||
|
message(WARNING "${_packageName} source code does not exist in "
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/${_dir} "
|
||||||
|
"so it will not be built or installed")
|
||||||
|
set(${_varName} false)
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
endmacro(CheckOptionalBuildSources)
|
202
cmake/ConfigurePackaging.cmake
Normal file
202
cmake/ConfigurePackaging.cmake
Normal file
|
@ -0,0 +1,202 @@
|
||||||
|
# A collection of macros to assist in configuring CMake/Cpack
|
||||||
|
# source and binary packaging
|
||||||
|
|
||||||
|
# Sets CPack version variables by splitting the first macro argument
|
||||||
|
# using "." as a delimiter. If the length of the split list is
|
||||||
|
# greater than 2, all remaining elements are tacked on to the patch
|
||||||
|
# level version. Not that the version set by the macro is internal
|
||||||
|
# to binary packaging, the file name of our package will reflect the
|
||||||
|
# exact version number.
|
||||||
|
macro(SetPackageVersion _version)
|
||||||
|
string(REPLACE "." " " version_numbers ${_version})
|
||||||
|
separate_arguments(version_numbers)
|
||||||
|
|
||||||
|
list(GET version_numbers 0 CPACK_PACKAGE_VERSION_MAJOR)
|
||||||
|
list(REMOVE_AT version_numbers 0)
|
||||||
|
list(GET version_numbers 0 CPACK_PACKAGE_VERSION_MINOR)
|
||||||
|
list(REMOVE_AT version_numbers 0)
|
||||||
|
list(LENGTH version_numbers version_length)
|
||||||
|
|
||||||
|
while (version_length GREATER 0)
|
||||||
|
list(GET version_numbers 0 patch_level)
|
||||||
|
if (CPACK_PACKAGE_VERSION_PATCH)
|
||||||
|
set(CPACK_PACKAGE_VERSION_PATCH
|
||||||
|
"${CPACK_PACKAGE_VERSION_PATCH}.${patch_level}")
|
||||||
|
else ()
|
||||||
|
set(CPACK_PACKAGE_VERSION_PATCH ${patch_level})
|
||||||
|
endif ()
|
||||||
|
list(REMOVE_AT version_numbers 0)
|
||||||
|
list(LENGTH version_numbers version_length)
|
||||||
|
endwhile ()
|
||||||
|
|
||||||
|
if (APPLE)
|
||||||
|
# Mac PackageMaker package requires only numbers in the versioning
|
||||||
|
string(REGEX REPLACE "[_a-zA-Z-]" "" CPACK_PACKAGE_VERSION_MAJOR
|
||||||
|
${CPACK_PACKAGE_VERSION_MAJOR})
|
||||||
|
string(REGEX REPLACE "[_a-zA-Z-]" "" CPACK_PACKAGE_VERSION_MINOR
|
||||||
|
${CPACK_PACKAGE_VERSION_MINOR})
|
||||||
|
if (CPACK_PACKAGE_VERSION_PATCH)
|
||||||
|
string(REGEX REPLACE "[_a-zA-Z-]" "" CPACK_PACKAGE_VERSION_PATCH
|
||||||
|
${CPACK_PACKAGE_VERSION_PATCH})
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
|
# RPM version accepts letters, but not dashes.
|
||||||
|
string(REGEX REPLACE "[-]" "" CPACK_PACKAGE_VERSION_MAJOR
|
||||||
|
${CPACK_PACKAGE_VERSION_MAJOR})
|
||||||
|
string(REGEX REPLACE "[-]" "" CPACK_PACKAGE_VERSION_MINOR
|
||||||
|
${CPACK_PACKAGE_VERSION_MINOR})
|
||||||
|
if (CPACK_PACKAGE_VERSION_PATCH)
|
||||||
|
string(REGEX REPLACE "[-]" "" CPACK_PACKAGE_VERSION_PATCH
|
||||||
|
${CPACK_PACKAGE_VERSION_PATCH})
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# Minimum supported OS X version
|
||||||
|
set(CPACK_OSX_PACKAGE_VERSION 10.5)
|
||||||
|
endmacro(SetPackageVersion)
|
||||||
|
|
||||||
|
# Sets the list of desired package types to be created by the make
|
||||||
|
# package target. A .tar.gz is only made for source packages, and
|
||||||
|
# binary pacakage format depends on the operating system:
|
||||||
|
#
|
||||||
|
# Darwin - PackageMaker
|
||||||
|
# Linux - RPM if the platform has rpmbuild installed
|
||||||
|
# DEB is ommitted because CPack does not give enough
|
||||||
|
# control over how the package is created and lacks support
|
||||||
|
# for automatic dependency detection.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# CPACK_GENERATOR is set by this macro
|
||||||
|
# CPACK_SOURCE_GENERATOR is set by this macro
|
||||||
|
macro(SetPackageGenerators)
|
||||||
|
set(CPACK_SOURCE_GENERATOR TGZ)
|
||||||
|
#set(CPACK_GENERATOR TGZ)
|
||||||
|
if (APPLE)
|
||||||
|
list(APPEND CPACK_GENERATOR PackageMaker)
|
||||||
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
|
find_program(RPMBUILD_EXE rpmbuild)
|
||||||
|
if (RPMBUILD_EXE)
|
||||||
|
set(CPACK_GENERATOR ${CPACK_GENERATOR} RPM)
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
endmacro(SetPackageGenerators)
|
||||||
|
|
||||||
|
# Sets CPACK_PACKAGE_FILE_NAME in the following format:
|
||||||
|
#
|
||||||
|
# <project_name>-<version>-<OS/platform>-<arch>
|
||||||
|
#
|
||||||
|
# and CPACK_SOURCE_PACKAGE_FILE_NAME as:
|
||||||
|
#
|
||||||
|
# <project_name>-<version>
|
||||||
|
macro(SetPackageFileName _version)
|
||||||
|
if (PACKAGE_NAME_PREFIX)
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME "${PACKAGE_NAME_PREFIX}-${_version}")
|
||||||
|
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${PACKAGE_NAME_PREFIX}-${_version}")
|
||||||
|
else ()
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${_version}")
|
||||||
|
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${_version}")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME
|
||||||
|
"${CPACK_PACKAGE_FILE_NAME}-${CMAKE_SYSTEM_NAME}")
|
||||||
|
|
||||||
|
if (APPLE)
|
||||||
|
# Only Intel-based Macs are supported. CMAKE_SYSTEM_PROCESSOR may
|
||||||
|
# return the confusing 'i386' if running a 32-bit kernel, but chances
|
||||||
|
# are the binary is x86_64 (or more generally 'Intel') compatible.
|
||||||
|
set(arch "Intel")
|
||||||
|
else ()
|
||||||
|
set (arch ${CMAKE_SYSTEM_PROCESSOR})
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}-${arch}")
|
||||||
|
endmacro(SetPackageFileName)
|
||||||
|
|
||||||
|
# Sets up binary package metadata
|
||||||
|
macro(SetPackageMetadata)
|
||||||
|
set(CPACK_PACKAGE_VENDOR "Lawrence Berkeley National Laboratory")
|
||||||
|
set(CPACK_PACKAGE_CONTACT "info@bro-ids.org")
|
||||||
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
|
||||||
|
"The Bro Network Intrusion Detection System")
|
||||||
|
|
||||||
|
# CPack may enforce file name extensions for certain package generators
|
||||||
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/README
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/README.txt
|
||||||
|
COPYONLY)
|
||||||
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/COPYING
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt
|
||||||
|
COPYONLY)
|
||||||
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/MAC_PACKAGE_INTRO
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/MAC_PACKAGE_INTRO.txt)
|
||||||
|
|
||||||
|
set(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_CURRENT_BINARY_DIR}/README.txt)
|
||||||
|
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt)
|
||||||
|
set(CPACK_RESOURCE_FILE_README ${CMAKE_CURRENT_BINARY_DIR}/README.txt)
|
||||||
|
set(CPACK_RESOURCE_FILE_WELCOME
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/MAC_PACKAGE_INTRO.txt)
|
||||||
|
|
||||||
|
set(CPACK_RPM_PACKAGE_LICENSE "BSD")
|
||||||
|
endmacro(SetPackageMetadata)
|
||||||
|
|
||||||
|
# Sets pre and post install scripts for PackageMaker and RPM packages.
|
||||||
|
# The main functionality that such scripts offer is a way to make backups
|
||||||
|
# of "configuration" files that a user may have modified.
|
||||||
|
# A better way to prevent an RPM from not overwriting config files is
|
||||||
|
# with the %config(noreplace) .spec attribute, but CPack does not have any
|
||||||
|
# good hooks into using that yet, so we re-use the pre/post install scripts
|
||||||
|
# See also: http://public.kitware.com/Bug/view.php?id=10294
|
||||||
|
macro(SetPackageInstallScripts)
|
||||||
|
|
||||||
|
if (INSTALLED_CONFIG_FILES)
|
||||||
|
# Remove duplicates from the list of installed config files
|
||||||
|
separate_arguments(INSTALLED_CONFIG_FILES)
|
||||||
|
list(REMOVE_DUPLICATES INSTALLED_CONFIG_FILES)
|
||||||
|
# Space delimit the list again
|
||||||
|
foreach (_file ${INSTALLED_CONFIG_FILES})
|
||||||
|
set(_tmp "${_tmp} ${_file}")
|
||||||
|
endforeach ()
|
||||||
|
set(INSTALLED_CONFIG_FILES "${_tmp}" CACHE STRING "" FORCE)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cmake/package_preinstall.sh.in)
|
||||||
|
configure_file(
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/package_preinstall.sh.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/package_preinstall.sh
|
||||||
|
@ONLY)
|
||||||
|
set(CPACK_PREFLIGHT_SCRIPT
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/package_preinstall.sh)
|
||||||
|
set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/package_preinstall.sh)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cmake/package_postupgrade.sh.in)
|
||||||
|
configure_file(
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/package_postupgrade.sh.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/package_postupgrade.sh
|
||||||
|
@ONLY)
|
||||||
|
set(CPACK_POSTUPGRADE_SCRIPT
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/package_postupgrade.sh)
|
||||||
|
set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/package_postupgrade.sh)
|
||||||
|
endif ()
|
||||||
|
endmacro(SetPackageInstallScripts)
|
||||||
|
|
||||||
|
# Main macro to configure all the packaging options
|
||||||
|
macro(ConfigurePackaging _version)
|
||||||
|
SetPackageVersion(${_version})
|
||||||
|
SetPackageGenerators()
|
||||||
|
SetPackageFileName(${_version})
|
||||||
|
SetPackageMetadata()
|
||||||
|
SetPackageInstallScripts()
|
||||||
|
|
||||||
|
set(CPACK_SET_DESTDIR true)
|
||||||
|
set(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
|
||||||
|
|
||||||
|
# add default files/directories to ignore for source package
|
||||||
|
# user may specify others via configure script
|
||||||
|
list(APPEND CPACK_SOURCE_IGNORE_FILES ${CMAKE_BINARY_DIR} ".git")
|
||||||
|
|
||||||
|
include(CPack)
|
||||||
|
endmacro(ConfigurePackaging)
|
|
@ -21,8 +21,16 @@ find_path(LibGeoIP_ROOT_DIR
|
||||||
NAMES include/GeoIPCity.h
|
NAMES include/GeoIPCity.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||||
|
# the static version of the library is preferred on OS X for the
|
||||||
|
# purposes of making packages (libGeoIP doesn't ship w/ OS X)
|
||||||
|
set(libgeoip_names libGeoIp.a GeoIP)
|
||||||
|
else ()
|
||||||
|
set(libgeoip_names GeoIP)
|
||||||
|
endif ()
|
||||||
|
|
||||||
find_library(LibGeoIP_LIBRARY
|
find_library(LibGeoIP_LIBRARY
|
||||||
NAMES GeoIP
|
NAMES ${libgeoip_names}
|
||||||
HINTS ${LibGeoIP_ROOT_DIR}/lib
|
HINTS ${LibGeoIP_ROOT_DIR}/lib
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,16 @@ find_path(LibMagic_ROOT_DIR
|
||||||
NAMES include/magic.h
|
NAMES include/magic.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||||
|
# the static version of the library is preferred on OS X for the
|
||||||
|
# purposes of making packages (libmagic doesn't ship w/ OS X)
|
||||||
|
set(libmagic_names libmagic.a magic)
|
||||||
|
else ()
|
||||||
|
set(libmagic_names magic)
|
||||||
|
endif ()
|
||||||
|
|
||||||
find_library(LibMagic_LIBRARY
|
find_library(LibMagic_LIBRARY
|
||||||
NAMES magic
|
NAMES ${libmagic_names}
|
||||||
HINTS ${LibMagic_ROOT_DIR}/lib
|
HINTS ${LibMagic_ROOT_DIR}/lib
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
24
cmake/MAC_PACKAGE_INTRO
Normal file
24
cmake/MAC_PACKAGE_INTRO
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
This package will install @CMAKE_PROJECT_NAME@ into the following location:
|
||||||
|
|
||||||
|
@CMAKE_INSTALL_PREFIX@
|
||||||
|
|
||||||
|
You may choose to update your PATH environment variable:
|
||||||
|
|
||||||
|
# For Bash
|
||||||
|
export PATH=@CMAKE_INSTALL_PREFIX@/bin:$PATH
|
||||||
|
|
||||||
|
# For CSH
|
||||||
|
setenv PATH @CMAKE_INSTALL_PREFIX@/bin:$PATH
|
||||||
|
|
||||||
|
If you have more than one volume, please choose the install
|
||||||
|
destination as the one that contains the root filesystem.
|
||||||
|
|
||||||
|
If you have existing configuration files that are modified or
|
||||||
|
otherwise different from the version included in the package,
|
||||||
|
this installer will attempt to prevent clobbering them by
|
||||||
|
backing them up like:
|
||||||
|
|
||||||
|
@CMAKE_INSTALL_PREFIX@/etc/<file>.<nextAvailableNumber>
|
||||||
|
|
||||||
|
but its also advisable to make your own backups of important
|
||||||
|
files before proceeding.
|
|
@ -1,3 +1,6 @@
|
||||||
|
include(CheckCSourceCompiles)
|
||||||
|
include(CheckCXXSourceCompiles)
|
||||||
|
|
||||||
if (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
if (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
||||||
# alternate malloc is faster for FreeBSD, but needs more testing
|
# alternate malloc is faster for FreeBSD, but needs more testing
|
||||||
# need to add way to set this from the command line
|
# need to add way to set this from the command line
|
||||||
|
@ -7,6 +10,28 @@ elseif (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
|
||||||
set(USE_NMALLOC true)
|
set(USE_NMALLOC true)
|
||||||
|
|
||||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||||
|
# The following may have a greater scope than just Darwin
|
||||||
|
# (i.e. any platform w/ GCC < 4.1.0), but I've only seen
|
||||||
|
# it on OS X 10.5, which has GCC 4.0.1, so the workaround
|
||||||
|
# will be stuck here for now.
|
||||||
|
#
|
||||||
|
# See also http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13943
|
||||||
|
|
||||||
|
check_cxx_source_compiles("
|
||||||
|
#include <math.h>
|
||||||
|
#include <cstdlib>
|
||||||
|
using namespace std;
|
||||||
|
int main() {
|
||||||
|
llabs(1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
" darwin_llabs_works)
|
||||||
|
|
||||||
|
if (NOT darwin_llabs_works)
|
||||||
|
# abs() should be used in this case, the long long version should
|
||||||
|
# exist in the __gnu_cxx namespace
|
||||||
|
set(DARWIN_NO_LLABS true)
|
||||||
|
endif ()
|
||||||
|
|
||||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
set(HAVE_LINUX true)
|
set(HAVE_LINUX true)
|
||||||
|
@ -25,7 +50,7 @@ elseif (${CMAKE_SYSTEM_NAME} MATCHES "irix")
|
||||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "ultrix")
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "ultrix")
|
||||||
list(APPEND CMAKE_C_FLAGS -std1 -g3)
|
list(APPEND CMAKE_C_FLAGS -std1 -g3)
|
||||||
list(APPEND CMAKE_CXX_FLAGS -std1 -g3)
|
list(APPEND CMAKE_CXX_FLAGS -std1 -g3)
|
||||||
include(CheckCSourceCompiles)
|
|
||||||
check_c_source_compiles("
|
check_c_source_compiles("
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
int main() {
|
int main() {
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
# Sets CPACK_PACKAGE_FILE name in the following format:
|
|
||||||
#
|
|
||||||
# <project_name>-<version>-<OS/platform>-<arch>
|
|
||||||
#
|
|
||||||
# The version must already be set in the VERSION variable
|
|
||||||
|
|
||||||
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${VERSION}")
|
|
||||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}-${CMAKE_SYSTEM_NAME}")
|
|
||||||
if (APPLE)
|
|
||||||
# Only Intel-based Macs are supported. CMAKE_SYSTEM_PROCESSOR may
|
|
||||||
# return the confusing 'i386' if running a 32-bit kernel, but chances
|
|
||||||
# are the binary is x86_64 (or more generally 'Intel') compatible.
|
|
||||||
set(arch "Intel")
|
|
||||||
else ()
|
|
||||||
set (arch ${CMAKE_SYSTEM_PROCESSOR})
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}-${arch}")
|
|
|
@ -1,23 +0,0 @@
|
||||||
# Sets the list of desired package types to be created by the make
|
|
||||||
# package target. A .tar.gz is always made, and depending on the
|
|
||||||
# operating system, more are added:
|
|
||||||
#
|
|
||||||
# Darwin - PackageMaker
|
|
||||||
# Linux - RPM if the platform has rpmbuild installed
|
|
||||||
# DEB is ommitted because CPack does not give enough
|
|
||||||
# control over how the package is created and lacks support
|
|
||||||
# for automatic dependency detection.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# CPACK_GENERATOR is set by this module
|
|
||||||
|
|
||||||
set(CPACK_GENERATOR TGZ)
|
|
||||||
set(CPACK_SOURCE_GENERATOR TGZ)
|
|
||||||
if (APPLE)
|
|
||||||
list(APPEND CPACK_GENERATOR PackageMaker)
|
|
||||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
||||||
find_program(RPMBUILD_EXE rpmbuild)
|
|
||||||
if (RPMBUILD_EXE)
|
|
||||||
set(CPACK_GENERATOR ${CPACK_GENERATOR} RPM)
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
|
@ -1,27 +0,0 @@
|
||||||
# Sets CPack version variables by splitting the first macro argument
|
|
||||||
# using "." as a delimiter. If the length of the split list is
|
|
||||||
# greater than 2, all remaining elements are tacked on to the patch
|
|
||||||
# level version.
|
|
||||||
|
|
||||||
macro(SetPackageVersion _version)
|
|
||||||
string(REPLACE "." " " version_numbers ${_version})
|
|
||||||
separate_arguments(version_numbers)
|
|
||||||
|
|
||||||
list(GET version_numbers 0 CPACK_PACKAGE_VERSION_MAJOR)
|
|
||||||
list(REMOVE_AT version_numbers 0)
|
|
||||||
list(GET version_numbers 0 CPACK_PACKAGE_VERSION_MINOR)
|
|
||||||
list(REMOVE_AT version_numbers 0)
|
|
||||||
list(LENGTH version_numbers version_length)
|
|
||||||
|
|
||||||
while (version_length GREATER 0)
|
|
||||||
list(GET version_numbers 0 patch_level)
|
|
||||||
if (CPACK_PACKAGE_VERSION_PATCH)
|
|
||||||
set(CPACK_PACKAGE_VERSION_PATCH
|
|
||||||
"${CPACK_PACKAGE_VERSION_PATCH}.${patch_level}")
|
|
||||||
else ()
|
|
||||||
set(CPACK_PACKAGE_VERSION_PATCH ${patch_level})
|
|
||||||
endif ()
|
|
||||||
list(REMOVE_AT version_numbers 0)
|
|
||||||
list(LENGTH version_numbers version_length)
|
|
||||||
endwhile ()
|
|
||||||
endmacro(SetPackageVersion)
|
|
56
cmake/package_postupgrade.sh.in
Executable file
56
cmake/package_postupgrade.sh.in
Executable file
|
@ -0,0 +1,56 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This script is meant to be used by binary packages post-installation.
|
||||||
|
# Variables between @ symbols are replaced by CMake at configure time.
|
||||||
|
|
||||||
|
backupDesc="# Backup made by install of @CMAKE_PROJECT_NAME@ version @VERSION@"
|
||||||
|
backupNamesFile=/tmp/bro_install_backups
|
||||||
|
|
||||||
|
# check whether it's safe to remove backup configuration files that
|
||||||
|
# the most recent package install created
|
||||||
|
|
||||||
|
if [ -e ${backupNamesFile} ]; then
|
||||||
|
backupFileList=`cat ${backupNamesFile}`
|
||||||
|
|
||||||
|
for backupFile in ${backupFileList}; do
|
||||||
|
origFile=`echo ${backupFile} | sed 's/\(.*\)\..*/\1/'`
|
||||||
|
|
||||||
|
diff ${origFile} ${backupFile} > /dev/null 2>&1
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
# if the installed version and the backup version don't differ
|
||||||
|
# then we can remove the backup version
|
||||||
|
rm ${backupFile}
|
||||||
|
else
|
||||||
|
# keep the backup, prepend text explaining what created it
|
||||||
|
tmpfile=/tmp/bro_install_tmp$$
|
||||||
|
echo ${backupDesc} > ${tmpfile}
|
||||||
|
echo "" >> ${tmpfile}
|
||||||
|
cat ${backupFile} >> ${tmpfile}
|
||||||
|
cp ${tmpfile} ${backupFile}
|
||||||
|
rm ${tmpfile}
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
rm ${backupNamesFile}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# make sure that world-writeable dirs have the sticky bit set
|
||||||
|
# so that unprivileged can't rename/remove files within
|
||||||
|
|
||||||
|
if [ -d /var/opt/bro/spool ]; then
|
||||||
|
chmod +t /var/opt/bro/spool
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d /var/opt/bro/spool/tmp ]; then
|
||||||
|
chmod +t /var/opt/bro/spool/tmp
|
||||||
|
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
|
34
cmake/package_preinstall.sh.in
Executable file
34
cmake/package_preinstall.sh.in
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This script is meant to be used by binary packages pre-installation.
|
||||||
|
# Variables between @ symbols are replaced by CMake at configure time.
|
||||||
|
|
||||||
|
configFiles="@INSTALLED_CONFIG_FILES@"
|
||||||
|
backupNamesFile=/tmp/bro_install_backups
|
||||||
|
|
||||||
|
# Checks if a config file exists in a default location and makes a backup
|
||||||
|
# so that a modified version is not clobbered
|
||||||
|
backupFile () {
|
||||||
|
origFile="$1"
|
||||||
|
|
||||||
|
if [ -e ${origFile} ]; then
|
||||||
|
# choose a file suffix that doesn't already exist
|
||||||
|
ver=1
|
||||||
|
while [ -e ${origFile}.${ver} ]; do
|
||||||
|
ver=$(( ver + 1 ))
|
||||||
|
done
|
||||||
|
|
||||||
|
backupFile=${origFile}.${ver}
|
||||||
|
|
||||||
|
cp ${origFile} ${backupFile}
|
||||||
|
|
||||||
|
# the post upgrade script will check whether the installed
|
||||||
|
# config file actually differs from existing version
|
||||||
|
# and delete unnecessary backups
|
||||||
|
echo "${backupFile}" >> ${backupNamesFile}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
for file in ${configFiles}; do
|
||||||
|
backupFile "${file}"
|
||||||
|
done
|
|
@ -146,3 +146,6 @@
|
||||||
|
|
||||||
/* Define u_int8_t */
|
/* Define u_int8_t */
|
||||||
#define u_int8_t @U_INT8_T@
|
#define u_int8_t @U_INT8_T@
|
||||||
|
|
||||||
|
/* Whether llabs will be ambiguous in stdlib.h and cstdlib headers */
|
||||||
|
#cmakedefine DARWIN_NO_LLABS
|
||||||
|
|
21
configure
vendored
21
configure
vendored
|
@ -44,6 +44,14 @@ Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
--with-geoip=PATH path to the libGeoIP install root
|
--with-geoip=PATH path to the libGeoIP install root
|
||||||
--with-perftools=PATH path to Google Perftools install root
|
--with-perftools=PATH path to Google Perftools install root
|
||||||
|
|
||||||
|
Packaging Options (for developers):
|
||||||
|
--ignore-dirs=PATHS paths to ignore when creating source package
|
||||||
|
(semicolon delimited and quoted when multiple)
|
||||||
|
--pkg-name-prefix=NAME use the given name as the package prefix instead
|
||||||
|
of the default CMake project name
|
||||||
|
--osx-sysroot=PATH path to the OS X SDK to compile against
|
||||||
|
--osx-min-version=VER minimum OS X version (the deployment target)
|
||||||
|
|
||||||
Influential Environment Variables (only on first invocation
|
Influential Environment Variables (only on first invocation
|
||||||
per build directory):
|
per build directory):
|
||||||
CC C compiler command
|
CC C compiler command
|
||||||
|
@ -79,6 +87,7 @@ append_cache_entry INSTALL_AUX_TOOLS BOOL true
|
||||||
append_cache_entry INSTALL_BROCCOLI BOOL true
|
append_cache_entry INSTALL_BROCCOLI BOOL true
|
||||||
append_cache_entry INSTALL_BROCTL BOOL true
|
append_cache_entry INSTALL_BROCTL BOOL true
|
||||||
append_cache_entry STANDALONE BOOL true
|
append_cache_entry STANDALONE BOOL true
|
||||||
|
append_cache_entry CPACK_SOURCE_IGNORE_FILES STRING
|
||||||
|
|
||||||
# parse arguments
|
# parse arguments
|
||||||
while [ $# -ne 0 ]; do
|
while [ $# -ne 0 ]; do
|
||||||
|
@ -155,6 +164,18 @@ while [ $# -ne 0 ]; do
|
||||||
--with-perftools=*)
|
--with-perftools=*)
|
||||||
append_cache_entry GooglePerftools_ROOT_DIR PATH $optarg
|
append_cache_entry GooglePerftools_ROOT_DIR PATH $optarg
|
||||||
;;
|
;;
|
||||||
|
--ignore-dirs=*)
|
||||||
|
append_cache_entry CPACK_SOURCE_IGNORE_FILES STRING $optarg
|
||||||
|
;;
|
||||||
|
--pkg-name-prefix=*)
|
||||||
|
append_cache_entry PACKAGE_NAME_PREFIX STRING $optarg
|
||||||
|
;;
|
||||||
|
--osx-sysroot=*)
|
||||||
|
append_cache_entry CMAKE_OSX_SYSROOT PATH $optarg
|
||||||
|
;;
|
||||||
|
--osx-min-version=*)
|
||||||
|
append_cache_entry CMAKE_OSX_DEPLOYMENT_TARGET STRING $optarg
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Invalid option '$1'. Try $0 --help to see available options."
|
echo "Invalid option '$1'. Try $0 --help to see available options."
|
||||||
exit 1
|
exit 1
|
||||||
|
|
67
make-mac-packages
Executable file
67
make-mac-packages
Executable file
|
@ -0,0 +1,67 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This script creates binary packages for Mac OS X.
|
||||||
|
# They can be found in build/ after running.
|
||||||
|
|
||||||
|
# CMake/CPack versions before 2.8.2 have bugs that can create bad packages
|
||||||
|
CMAKE_PACK_REQ=2.8.3
|
||||||
|
CMAKE_VER=`cmake -version`
|
||||||
|
|
||||||
|
if [ "${CMAKE_VER}" \< "${CMAKE_PACK_REQ}" ]; then
|
||||||
|
echo "Package creation requires CMake > 2.8.2" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
type sw_vers > /dev/null 2>&1 || {
|
||||||
|
echo "Unable to get Mac OS X version" >&2;
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get the OS X minor version
|
||||||
|
# 5 = Leopard, 6 = Snow Leopard, 7 = Lion ...
|
||||||
|
osx_ver=`sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2`
|
||||||
|
|
||||||
|
if [ ${osx_ver} -lt 5 ]; then
|
||||||
|
echo "Packages for OS X < 10.5 are not supported" >&2
|
||||||
|
exit 1
|
||||||
|
elif [ ${osx_ver} -eq 5 ]; then
|
||||||
|
# On OS X 10.5, the x86_64 version of libresolv is broken,
|
||||||
|
# so we build for i386 as the easiest solution
|
||||||
|
arch=i386
|
||||||
|
else
|
||||||
|
# Currently it's just easiest to build the 10.5 package on
|
||||||
|
# on 10.5, but if it weren't for the libresolv issue, we could
|
||||||
|
# potentially build packages for older OS X version by using the
|
||||||
|
# --osx-sysroot and --osx-min-version options
|
||||||
|
arch=x86_64
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Minimum Bro
|
||||||
|
CMAKE_OSX_ARCHITECTURES=${arch} ./configure --prefix=/opt/bro \
|
||||||
|
--disable-broccoli --disable-broctl --pkg-name-prefix=Bro
|
||||||
|
cd build
|
||||||
|
make package
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# Full Bro package
|
||||||
|
CMAKE_OSX_ARCHITECTURES=${arch} ./configure --prefix=/opt/bro \
|
||||||
|
--pkg-name-prefix=Bro-all
|
||||||
|
cd build
|
||||||
|
make package
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# Broccoli
|
||||||
|
cd aux/broccoli
|
||||||
|
CMAKE_OSX_ARCHITECTURES=${arch} ./configure --prefix=/opt/bro
|
||||||
|
cd build
|
||||||
|
make package
|
||||||
|
mv Broccoli*.dmg ../../../build/
|
||||||
|
cd ../../..
|
||||||
|
|
||||||
|
# Broctl
|
||||||
|
cd aux/broctl
|
||||||
|
CMAKE_OSX_ARCHITECTURES=${arch} ./configure --prefix=/opt/bro
|
||||||
|
cd build
|
||||||
|
make package
|
||||||
|
mv Broctl*.dmg ../../../build/
|
||||||
|
cd ../../..
|
42
make-rpm-packages
Executable file
42
make-rpm-packages
Executable file
|
@ -0,0 +1,42 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This script generates binary RPM packages.
|
||||||
|
# They can be found in build/ after running.
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Minimum Bro
|
||||||
|
./configure --prefix=/opt/bro --disable-broccoli --disable-broctl \
|
||||||
|
--pkg-name-prefix=Bro
|
||||||
|
cd build
|
||||||
|
make package
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# Full Bro package
|
||||||
|
./configure --prefix=/opt/bro --pkg-name-prefix=Bro-all
|
||||||
|
cd build
|
||||||
|
make package
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# Broccoli
|
||||||
|
cd aux/broccoli
|
||||||
|
./configure --prefix=/opt/bro
|
||||||
|
cd build
|
||||||
|
make package
|
||||||
|
mv Broccoli*.rpm ../../../build/
|
||||||
|
cd ../../..
|
||||||
|
|
||||||
|
# Broctl
|
||||||
|
cd aux/broctl
|
||||||
|
./configure --prefix=/opt/bro
|
||||||
|
cd build
|
||||||
|
make package
|
||||||
|
mv Broctl*.rpm ../../../build/
|
||||||
|
cd ../../..
|
|
@ -524,7 +524,11 @@ Val* Val::SizeVal() const
|
||||||
{
|
{
|
||||||
switch ( type->InternalType() ) {
|
switch ( type->InternalType() ) {
|
||||||
case TYPE_INTERNAL_INT:
|
case TYPE_INTERNAL_INT:
|
||||||
|
#ifdef DARWIN_NO_LLABS
|
||||||
|
return new Val(abs(val.int_val), TYPE_COUNT);
|
||||||
|
#else
|
||||||
return new Val(llabs(val.int_val), TYPE_COUNT);
|
return new Val(llabs(val.int_val), TYPE_COUNT);
|
||||||
|
#endif
|
||||||
|
|
||||||
case TYPE_INTERNAL_UNSIGNED:
|
case TYPE_INTERNAL_UNSIGNED:
|
||||||
return new Val(val.uint_val, TYPE_COUNT);
|
return new Val(val.uint_val, TYPE_COUNT);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue