diff options
author | Jason Zaman <jason@perfinion.com> | 2017-07-12 12:41:00 +0800 |
---|---|---|
committer | Jason Zaman <jason@perfinion.com> | 2018-04-26 19:19:08 +0800 |
commit | abe6a848889dabe8e4ac100e2999a402913302a2 (patch) | |
tree | 733b77d5044534ee0116690fc41953e9956b6bb5 | |
parent | sysnetwork: put systemd_read_resolved_runtime in an ifdef (diff) | |
download | hardened-refpolicy-abe6a848.tar.gz hardened-refpolicy-abe6a848.tar.bz2 hardened-refpolicy-abe6a848.zip |
gentoo: Add script to make userspace releases
-rw-r--r-- | gentoo/release-userspace.sh | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/gentoo/release-userspace.sh b/gentoo/release-userspace.sh new file mode 100644 index 00000000..be7924a1 --- /dev/null +++ b/gentoo/release-userspace.sh @@ -0,0 +1,137 @@ +#!/bin/sh + +# Copyright 2013,2014 Sven Vermeulen <swift@gentoo.org> +# Copyright 2017-2018 Jason Zaman <perfinion@gentoo.org> +# Licensed under the GPL-3 license + +RELEASEDATE="${1}"; +NEWVERSION="${2}"; + +PACKAGES=" +sys-libs/libsepol +sys-libs/libselinux +sys-libs/libsemanage +sys-apps/checkpolicy +sys-apps/policycoreutils +sys-apps/selinux-python +sys-apps/semodule-utils +sys-apps/secilc +sys-apps/mcstrans +sys-apps/restorecond +" +# app-admin/setools not released together +# dev-python/sepolgen became selinux-python in 2.7 release + +usage() { + echo "Usage: $0 <release date> <newversion>"; + echo ""; + echo "Example: $0 20170101 2.7_rc1" + echo ""; + echo "The script will update the live ebuilds then copy towards the"; + echo "<newversion>." + echo ""; + echo "The following environment variables must be declared correctly for the script"; + echo "to function properly:"; + echo " - GENTOOX86 should point to the gentoo-x86 checkout"; + echo " E.g. export GENTOOX86=\"/usr/portage/\""; +} + +assertDirEnvVar() { + VARNAME="${1}"; + eval VARVALUE='$'${VARNAME}; + if [ -z "${VARVALUE}" ] || [ ! -d "${VARVALUE}" ]; + then + echo "Variable ${VARNAME} (value \"${VARVALUE}\") does not point to a valid directory."; + exit 1; + fi +} + +die() { + printf "\n"; + echo "!!! Error: $*"; + exit 2; +}; + +# set the release date in the live ebuilds so it will be correct when copying to the new version +setLiveReleaseDate() { + local PKG + local PN + cd ${GENTOOX86} + echo "Setting release date var in live ebuilds... " + + for PKG in $PACKAGES; + do + cd "${GENTOOX86}/${PKG}" + PN="${PKG#*/}" + [[ -f "${PN}-9999.ebuild" ]] || continue; + + # make sure the tree is clean so we dont commit anything else by mistake + [[ -z "$(git status --porcelain -- .)" ]] || die + git diff --cached --exit-code >/dev/null 2>&1 || die "Uncommitted changes" + + # update header and release date + sed -i "s@Copyright 1999-201. Gentoo Foundation@Copyright 1999-$(date '+%Y') Gentoo Foundation@" "${PN}-9999.ebuild" + sed -i "/^MY_RELEASEDATE=/s/.*/MY_RELEASEDATE=\"${RELEASEDATE}\"/" "${PN}-9999.ebuild" + + # commit changes + git add "${PN}-9999.ebuild" + git --no-pager diff --cached + repoman -q full + if [[ $? -eq 0 ]]; then + repoman -q commit -m "$PKG: update live ebuild" + else + git reset -- . + fi + done + echo -e "\ndone ${PN}\n" +} + +# Create the new ebuilds +createEbuilds() { + local PKG + local PN + cd ${GENTOOX86} + echo "Creating new ebuilds based on 9999 version... " + + for PKG in $PACKAGES; + do + cd "${GENTOOX86}/${PKG}" + PN="${PKG#*/}" + [[ -f "${PN}-9999.ebuild" ]] || continue + [[ -f "Manifest" ]] || continue + + # make sure the tree is clean so we dont commit anything else by mistake + [[ -z "$(git status --porcelain -- .)" ]] || die + git diff --cached --exit-code >/dev/null 2>&1 || die "Uncommitted changes" + + sed -i -e "/${PN}-${NEWVERSION//_/-}/d" Manifest || die + cp ${PN}-9999.ebuild ${PN}-${NEWVERSION}.ebuild || die + + repoman -q manifest + git add Manifest ${PN}-${NEWVERSION}.ebuild + + #git --no-pager diff --cached + repoman -q full + if [[ $? -eq 0 ]]; then + repoman -q commit -m "$PKG: bump to ${NEWVERSION}" + else + git reset -- . + fi + done + echo -e "\ndone ${PN}\n" +} + +if [ $# -ne 2 ]; +then + usage; + exit 3; +fi + +# Assert that all needed information is available +assertDirEnvVar GENTOOX86; + +setLiveReleaseDate + +# Create ebuilds +createEbuilds; + |