1############################################################################# 2## Kwave - KwaveRPMSupport.cmake 3## ------------------- 4## begin : Sun Jun 10 2007 5## copyright : (C) 2007 by Thomas Eschenbacher 6## email : Thomas.Eschenbacher@gmx.de 7############################################################################# 8# 9############################################################################# 10# # 11# Redistribution and use in source and binary forms, with or without # 12# modification, are permitted provided that the following conditions # 13# are met: # 14# # 15# 1. Redistributions of source code must retain the above copyright # 16# notice, this list of conditions and the following disclaimer. # 17# 2. Redistributions in binary form must reproduce the above copyright # 18# notice, this list of conditions and the following disclaimer in the # 19# documentation and/or other materials provided with the distribution. # 20# # 21# For details see the accompanying cmake/COPYING-CMAKE-SCRIPTS file. # 22# # 23############################################################################# 24 25############################################################################# 26### some needed programs ### 27 28FIND_PROGRAM(TAR_EXECUTABLE NAMES tar) # we need tar-1.16 or newer ! 29FIND_PROGRAM(RPM_EXECUTABLE NAMES rpm) 30FIND_PROGRAM(RPMBUILD_EXECUTABLE NAMES rpmbuild) 31FIND_PROGRAM(BZIP2_EXECUTABLE NAMES bzip2) 32 33############################################################################# 34### determine all variables in the kwave.spec.in ### 35 36SET(RPM_RELEASE "1") 37SET(RPM_FULL_VERSION "${KWAVE_VERSION}-${RPM_RELEASE}") 38 39############################################################################# 40### generate the .changes file ### 41 42SET(_changes ${DISTFILES_DIR}/kwave.changes) 43ADD_CUSTOM_COMMAND(OUTPUT ${_changes} 44 COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bin/make-specfile-changelog.pl 45 ${CMAKE_CURRENT_SOURCE_DIR}/CHANGES 46 ${_changes} 47 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/CHANGES 48 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/make-specfile-changelog.pl 49) 50 51SET(KWAVE_ADDITIONAL_CLEAN_FILES ${KWAVE_ADDITIONAL_CLEAN_FILES} ${_changes}) 52 53############################################################################# 54### generate the .spec file ### 55 56SET(_specfile_without_changelog ${CMAKE_CURRENT_BINARY_DIR}/kwave.spec.no-chglog) 57SET(_specfile ${DISTFILES_DIR}/kwave.spec) 58CONFIGURE_FILE( 59 ${CMAKE_CURRENT_SOURCE_DIR}/kwave.spec.in 60 ${_specfile_without_changelog} 61 @ONLY 62) 63 64ADD_CUSTOM_COMMAND(OUTPUT ${_specfile} 65 COMMAND ${CAT_EXECUTABLE} ${_specfile_without_changelog} > ${_specfile} 66 COMMAND ${CAT_EXECUTABLE} ${_changes} >> ${_specfile} 67 DEPENDS ${_specfile_without_changelog} ${_changes} 68) 69 70ADD_CUSTOM_TARGET(specfile 71 DEPENDS ${_specfile} 72) 73 74############################################################################# 75### "make tarball" ### 76 77SET(_tarball ${DISTFILES_DIR}/kwave-${RPM_FULL_VERSION}.tar) 78SET(_tarball_bz2 ${_tarball}.bz2) 79 80SET(_git "${CMAKE_SOURCE_DIR}/.git") 81IF (EXISTS ${_git}) 82 FIND_PROGRAM(GIT_EXECUTABLE NAMES git) 83 IF (GIT_EXECUTABLE) 84 MESSAGE(STATUS "Found git: ${GIT_EXECUTABLE}") 85 SET(files_lst "${CMAKE_BINARY_DIR}/files.lst") 86 ADD_CUSTOM_COMMAND(OUTPUT ${files_lst} 87 COMMENT "Building file list from local .git repository" 88 COMMAND "${GIT_EXECUTABLE}" ls-tree -r --name-only HEAD ">" ${files_lst} 89 COMMAND test -e po && find po -name \\*.po ">>" ${files_lst} 90 COMMAND find doc -type f -name \\*.txt ">>" ${files_lst} 91 COMMAND find doc -type f -name index.docbook ">>" ${files_lst} 92 COMMAND find doc -type f -name \\*.png ">>" ${files_lst} 93 COMMAND find . -type f -name \\*.spec ">>" ${files_lst} 94 COMMAND cat ${files_lst} | sort | uniq > ${files_lst}.tmp 95 COMMAND mv ${files_lst}.tmp ${files_lst} 96 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 97 ) 98 SET(file_selection "--files-from=${files_lst}") 99 ELSE (GIT_EXECUTABLE) 100 MESSAGE(STATUS "Warning: .git exists but git program not found") 101 ENDIF (GIT_EXECUTABLE) 102ELSE (EXISTS ${_git}) 103 MESSAGE(STATUS "No git version control files") 104ENDIF (EXISTS ${_git}) 105IF (NOT file_selection) 106 SET(file_selection ".") 107ENDIF (NOT file_selection) 108 109ADD_CUSTOM_COMMAND(OUTPUT ${_tarball_bz2} 110 COMMAND ${TAR_EXECUTABLE} 111 -c 112 --exclude=.git --exclude=testfiles --exclude=*~ 113 --transform=s+^./++g 114 --transform=s+^+kwave-${KWAVE_VERSION}/+g 115 --owner=root --group=root --mode=a+rX,go-w 116 -C ${CMAKE_SOURCE_DIR} 117 -f ${_tarball} 118 ${file_selection} 119 COMMAND ${TAR_EXECUTABLE} --append -f ${_tarball} 120 --owner=root --group=root --mode=a+rX,go-w 121 -C ${DISTFILES_DIR} 122 --transform=s+^+kwave-${KWAVE_VERSION}/+g 123 kwave.spec 124 COMMAND ${CMAKE_COMMAND} -E remove -f ${_tarball_bz2} 125 COMMAND ${BZIP2_EXECUTABLE} ${_tarball} 126 DEPENDS ${_specfile} ${files_lst} 127) 128 129ADD_CUSTOM_TARGET(tarball 130 DEPENDS ${_tarball_bz2} 131) 132 133SET(KWAVE_ADDITIONAL_CLEAN_FILES ${KWAVE_ADDITIONAL_CLEAN_FILES} ${_tarball_bz2}) 134 135############################################################################# 136### source RPM ### 137 138EXECUTE_PROCESS( 139 COMMAND ${RPM_EXECUTABLE} -E %{_topdir} 140 OUTPUT_VARIABLE _rpm_topdir 141 OUTPUT_STRIP_TRAILING_WHITESPACE 142) 143 144SET(_src_rpm ${_rpm_topdir}/SRPMS/kwave-${RPM_FULL_VERSION}.src.rpm) 145 146ADD_CUSTOM_COMMAND(OUTPUT ${_src_rpm} 147 COMMAND ${CMAKE_COMMAND} -E make_directory ${_rpm_topdir}/{SPECS,SOURCES,RPMS,SRPMS,BUILD} 148 COMMAND ${CMAKE_COMMAND} -E copy_if_different 149 ${_specfile} ${_rpm_topdir}/SPECS/kwave-${RPM_FULL_VERSION}.spec 150 COMMAND ${CMAKE_COMMAND} -E copy_if_different 151 ${_tarball_bz2} ${_rpm_topdir}/SOURCES/kwave-${RPM_FULL_VERSION}.tar.bz2 152 COMMAND ${RPMBUILD_EXECUTABLE} -bs --nodeps 153 ${_rpm_topdir}/SPECS/kwave-${RPM_FULL_VERSION}.spec 154 DEPENDS ${_specfile} ${_tarball_bz2} 155) 156 157ADD_CUSTOM_TARGET(src_rpm 158 DEPENDS ${_src_rpm} ${_specfile} ${_changes} 159) 160 161############################################################################# 162### binary RPM for this architecture ### 163 164ADD_CUSTOM_TARGET(rpm 165 COMMAND ${RPMBUILD_EXECUTABLE} --rebuild --nodeps ${_src_rpm} 166 DEPENDS ${_src_rpm} ${_specfile} 167) 168 169############################################################################# 170### add files to the list of distribution files ### 171 172SET(KWAVE_DISTFILES 173 ${KWAVE_DISTFILES} 174 ${_tarball_bz2} 175 ${_specfile} 176 ${_changes} 177) 178 179############################################################################# 180############################################################################# 181