aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaman <jason@perfinion.com>2017-07-12 12:41:00 +0800
committerJason Zaman <jason@perfinion.com>2018-04-26 19:19:08 +0800
commitabe6a848889dabe8e4ac100e2999a402913302a2 (patch)
tree733b77d5044534ee0116690fc41953e9956b6bb5
parentsysnetwork: put systemd_read_resolved_runtime in an ifdef (diff)
downloadhardened-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.sh137
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;
+