Annotation of imach/distributions/gnulinux/UseRPMTools.cmake, revision 1.1
1.1 ! brouard 1: #
! 2: # - Find tools needed for building RPM Packages
! 3: # on Linux systems and defines macro that helps to
! 4: # build source or binary RPM, the MACRO assumes
! 5: # CMake 2.4.x which includes CPack support.
! 6: # CPack is used to build tar.gz source tarball
! 7: # which may be used by a custom user-made spec file.
! 8: #
! 9: # - Define RPMTools_ADD_RPM_TARGETS which defines
! 10: # two (top-level) CUSTOM targets for building
! 11: # source and binary RPMs
! 12: #
! 13: # Those CMake macros are provided by the TSP Developer Team
! 14: # https://savannah.nongnu.org/projects/tsp
! 15: #
! 16:
! 17: IF (WIN32)
! 18: MESSAGE(STATUS "RPM tools not available on Win32 systems")
! 19: ENDIF(WIN32)
! 20:
! 21: IF (UNIX)
! 22: # Look for RPM builder executable
! 23: FIND_PROGRAM(RPMTools_RPMBUILD_EXECUTABLE
! 24: NAMES rpmbuild
! 25: PATHS "/usr/bin;/usr/lib/rpm"
! 26: PATH_SUFFIXES bin
! 27: DOC "The RPM builder tool")
! 28:
! 29: IF (RPMTools_RPMBUILD_EXECUTABLE)
! 30: MESSAGE(STATUS "Looking for RPMTools... - found rpmuild is ${RPMTools_RPMBUILD_EXECUTABLE}")
! 31: SET(RPMTools_RPMBUILD_FOUND "YES")
! 32: GET_FILENAME_COMPONENT(RPMTools_BINARY_DIRS ${RPMTools_RPMBUILD_EXECUTABLE} PATH)
! 33: ELSE (RPMTools_RPMBUILD_EXECUTABLE)
! 34: SET(RPMTools_RPMBUILD_FOUND "NO")
! 35: MESSAGE(STATUS "Looking for RPMTools... - rpmbuild NOT FOUND")
! 36: ENDIF (RPMTools_RPMBUILD_EXECUTABLE)
! 37:
! 38: # Detect if CPack was included or not
! 39: IF (NOT DEFINED "CPACK_PACKAGE_NAME")
! 40: MESSAGE(FATAL_ERROR "CPack was not included, you should include CPack before Using RPMTools")
! 41: ENDIF (NOT DEFINED "CPACK_PACKAGE_NAME")
! 42:
! 43: IF (RPMTools_RPMBUILD_FOUND)
! 44: SET(RPMTools_FOUND TRUE)
! 45: #
! 46: # - first arg (ARGV0) is RPM name
! 47: # - second arg (ARGV1) is the RPM spec file path [optional]
! 48: # - third arg (ARGV2) is the RPM ROOT DIRECTORY used to build RPMs [optional]
! 49: #
! 50: MACRO(RPMTools_ADD_RPM_TARGETS RPMNAME)
! 51:
! 52: #
! 53: # If no spec file is provided create a minimal one
! 54: #
! 55: IF ("${ARGV1}" STREQUAL "")
! 56: SET(SPECFILE_PATH "${CMAKE_BINARY_DIR}/${RPMNAME}.spec")
! 57: ELSE ("${ARGV1}" STREQUAL "")
! 58: SET(SPECFILE_PATH "${ARGV1}")
! 59: ENDIF("${ARGV1}" STREQUAL "")
! 60:
! 61: # Verify whether if RPM_ROOTDIR was provided or not
! 62: IF("${ARGV2}" STREQUAL "")
! 63: SET(RPM_ROOTDIR ${CMAKE_BINARY_DIR}/RPM)
! 64: ELSE ("${ARGV2}" STREQUAL "")
! 65: SET(RPM_ROOTDIR "${ARGV2}")
! 66: ENDIF("${ARGV2}" STREQUAL "")
! 67: MESSAGE(STATUS "RPMTools:: Using RPM_ROOTDIR=${RPM_ROOTDIR}")
! 68:
! 69: # Prepare RPM build tree
! 70: FILE(MAKE_DIRECTORY ${RPM_ROOTDIR})
! 71: FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/tmp)
! 72: FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/BUILD)
! 73: FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/RPMS)
! 74: FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/SOURCES)
! 75: FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/SPECS)
! 76: FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/SRPMS)
! 77:
! 78: #
! 79: # We check whether if the provided spec file is
! 80: # to be configure or not.
! 81: #
! 82: IF ("${ARGV1}" STREQUAL "")
! 83: SET(SPECFILE_PATH "${RPM_ROOTDIR}/SPECS/${RPMNAME}.spec")
! 84: SET(SPECFILE_NAME "${RPMNAME}.spec")
! 85: MESSAGE(STATUS "No Spec file given generate a minimal one --> ${RPM_ROOTDIR}/SPECS/${RPMNAME}.spec")
! 86: FILE(WRITE ${RPM_ROOTDIR}/SPECS/${RPMNAME}.spec
! 87: "# -*- rpm-spec -*-
! 88: Summary: ${RPMNAME}
! 89: Name: ${RPMNAME}
! 90: Version: ${PACKAGE_VERSION}
! 91: Release: 1
! 92: License: Unknown
! 93: Group: Unknown
! 94: Source: ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz
! 95: BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
! 96: BuildRequires: cmake
! 97:
! 98: %define prefix /opt/${RPMNAME}-%{version}
! 99: %define rpmprefix $RPM_BUILD_ROOT%{prefix}
! 100: %define srcdirname %{name}-%{version}-Source
! 101:
! 102: %description
! 103: ${RPMNAME} : No description for now
! 104:
! 105: %prep
! 106: %setup -q -n %{srcdirname}
! 107:
! 108: %build
! 109: cd ..
! 110: rm -rf build_tree
! 111: mkdir build_tree
! 112: cd build_tree
! 113: cmake -DCMAKE_INSTALL_PREFIX=%{rpmprefix} ../%{srcdirname}
! 114: make
! 115:
! 116: %install
! 117: cd ../build_tree
! 118: make install
! 119:
! 120: %clean
! 121: rm -rf %{srcdirname}
! 122: rm -rf build_tree
! 123:
! 124: %files
! 125: %defattr(-,root,root,-)
! 126: %dir %{prefix}
! 127: %{prefix}/*
! 128:
! 129: %changelog
! 130: * Wed Feb 28 2007 Erk <eric.noulard@gmail.com>
! 131: Generated by CMake UseRPMTools macros"
! 132: )
! 133:
! 134: ELSE ("${ARGV1}" STREQUAL "")
! 135: SET(SPECFILE_PATH "${ARGV1}")
! 136:
! 137: GET_FILENAME_COMPONENT(SPECFILE_EXT ${SPECFILE_PATH} EXT)
! 138: IF ("${SPECFILE_EXT}" STREQUAL ".spec")
! 139: # This is a 'ready-to-use' spec file which does not need to be CONFIGURED
! 140: GET_FILENAME_COMPONENT(SPECFILE_NAME ${SPECFILE_PATH} NAME)
! 141: MESSAGE(STATUS "Simple copy spec file <${SPECFILE_PATH}> --> <${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}>")
! 142: CONFIGURE_FILE(
! 143: ${SPECFILE_PATH}
! 144: ${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}
! 145: COPYONLY)
! 146: ELSE ("${SPECFILE_EXT}" STREQUAL ".spec")
! 147: # This is a to-be-configured spec file
! 148: GET_FILENAME_COMPONENT(SPECFILE_NAME ${SPECFILE_PATH} NAME_WE)
! 149: SET(SPECFILE_NAME "${SPECFILE_NAME}.spec")
! 150: MESSAGE(STATUS "Configuring spec file <${SPECFILE_PATH}> --> <${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}>")
! 151: CONFIGURE_FILE(
! 152: ${SPECFILE_PATH}
! 153: ${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}
! 154: @ONLY)
! 155: ENDIF ("${SPECFILE_EXT}" STREQUAL ".spec")
! 156: ENDIF("${ARGV1}" STREQUAL "")
! 157:
! 158: ADD_CUSTOM_TARGET(${RPMNAME}_srpm
! 159: COMMAND cpack -G TGZ --config CPackSourceConfig.cmake
! 160: COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz ${RPM_ROOTDIR}/SOURCES
! 161: COMMAND ${RPMTools_RPMBUILD_EXECUTABLE} -bs --define=\"_topdir ${RPM_ROOTDIR}\" --buildroot=${RPM_ROOTDIR}/tmp ${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}
! 162: )
! 163:
! 164: ADD_CUSTOM_TARGET(${RPMNAME}_rpm
! 165: COMMAND cpack -G TGZ --config CPackSourceConfig.cmake
! 166: COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz ${RPM_ROOTDIR}/SOURCES
! 167: COMMAND ${RPMTools_RPMBUILD_EXECUTABLE} -bb --define=\"_topdir ${RPM_ROOTDIR}\" --buildroot=${RPM_ROOTDIR}/tmp ${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}
! 168: )
! 169: ENDMACRO(RPMTools_ADD_RPM_TARGETS)
! 170:
! 171: ELSE (RPMTools_RPMBUILD_FOUND)
! 172: SET(RPMTools FALSE)
! 173: ENDIF (RPMTools_RPMBUILD_FOUND)
! 174:
! 175: ENDIF (UNIX)
! 176:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>