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