File:  [Local Repository] / imach / distributions / gnulinux / UseRPMTools.cmake
Revision 1.2: download - view: text, annotated - select for diffs
Tue May 21 15:54:10 2019 UTC (5 years, 1 month ago) by brouard
Branches: MAIN
CVS tags: HEAD
Summary: testting; seems to be a useless file now

    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:        GPLv2+ with exceptions
   93: Group:          Applications/Sciences
   94: URL:            http://euroreves.ined.fr/imach
   95: Source:         ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz
   96: BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root
   97: BuildRequires:	cmake
   98: 
   99: %define prefix /usr/local/${RPMNAME}-%{version}
  100: %define rpmprefix $RPM_BUILD_ROOT%{prefix}
  101: %define srcdirname %{name}-%{version}-Source
  102: 
  103: %description
  104: ${RPMNAME} : No description for now
  105: 
  106: %prep
  107: %setup -q -n %{srcdirname}
  108: 
  109: %build
  110: cd ..
  111: rm -rf build_tree
  112: mkdir build_tree
  113: cd build_tree
  114: cmake -DCMAKE_INSTALL_PREFIX=%{rpmprefix} ../%{srcdirname}
  115: make
  116:   
  117: %install 
  118: cd ../build_tree
  119: make install
  120: 
  121: %clean
  122: rm -rf %{srcdirname}
  123: rm -rf build_tree
  124: 
  125: %files
  126: %defattr(-,root,root,-)
  127: %dir %{prefix}
  128: %{prefix}/*
  129: 
  130: %changelog
  131: * Wed Feb 28 2007 Erk <eric.noulard@gmail.com>
  132:   Generated by CMake UseRPMTools macros"
  133: 	)
  134: 
  135:       ELSE ("${ARGV1}" STREQUAL "")
  136: 	SET(SPECFILE_PATH "${ARGV1}")
  137: 	
  138: 	GET_FILENAME_COMPONENT(SPECFILE_EXT ${SPECFILE_PATH} EXT)      
  139: 	IF ("${SPECFILE_EXT}" STREQUAL ".spec")
  140: 	  # This is a 'ready-to-use' spec file which does not need to be CONFIGURED
  141: 	  GET_FILENAME_COMPONENT(SPECFILE_NAME ${SPECFILE_PATH} NAME)
  142: 	  MESSAGE(STATUS "Simple copy spec file <${SPECFILE_PATH}> --> <${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}>")
  143: 	  CONFIGURE_FILE(
  144: 	    ${SPECFILE_PATH} 
  145: 	    ${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}
  146: 	    COPYONLY)
  147: 	ELSE ("${SPECFILE_EXT}" STREQUAL ".spec")
  148: 	  # This is a to-be-configured spec file
  149: 	  GET_FILENAME_COMPONENT(SPECFILE_NAME ${SPECFILE_PATH} NAME_WE)
  150: 	  SET(SPECFILE_NAME "${SPECFILE_NAME}.spec")
  151: 	  MESSAGE(STATUS "Configuring spec file <${SPECFILE_PATH}> --> <${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}>")
  152: 	  CONFIGURE_FILE(
  153: 	    ${SPECFILE_PATH} 
  154: 	    ${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}
  155: 	    @ONLY)
  156: 	ENDIF ("${SPECFILE_EXT}" STREQUAL ".spec")
  157:       ENDIF("${ARGV1}" STREQUAL "")
  158:             
  159:       ADD_CUSTOM_TARGET(${RPMNAME}_srpm
  160: 	COMMAND cpack -G TGZ --config CPackSourceConfig.cmake
  161: 	COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz ${RPM_ROOTDIR}/SOURCES    
  162: 	COMMAND ${RPMTools_RPMBUILD_EXECUTABLE} -bs --define=\"_topdir ${RPM_ROOTDIR}\" --buildroot=${RPM_ROOTDIR}/tmp ${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME} 
  163: 	)
  164:       
  165:       ADD_CUSTOM_TARGET(${RPMNAME}_rpm
  166: 	COMMAND cpack -G TGZ --config CPackSourceConfig.cmake
  167: 	COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz ${RPM_ROOTDIR}/SOURCES    
  168: 	COMMAND ${RPMTools_RPMBUILD_EXECUTABLE} -bb --define=\"_topdir ${RPM_ROOTDIR}\" --buildroot=${RPM_ROOTDIR}/tmp ${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME} 
  169: 	)  
  170:     ENDMACRO(RPMTools_ADD_RPM_TARGETS)
  171: 
  172:   ELSE (RPMTools_RPMBUILD_FOUND)
  173:     SET(RPMTools FALSE)
  174:   ENDIF (RPMTools_RPMBUILD_FOUND)  
  175:   
  176: ENDIF (UNIX)
  177:   

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>