blob: 5dc12ef1c42d47aeef5affffefd14946ce4dd5ba [file] [log] [blame]
# Koji and Bodhi operation for Fedora developers.
#
# To use: INCLUDE(FedoraDeveloper), and DEVELOPER_SETTING file exists
# Include: RPM
#
#===================================================================
# Variables:
# KOJI_DEPENDS: Files that koji build targets depend on.
# KOJI_CVS_PATH: The path for KOJI build.
# Default: ./
#
# RPM_RELEASE_SUMMARY: Summary of latest change, used in CVS message and Bodhi
# comment.
#
# CVS_DIST_TAGS: Distribution tags such as F-10, EL-5 to be committed to CVS
# for koji or plague build. By default, devel is always built,
# so no need to explicitly declare it.
# Default: built devel.
#
# BODHI_DEPENDS: Files that bodhi targets depends on.
# BODHI_DIST_TAGS: Distribution tags such as fc9, fc10 to be committed to
# Bodhi.
# Default: Derived from CVS_DIST_TAGS.
#
#===================================================================
# Targets:
# koji_build_scratch: koji scratch build.
# koji_submit: Submit to koji
# koji_build: Start koji build
# bodhi_new: Submit to bodhi
#
INCLUDE(RPM)
SET(RAWHIDE_VER 13)
IF(NOT DEFINED KOJI_CVS_PATH)
SET(KOJI_CVS_PATH "./")
ELSEIF (KOJI_CVS_PATH STREQUAL "")
SET(KOJI_CVS_PATH "./")
ENDIF(NOT DEFINED KOJI_CVS_PATH)
#====================================================================
# Koji (Fedora build system)
#
# Koji submit
SET (KOJI_SUBMISSION_CMD "")
IF (DEFINED RPM_RELEASE_SUMMARY)
SET (KOJI_SUBMISSION_CMD
"${KOJI_CVS_PATH}/${PROJECT_NAME}/common/cvs-import.sh -m \"${RPM_RELEASE_SUMMARY}\" ${SRPM_FILE}"
)
FOREACH(_dist_tag ${CVS_DIST_TAGS})
SET (KOJI_SUBMISSION_CMD
"${KOJI_SUBMISSION_CMD}\;"
"${KOJI_CVS_PATH}/${PROJECT_NAME}/common/cvs-import.sh -b ${_dist_tag} -m \"${RPM_RELEASE_SUMMARY}\" ${SRPM_FILE}"
)
ENDFOREACH(_dist_tag)
ELSE(DEFINED RPM_RELEASE_SUMMARY)
SET (KOJI_SUBMISSION_CMD
"${KOJI_CVS_PATH}/${PROJECT_NAME}/common/cvs-import.sh ${SRPM_FILE}"
)
FOREACH(_dist_tag ${CVS_DIST_TAGS})
SET (KOJI_SUBMISSION_CMD
"${KOJI_SUBMISSION_CMD}\;"
"${KOJI_CVS_PATH}/${PROJECT_NAME}/common/cvs-import.sh -b ${_dist_tag} ${SRPM_FILE}"
)
ENDFOREACH(_dist_tag)
ENDIF(DEFINED RPM_RELEASE_SUMMARY)
SET (KOJI_BUILD_CMD
"cd ${KOJI_CVS_PATH}/${PROJECT_NAME} && cvs up && cd devel && make build && cd .."
)
SET (KOJI_SCRATCH_BUILD_CMD
"koji build --scratch dist-f${RAWHIDE_VER} ${SRPM_FILE}"
)
FOREACH(_dist_tag ${CVS_DIST_TAGS})
SET (KOJI_BUILD_CMD
"${KOJI_BUILD_CMD} && cd ${_dist_tag} && make build && cd .."
)
STRING(REGEX MATCH "F-([0-9]*)"
_is_fedora_tag ${_dist_tag})
STRING(REGEX MATCH "EL-([0-9]*)"
_is_epel_tag ${_dist_tag})
IF (_is_fedora_tag)
STRING(REGEX REPLACE "F-([0-9]*)" "\\1"
_curr_tag ${_dist_tag})
SET (KOJI_SCRATCH_BUILD_CMD
"${KOJI_SCRATCH_BUILD_CMD} && koji build --scratch dist-f${_curr_tag} ${SRPM_FILE}"
)
IF(NOT DEFINED BODHI_DIST_TAGS)
SET(_bodhi_dist_tags ${_bodhi_dist_tags} "fc${_curr_tag}")
ENDIF(NOT DEFINED BODHI_DIST_TAGS)
ELSEIF (_is_epel_tag)
STRING(REGEX REPLACE "EL-([0-9]*)" "\\1"
_curr_tag ${_dist_tag})
SET (KOJI_SCRATCH_BUILD_CMD
"${KOJI_SCRATCH_BUILD_CMD} && koji build --scratch dist-${_curr_tag}E-epel-testing-candidate ${SRPM_FILE}"
)
IF(NOT DEFINED BODHI_DIST_TAGS)
SET(_bodhi_dist_tags ${_bodhi_dist_tags} "el${_curr_tag}")
ENDIF(NOT DEFINED BODHI_DIST_TAGS)
ENDIF(_is_fedora_tag)
ENDFOREACH(_dist_tag)
#MESSAGE(KOJI_SCRATCH_BUILD_CMD=${KOJI_SCRATCH_BUILD_CMD})
ADD_CUSTOM_TARGET(koji_scratch_build
COMMAND eval ${KOJI_SCRATCH_BUILD_CMD}
DEPENDS ${KOJI_DEPENDS} ${SRPM_FILE} ${KOJI_CVS_PATH}
COMMENT "Start Koji scratch build"
VERBATIM
)
#MESSAGE(KOJI_SUBMISSION_CMD=${KOJI_SUBMISSION_CMD})
ADD_CUSTOM_TARGET(koji_submit
COMMAND eval ${KOJI_SUBMISSION_CMD}
COMMAND cd ${KOJI_CVS_PATH}/${PROJECT_NAME} && cvs up
DEPENDS ${KOJI_DEPENDS} ${SRPM_FILE} ${KOJI_CVS_PATH}
COMMENT "Submitting to Koji"
VERBATIM
)
#MESSAGE("KOJI_BUILD_CMD=${KOJI_BUILD_CMD}")
ADD_CUSTOM_TARGET(koji_build
COMMAND eval "${KOJI_BUILD_CMD}"
COMMENT "Building on Koji"
VERBATIM
)
#====================================================================
# Bodhi (Fedora update system)
#
IF(DEFINED BODHI_DIST_TAGS)
SET(${_bodhi_dist_tags} ${BODHI_DIST_TAGS})
ENDIF(DEFINED BODHI_DIST_TAGS)
FOREACH(_bodhi_tag ${_bodhi_dist_tags})
IF (DEFINED BODHI_NEW_CMD)
SET (BODHI_NEW_CMD "${BODHI_NEW_CMD} && ")
ELSE ()
SET (BODHI_NEW_CMD "")
ENDIF ()
IF(DEFINED RPM_RELEASE_SUMMARY)
SET (BODHI_NEW_CMD
"${BODHI_NEW_CMD} bodhi --new --type=bugfix --comment=\"${RPM_RELEASE_SUMMARY}\" ${PROJECT_NAME}-${PRJ_VER_FULL}.${_bodhi_tag}"
)
ELSE(DEFINED RPM_RELEASE_SUMMARY)
SET (BODHI_NEW_CMD
"${BODHI_NEW_CMD} bodhi --new --type=bugfix ${PROJECT_NAME}-${PRJ_VER_FULL}.${_bodhi_tag}"
)
ENDIF(DEFINED RPM_RELEASE_SUMMARY)
ENDFOREACH(_bodhi_tag)
#MESSAGE(BODHI_NEW_CMD=${BODHI_NEW_CMD})
IF(DEFINED BODHI_NEW_CMD)
ADD_CUSTOM_TARGET(bodhi_new
COMMAND eval "${BODHI_NEW_CMD}"
DEPENDS ${BODHI_DEPENDS}
COMMENT "Send the new package to bodhi"
VERBATIM
)
ENDIF(DEFINED BODHI_NEW_CMD)
ADD_DEPENDENCIES(koji_scratch_build srpm)
ADD_DEPENDENCIES(koji_submit srpm)
ADD_DEPENDENCIES(koji_build srpm)