blob: 4eafdf3785c6a5a4fe0018fe0ced4203df5b717f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
#!/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 .*@Copyright 1999-$(date '+%Y') Gentoo Authors@" "${PN}-9999.ebuild"
sed -i "/^MY_RELEASEDATE=/s/.*/MY_RELEASEDATE=\"${RELEASEDATE}\"/" "${PN}-9999.ebuild"
sed -i "/SRC_URI/s@raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases@github.com/SELinuxProject/selinux/releases/download@" "${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;
|