Changeset: a7a8b710c071 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a7a8b710c071
Added Files:
find_linux_distro.sh.in
Modified Files:
CMakeLists.txt
cmake/Distribute.cmake
rpm.mk.in
sql/backends/monet5/vaults/bam/CMakeLists.txt
testing/CMakeLists.txt
Branch: cmake-fun
Log Message:
Steps into building RPMs from Cmake output.
diffs (236 lines):
diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -63,7 +63,7 @@ if(EXISTS "${CMAKE_SOURCE_DIR}/.hg")
set(DFT_STRICT "YES")
endif()
elseif(EXISTS "${CMAKE_SOURCE_DIR}/.git")
- exec_program("git" "${CMAKE_SOURCE_DIR}" ARGS "rev-parse HEAD"
OUTPUT_VARIABLE GIT_OUPUT_RES RETURN_VALUE GIT_RETURN_CODE)
+ exec_program("git" "${CMAKE_SOURCE_DIR}" ARGS "rev-parse --short HEAD"
OUTPUT_VARIABLE GIT_OUPUT_RES RETURN_VALUE GIT_RETURN_CODE)
if(GIT_RETURN_CODE EQUAL 0 AND GIT_OUPUT_RES)
set(MERCURIAL_ID "${GIT_OUPUT_RES}+")
set(DFT_STRICT "YES")
@@ -757,6 +757,10 @@ set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_M
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}" CACHE STRING
"Shared library link options for all builds" FORCE)
set(LINK_OPTIONS "${LINK_OPTIONS}" CACHE STRING "Link options for all builds"
FORCE)
+# Programs required for testing and building RPMs
+find_program(DIFF NAMES gdiff diff DOC "Diff program fullpath")
+find_program(BASH NAMES bash DOC "bash interpreter fullpath")
+
include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_subdirectory(buildtools)
add_subdirectory(common)
diff --git a/cmake/Distribute.cmake b/cmake/Distribute.cmake
--- a/cmake/Distribute.cmake
+++ b/cmake/Distribute.cmake
@@ -11,7 +11,7 @@
# Cpack general configurations
set(CPACK_SOURCE_GENERATOR "7Z;TBZ2;TGZ;TXZ;ZIP")
set(CPACK_GENERATOR "${CPACK_SOURCE_GENERATOR}") # All what we need I think
-# DEB;RPM;productbuild;FREEBSD;WIX; -> for these we will continue with the
previous
+# DEB;RPM;productbuild;FREEBSD;WIX; -> for these we will continue with the
previous method
set(CPACK_PACKAGE_VENDOR "MonetDBSolutions")
set(CPACK_PACKAGE_CHECKSUM "SHA512")
set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/buildtools/conf/monetdb.ico")
@@ -21,11 +21,37 @@ set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE
# Source build configurations
# Using regular expressions for ignored files, later we could move to a
generated variable
set(CPACK_SOURCE_IGNORE_FILES "/bootstrap" "/buildtools/autogen/"
"/clients/odbc/doc" "/debian/" "/de-bootstrap"
- "/libversions" "/MacOSX/" "/rpm.mk.in" "/tools/monetdbbincopy"
"/testing/quicktest" "/testing/cmptests.py"
- "/vertoo.config" "/vertoo.data" "/\\\\.idea/" "/\\\\.git/" "/\\\\.hg/"
"ChangeLog.*" "CMakeFiles*" "\\\\.hg.*" "#"
- "~" "\\\\.ac$" "\\\\.ag$" "\\\\.lst$" "\\\\.mal\\\\.sh$")
+ "/libversions" "/MacOSX/" "/tools/monetdbbincopy" "/testing/quicktest"
"/testing/cmptests.py" "/vertoo.config"
+ "/vertoo.data" "/\\\\.idea/" "/\\\\.git/" "/\\\\.hg/" "ChangeLog.*"
"CMakeFiles*" "\\\\.hg.*" "#" "~" "\\\\.ac$"
+ "\\\\.ag$" "\\\\.lst$" "\\\\.mal\\\\.sh$")
set(CPACK_SOURCE_PACKAGE_FILE_NAME "MonetDB-${MONETDB_VERSION}")
include(CPack)
-# RPM configurations
-#set(CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_SOURCE_DIR}/MonetDB.spec") ...
+# Build rpms only on Linux, because that's what the find_linux_distro script
is for
+if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+ if(HAVE_LIDAR) # needed for rpm.mk.in
+ set(LIBLAS_RPM "with")
+ else()
+ set(LIBLAS_RPM "without")
+ endif()
+
+ find_program(ECHO NAMES echo DOC "echo program fullpath")
+ if(NOT ECHO OR NOT BASH)
+ message(FATAL_ERROR "echo and bash program are required to
build rpms")
+ endif()
+
+ # Create a temporary file in CMakeFiles and copy it to the final
location while setting proper permissions
+ # We need these two steps because I couldn't find a better way to do it
with cmake...
+ configure_file(${CMAKE_SOURCE_DIR}/find_linux_distro.sh.in
${CMAKE_BINARY_DIR}/CMakeFiles/find_linux_distro.sh @ONLY)
+ file(COPY ${CMAKE_BINARY_DIR}/CMakeFiles/find_linux_distro.sh
DESTINATION ${CMAKE_BINARY_DIR}
+ FILE_PERMISSIONS ${PROGRAM_PERMISSIONS_DEFAULT})
+ file(REMOVE ${CMAKE_BINARY_DIR}/CMakeFiles/find_linux_distro.sh)
+
+ exec_program("${CMAKE_BINARY_DIR}/find_linux_distro.sh" OUTPUT_VARIABLE
LINUX_DIST RETURN_VALUE LINUX_DIST_RC)
+ if(LINUX_DIST AND LINUX_DIST_RC EQUAL 0)
+ configure_file(${CMAKE_SOURCE_DIR}/rpm.mk.in
${CMAKE_BINARY_DIR}/rpm.mk @ONLY)
+ install(FILES ${CMAKE_BINARY_DIR}/rpm.mk DESTINATION
${INCLUDEDIR}/monetdb)
+ else()
+ message(WARNING "Could not determine Linux distribution, thus
rpm.mk could not be generated")
+ endif()
+endif()
diff --git a/find_linux_distro.sh.in b/find_linux_distro.sh.in
new file mode 100644
--- /dev/null
+++ b/find_linux_distro.sh.in
@@ -0,0 +1,55 @@
+#!@BASH@
+
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
+
+if [ -f /etc/os-release ]
+ then
+ # this is the new way of getting release information
+ # works for Fedora >= 17, Ubuntu >= 12.04 (Precise Pangolin)
+ LINUX_DIST=`source /etc/os-release; @ECHO@ "${ID}:${VERSION_ID}"`
+elif [ -f /etc/fedora-release ]
+ then
+ LINUX_DIST=`cat /etc/fedora-release | head -n1 \
+ | sed 's|^.*\(Fedora\).* release \([[0-9]][[^ \n]]*\)\(
.*\)*$|\1:\2|'`
+elif [ -f /etc/centos-release ]
+ then
+ LINUX_DIST=`cat /etc/centos-release | head -n1 | sed 's|^\(CentOS\).*
release \([[0-9]][[^ \n]]*\)\( .*\)*$|\1:\2|'`
+elif [ -f /etc/yellowdog-release ]
+ then
+ LINUX_DIST=`cat /etc/yellowdog-release | head -n1 \
+ | sed 's|^\(Yellow\) Dog Linux release \([[0-9]][[^ \n]]*\)\(
.*\)*$|\1:\2|'`
+elif [ -f /etc/redhat-release ]
+ then
+ LINUX_DIST=`cat /etc/redhat-release | head -n1 \
+ | sed 's|^.*\(Red\) \(Hat\).* Linux *\([[A-Z]]*\) release
\([[0-9]][[^ \n]]*\)\( .*\)*$|\1\2:\4\3|' \
+ | sed 's|^Red Hat Enterprise Linux \([[AW]]S\) release
\([[0-9]][[^ \n]]*\)\( .*\)*$|RHEL:\2\1|' \
+ | sed 's|^\(CentOS\).* release \([[0-9]][[^ \n]]*\)\(
.*\)*$|\1:\2|' \
+ | sed 's|^\(Scientific\) Linux.* release \([[0-9]][[^ \n]]*\)\(
.*\)*$|\1:\2|'`
+elif [ -f /etc/SuSE-release ]
+ then
+ LINUX_DIST=`cat /etc/SuSE-release | head -n1 \
+ | sed 's|^.*\(S[[Uu]]SE\) LINUX Enterprise
\([[SD]]\)[[ervsktop]]* \([[0-9]][[^ \n]]*\)\( .*\)*$|\1:\3E\2|' \
+ | sed 's|^S[[Uu]]SE LINUX Enterprise \([[SD]]\)[[ervsktop]]*
\([[0-9]][[^ \n]]*\)\( .*\)*$|SLE\1:\2|' \
+ | sed 's|^.*\(S[[Uu]]SE\) [[Ll]][[Ii]][[Nn]][[Uu]][[Xx]].*
\([[0-9]][[^ \n]]*\)\( .*\)*$|\1:\2|' \
+ | sed 's|^open\(S[[Uu]]SE\) \([[0-9]][[^ \n]]*\)\(
.*\)*$|\1:\2|'`
+elif [ -f /etc/gentoo-release ]
+ then
+ LINUX_DIST=`cat /etc/gentoo-release | head -n1 \
+ | sed 's|^.*\(Gentoo\) Base System.* [[versionrelease]]*
\([[0-9]][[^ \n]]*\)\( .*\)*$|\1:\2|'`
+elif [ -f /etc/lsb-release ]
+ then
+ LINUX_DIST=`grep '^DISTRIB_ID=' /etc/lsb-release \
+ | cut -d'=' -f2`:`grep '^DISTRIB_RELEASE=' /etc/lsb-release |
cut -d'=' -f2`
+elif [ -f /etc/debian_version ]
+ then
+ LINUX_DIST=Debian:`cat /etc/debian_version | head -n1`
+else
+ LINUX_DIST=`uname -s`:`uname -r | sed
's|^\([[0-9\.]]*\)\([[^0-9\.]].*\)$|\1|'`
+fi
+
+LINUX_DIST_TRIMMED=`@ECHO@ "${LINUX_DIST}" | sed 's|:||'`
+@ECHO@ "${LINUX_DIST_TRIMMED}"
diff --git a/rpm.mk.in b/rpm.mk.in
--- a/rpm.mk.in
+++ b/rpm.mk.in
@@ -8,15 +8,15 @@
# make rules to generate MonetDB RPMs (works on Fedora, only)
-rpmtopdir = $(shell cd $(top_builddir) && pwd)/rpmbuild
+rpmtopdir = $(shell cd @CMAKE_BINARY_DIR@ && pwd)/rpmbuild
RPMBUILDARGS = --define="_tmppath /tmp" --define="_topdir $(rpmtopdir)"
--define="tmpdir %{_tmppath}" --define="rpmcflags -O2 " --define="packager
MonetDB Database System <[email protected]>" --define="_@LIBLAS_RPM@_lidar 1"
-$(top_builddir)/$(distdir).tar.bz2:
- $(MAKE) $(AM_MAKEFLAGS) dist-bzip2
+@CMAKE_BINARY_DIR@/@[email protected]:
+ cpack -G TBZ2 --config @CMAKE_BINARY_DIR@/CPackSourceConfig.cmake
-$(top_builddir)/$(distdir).tar.xz:
- $(MAKE) $(AM_MAKEFLAGS) dist-xz
+@CMAKE_BINARY_DIR@/@[email protected]:
+ cpack -G TXZ --config @CMAKE_BINARY_DIR@/CPackSourceConfig.cmake
$(rpmtopdir)/rpmmacros:
mkdir -p $(rpmtopdir)/RPMS
@@ -25,36 +25,8 @@ RPMBUILDARGS = --define="_tmppath /tmp"
mkdir -p $(rpmtopdir)/BUILD
mkdir -p $(rpmtopdir)/INSTALL
-rpm: MonetDB.spec $(top_builddir)/$(distdir).tar.bz2 $(rpmtopdir)/rpmmacros
- $(RPMBUILD) $(RPMBUILDARGS) --define="dist _@LINUX_DIST@" -ta --target
`uname -m` --define="comp_cc @CC@" $(top_builddir)/$(distdir).tar.bz2
-
-srpm: MonetDB.spec $(top_builddir)/$(distdir).tar.bz2 $(rpmtopdir)/rpmmacros
- $(RPMBUILD) $(RPMBUILDARGS) --define="dist %{?undefined}" -ts
$(top_builddir)/$(distdir).tar.bz2
-
-all: monetdb_hgversion.h
+rpm: @CMAKE_SOURCE_DIR@/MonetDB.spec
@CMAKE_BINARY_DIR@/@[email protected]
$(rpmtopdir)/rpmmacros
+ $(RPMBUILD) $(RPMBUILDARGS) --define="dist _@LINUX_DIST@" -ta --target
`uname -m` --define="comp_cc @CMAKE_C_COMPILER@"
@CMAKE_BINARY_DIR@/@[email protected]
-monetdb_hgversion.h: always
- if [ -d "$(srcdir)"/.hg ] && hgid=`(cd "$(srcdir)"; hg id -i)
2>/dev/null`; then \
- echo "#define MERCURIAL_ID \"$$hgid\"" >
monetdb_hgversion.h.new; \
- if [ -f monetdb_hgversion.h ] && cmp -s monetdb_hgversion.h
monetdb_hgversion.h.new; then \
- rm -f monetdb_hgversion.h.new; \
- else \
- mv -f monetdb_hgversion.h.new monetdb_hgversion.h; \
- fi; \
- elif [ -d "$(srcdir)"/.git ]; then \
- hgid=`(cd "$(srcdir)"; git log -1 | sed -n '/Notes (hg):/,$$p'
| grep -v Notes | sed 's/^ \+\(............\).*/\1/') 2>/dev/null`; \
- dirty=`(cd "$(srcdir)"; [[ -z $$(git status -s) ]] || echo
"+")`; \
- if [ -z "$${hgid}" ]; then \
- hgid="`(cd "$(srcdir)"; git rev-parse --short HEAD)`
(git)"; \
- fi; \
- echo "#define MERCURIAL_ID \"$$hgid$$dirty\"" >
monetdb_hgversion.h.new; \
- if [ -f monetdb_hgversion.h ] && cmp -s monetdb_hgversion.h
monetdb_hgversion.h.new; then \
- rm -f monetdb_hgversion.h.new; \
- else \
- mv -f monetdb_hgversion.h.new monetdb_hgversion.h; \
- fi; \
- elif [ ! -f monetdb_hgversion.h ]; then \
- touch monetdb_hgversion.h; \
- fi
-
-always:
+srpm: @CMAKE_SOURCE_DIR@/MonetDB.spec
@CMAKE_BINARY_DIR@/@[email protected]
$(rpmtopdir)/rpmmacros
+ $(RPMBUILD) $(RPMBUILDARGS) --define="dist %{?undefined}" -ts
@CMAKE_BINARY_DIR@/@[email protected]
diff --git a/sql/backends/monet5/vaults/bam/CMakeLists.txt
b/sql/backends/monet5/vaults/bam/CMakeLists.txt
--- a/sql/backends/monet5/vaults/bam/CMakeLists.txt
+++ b/sql/backends/monet5/vaults/bam/CMakeLists.txt
@@ -26,7 +26,7 @@ if(NOT ${ENABLE_SAMTOOLS} STREQUAL "NO"
cmake_pop_check_state()
endif()
if(HAVE_SAMTOOLS)
- configure_file(bam_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/bam_config.h)
+ configure_file(bam_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/bam_config.h
@ONLY)
include_directories(${CMAKE_CURRENT_BINARY_DIR} .. ../..
../../../../include ../../../../common ../../../../storage
../../../../server
../../../../../monetdb5/modules/atoms ../../../../../monetdb5/modules/kernel
../../../../../monetdb5/mal
../../../../../monetdb5/modules/mal ../../../../../monetdb5/optimizer
diff --git a/testing/CMakeLists.txt b/testing/CMakeLists.txt
--- a/testing/CMakeLists.txt
+++ b/testing/CMakeLists.txt
@@ -6,9 +6,6 @@
# Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
#]]
-#Test for diff program existance
-find_program(DIFF NAMES gdiff diff DOC "Diff program")
-
add_executable(Mdiff difflib.c helpers.c Mdiff.c difflib.h helpers.h)
install(TARGETS Mdiff DESTINATION ${BINDIR})
@@ -68,7 +65,6 @@ if(WIN32)
install(FILES Mtest.py.bat DESTINATION ${BINDIR} RENAME Mapprove.py.bat)
install(FILES $<TARGET_PDB_FILE:Mdiff> DESTINATION ${BINDIR} OPTIONAL)
else()
- find_program(BASH NAMES bash DOC "bash interpreter fullpath")
if(NOT BASH)
message(FATAL_ERROR "A bash interpreter was not found")
endif()
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list