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>