IF(DEB)

SET(CMAKE_INSTALL_PREFIX "/usr/local/mariadb/columnstore/mysql")

SET(CPACK_GENERATOR "DEB")
SET(CPACK_DEBIAN_PACKAGE_DEBUG 1)
SET(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.7)

SET(CPACK_DEB_COMPONENT_INSTALL ON)

SET(CPACK_COMPONENT_SERVER_GROUP "server")
SET(CPACK_COMPONENT_MANPAGESSERVER_GROUP "server")
SET(CPACK_COMPONENT_INIFILES_GROUP "server")
SET(CPACK_COMPONENT_SERVER_SCRIPTS_GROUP "server")
SET(CPACK_COMPONENT_SUPPORTFILES_GROUP "server")
SET(CPACK_COMPONENT_DEVELOPMENT_GROUP "devel")
SET(CPACK_COMPONENT_MANPAGESDEVELOPMENT_GROUP "devel")
SET(CPACK_COMPONENT_TEST_GROUP "test")
SET(CPACK_COMPONENT_MANPAGESTEST_GROUP "test")
SET(CPACK_COMPONENT_CLIENT_GROUP "client")
SET(CPACK_COMPONENT_MANPAGESCLIENT_GROUP "client")
SET(CPACK_COMPONENT_README_GROUP "server")
SET(CPACK_COMPONENT_SHAREDLIBRARIES_GROUP "shared")
SET(CPACK_COMPONENT_COMMON_GROUP "common")
SET(CPACK_COMPONENT_CLIENTPLUGINS_GROUP "common")
SET(CPACK_COMPONENT_COMPAT_GROUP "compat")
SET(CPACK_COMPONENTS_ALL Server ManPagesServer IniFiles Server_Scripts
                         SupportFiles Development ManPagesDevelopment
                         ManPagesTest Readme ManPagesClient Test 
                         Common Client SharedLibraries ClientPlugins)

## dhill
SET(INFINIDB_DEBIAN_PACKAGE_NAME "mariadb-columnstore")
SET(INFINIDB_BIT "x86_64")

IF (NOT CPACK_DEBIAN_PACKAGE_VERSION)
SET (CPACK_DEBIAN_PACKAGE_VERSION "1.0.0")
ENDIF()
IF (NOT CPACK_DEBIAN_PACKAGE_RELEASE)
SET (CPACK_DEBIAN_PACKAGE_RELEASE "0")
ENDIF()

SET(CPACK_DEBIAN_PACKAGE_NAME ${CPACK_PACKAGE_NAME})
SET(CPACK_PACKAGE_FILE_NAME "${INFINIDB_DEBIAN_PACKAGE_NAME}-${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}-${INFINIDB_BIT}-${DEB}")
SET(COLUMNSTORE_NO_DASH_VERSION ${CPACK_DEBIAN_PACKAGE_VERSION})

SET(CPACK_DEBIAN_PACKAGE_RELEASE "1%{?dist}")
SET(CPACK_DEBIAN_PACKAGE_LICENSE "GPLv2")
SET(CPACK_DEBIAN_PACKAGE_RELOCATABLE FALSE)
SET(CPACK_PACKAGE_RELOCATABLE FALSE)
SET(CPACK_DEBIAN_PACKAGE_GROUP "Applications/Databases")
SET(CPACK_DEBIAN_PACKAGE_SUMMARY ${CPACK_PACKAGE_SUMMARY})
SET(CPACK_DEBIAN_PACKAGE_URL ${CPACK_PACKAGE_URL})
SET(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_DEBIAN_PACKAGE_SUMMARY})

SET(CPACK_DEBIAN_SPEC_MORE_DEFINE "
%define mysql_vendor ${CPACK_PACKAGE_VENDOR}
%define mysqlversion ${COLUMNSTORE_NO_DASH_VERSION}
%define mysqlbasedir ${CMAKE_INSTALL_PREFIX}
%define mysqldatadir ${INSTALL_MYSQLDATADIR}
%define mysqld_user  mysql
%define mysqld_group mysql
%define _bindir     ${INSTALL_BINDIRABS}
%define _sbindir    ${INSTALL_SBINDIRABS}
%define _sysconfdir ${INSTALL_SYSCONFDIR}
")

# this creative hack is described here: http://www.cmake.org/pipermail/cmake/2012-January/048416.html
# both /etc and /etc/init.d should be ignored as of 2.8.7
# only /etc/init.d as of 2.8.8
# and eventually this hack should go away completely
SET(CPACK_DEBIAN_SPEC_MORE_DEFINE "${CPACK_DEBIAN_SPEC_MORE_DEFINE}
%define ignore \#
")

SET(CPACK_DEBIAN_PACKAGE_REQUIRES "mariadb-columnstore-common")

SET(ignored
  "%ignore /etc"
  "%ignore /etc/init.d"
  "%ignore /etc/logrotate.d"
  "%ignore ${CMAKE_INSTALL_PREFIX}"
  "%ignore ${CMAKE_INSTALL_PREFIX}/bin"
  "%ignore ${CMAKE_INSTALL_PREFIX}/include"
  "%ignore ${CMAKE_INSTALL_PREFIX}/lib"
  "%ignore ${CMAKE_INSTALL_PREFIX}/lib/systemd"
  "%ignore ${CMAKE_INSTALL_PREFIX}/lib/systemd/system"
  "%ignore ${CMAKE_INSTALL_PREFIX}/lib64"
  "%ignore ${CMAKE_INSTALL_PREFIX}/sbin"
  "%ignore ${CMAKE_INSTALL_PREFIX}/share"
  "%ignore ${CMAKE_INSTALL_PREFIX}/share/aclocal"
  "%ignore ${CMAKE_INSTALL_PREFIX}/share/doc"
  "%ignore ${CMAKE_INSTALL_PREFIX}/share/man"
  "%ignore ${CMAKE_INSTALL_PREFIX}/share/man/man1"
  "%ignore ${CMAKE_INSTALL_PREFIX}/share/man/man8"
  "%ignore ${CMAKE_INSTALL_PREFIX}/share/pkgconfig"
  "%ignore /usr"
  "%ignore /usr/local"
  "%ignore /usr/lib"
  )

SET(CPACK_DEBIAN_server_USER_FILELIST ${ignored} "%config(noreplace) ${INSTALL_SYSCONF2DIR}/*")
SET(CPACK_DEBIAN_shared_USER_FILELIST ${ignored} "%config(noreplace) ${INSTALL_SYSCONF2DIR}/*")
SET(CPACK_DEBIAN_client_USER_FILELIST ${ignored} "%config(noreplace) ${INSTALL_SYSCONF2DIR}/*")
SET(CPACK_DEBIAN_compat_USER_FILELIST ${ignored})
SET(CPACK_DEBIAN_devel_USER_FILELIST ${ignored})
SET(CPACK_DEBIAN_test_USER_FILELIST ${ignored})
SET(CPACK_DEBIAN_common_USER_FILELIST ${ignored})


# "set/append array" - append a set of strings, separated by a space
MACRO(SETA var)
  FOREACH(v ${ARGN})
    SET(${var} "${${var}} ${v}")
  ENDFOREACH()
ENDMACRO(SETA)

SETA(CPACK_DEBIAN_client_PACKAGE_CONFLICTS
  "mysql-client"
  "MySQL-client"
  "MySQL-OurDelta-client")
SETA(CPACK_DEBIAN_client_PACKAGE_PROVIDES
  "MySQL-client"
  "mysql-client")

SETA(CPACK_DEBIAN_devel_PACKAGE_CONFLICTS
  "MySQL-devel"
  "MySQL-OurDelta-devel")
SETA(CPACK_DEBIAN_devel_PACKAGE_PROVIDES
  "MySQL-devel")

SETA(CPACK_DEBIAN_server_PACKAGE_CONFLICTS
  "MariaDB"
  "MySQL"
  "mysql-server"
  "MySQL-server"
  "MariaDB-Galera-server"
  "MySQL-OurDelta-server")
SETA(CPACK_DEBIAN_server_PACKAGE_PROVIDES
  "MariaDB"
  "MySQL"
  "MySQL-server"
  "msqlormysql"
  "mysql-server")

SETA(CPACK_DEBIAN_shared_PACKAGE_CONFLICTS
  "mysql-shared"
  "MySQL-shared-standard"
  "MySQL-shared-pro"
  "MySQL-shared-pro-cert"
  "MySQL-shared-pro-gpl"
  "MySQL-shared-pro-gpl-cert"
  "MySQL-shared"
  "MySQL-OurDelta-shared")
SETA(CPACK_DEBIAN_shared_PACKAGE_PROVIDES
  "MySQL-shared"
  "mysql-shared")

SETA(CPACK_DEBIAN_test_PACKAGE_CONFLICTS
  "MySQL-test"
  "MySQL-OurDelta-test")
SETA(CPACK_DEBIAN_test_PACKAGE_PROVIDES
  "MySQL-test")

SETA(CPACK_DEBIAN_server_PACKAGE_REQUIRES
  "${CPACK_DEBIAN_PACKAGE_REQUIRES}"
  "mariadb-columnstore-client")

IF(WITH_WSREP)
SETA(CPACK_DEBIAN_server_PACKAGE_REQUIRES
  "galera" "rsync" "lsof" "grep" "gawk" "iproute"
  "coreutils" "findutils" "tar")
ENDIF()

MACRO(ALTERNATIVE_NAME real alt)
  SET(ver "%{version}-%{release}")
  IF (${epoch})
    SET(ver "${epoch}:${ver}")
  ENDIF()

  SET(p "CPACK_DEBIAN_${real}_PACKAGE_PROVIDES")
  SET(${p} "${${p}} ${alt} = ${ver} ${alt}%{?_isa} = ${ver} config(${alt}) = ${ver}")
  SET(o "CPACK_DEBIAN_${real}_PACKAGE_OBSOLETES")
  SET(${o} "${${o}} ${alt} ${alt}%{?_isa}")
ENDMACRO(ALTERNATIVE_NAME)

ALTERNATIVE_NAME("devel"  "mysql-devel")
ALTERNATIVE_NAME("server" "mysql-server")
ALTERNATIVE_NAME("test"   "mysql-test")

# Argh! Different distributions call packages differently, to be a drop-in
# replacement we have to fake distribution-speficic dependencies

IF(DEBIAN MATCHES "(rhel|centos)5")
  ALTERNATIVE_NAME("shared" "mysql")
ELSEIF(DEBIAN MATCHES "(rhel|centos)6")
  ALTERNATIVE_NAME("client" "mysql")
  ALTERNATIVE_NAME("shared" "mysql-libs")
ELSEIF(DEBIAN MATCHES "fedora" OR DEBIAN MATCHES "(rhel|centos)7")
  SET(epoch 1) # this is fedora
  ALTERNATIVE_NAME("client" "mariadb")
  ALTERNATIVE_NAME("client" "mysql")
  ALTERNATIVE_NAME("devel"  "mariadb-devel")
  ALTERNATIVE_NAME("server" "mariadb-server")
  ALTERNATIVE_NAME("server" "mysql-compat-server")
  ALTERNATIVE_NAME("shared" "mysql-libs")
  ALTERNATIVE_NAME("test"   "mariadb-test")
ENDIF()

# workaround for lots of perl dependencies added by rpmbuild
SETA(CPACK_DEBIAN_test_PACKAGE_PROVIDES
  "perl(lib::mtr_gcov.pl)"
  "perl(lib::mtr_gprof.pl)"
  "perl(lib::mtr_io.pl)"
  "perl(lib::mtr_misc.pl)"
  "perl(lib::mtr_process.pl)"
  "perl(lib::v1/mtr_cases.pl)"
  "perl(lib::v1/mtr_gcov.pl)"
  "perl(lib::v1/mtr_gprof.pl)"
  "perl(lib::v1/mtr_im.pl)"
  "perl(lib::v1/mtr_io.pl)"
  "perl(lib::v1/mtr_match.pl)"
  "perl(lib::v1/mtr_misc.pl)"
  "perl(lib::v1/mtr_process.pl)"
  "perl(lib::v1/mtr_report.pl)"
  "perl(lib::v1/mtr_stress.pl)"
  "perl(lib::v1/mtr_timer.pl)"
  "perl(lib::v1/mtr_unique.pl)"
  "perl(mtr_cases)"
  "perl(mtr_io.pl)"
  "perl(mtr_match)"
  "perl(mtr_misc.pl)"
  "perl(mtr_gcov.pl)"
  "perl(mtr_gprof.pl)"
  "perl(mtr_process.pl)"
  "perl(mtr_report)"
  "perl(mtr_results)"
  "perl(mtr_unique)")

# If we want to build build MariaDB-shared-compat,
# extract compat libraries from MariaDB-shared-5.3 rpm
FILE(GLOB compat_deb RELATIVE ${CMAKE_SOURCE_DIR}
    "${CMAKE_SOURCE_DIR}/../MariaDB-shared-5.3.*.deb")
IF (compat_deb)
  MESSAGE("Using ${compat_deb} to build MariaDB-compat")
  INSTALL(CODE "EXECUTE_PROCESS(
                 COMMAND rpm2cpio ${CMAKE_SOURCE_DIR}/${compat_deb}
                 COMMAND cpio --extract --make-directories */libmysqlclient*.so.* -
                 WORKING_DIRECTORY \$ENV{DESTDIR})
                EXECUTE_PROCESS(
                 COMMAND chmod -R a+rX .
                 WORKING_DIRECTORY \$ENV{DESTDIR})"
                 COMPONENT Compat)
  SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} Compat)

  # RHEL6/CentOS6 install Postfix by default, and it requires
  # libmysqlclient.so.16 that pulls in mysql-libs-5.1.x
  # And the latter conflicts with our rpms.
  # Make sure that for these distribuions all our rpms require
  # MariaDB-compat, that will replace mysql-libs-5.1
  IF(DEBIAN MATCHES "(rhel|centos)6")
    SET(CPACK_DEBIAN_common_PACKAGE_REQUIRES "MariaDB-compat")
  ENDIF()
ENDIF(compat_deb)

SET(CPACK_DEBIAN_compat_PACKAGE_PROVIDES "mysql-libs = 5.3.5") # exact version doesn't matter as long as it greater than 5.1
SET(CPACK_DEBIAN_compat_PACKAGE_CONFLICTS "mysql-libs < 5.3.5")

ENDIF(DEB)

