summaryrefslogtreecommitdiff
blob: a4f380d6328dbe9914f2205ed82afef4faddd623 (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
#!/bin/bash

PN="glibc"
PV=${1%/}
pver=$2

if [[ -z ${PV} ]] ; then
	echo "Usage: $0 glibc-version patchset-version-to-be-created"
	echo "Please read the script before trying to use it :)"
	exit 1
fi

# check that we're in the root of a glibc git repo

if [[ ! -f libc-abis ]] || [[ ! -d .git ]] ; then
	echo "Error: You need to call this script in the main directory of a Gentoo glibc git clone"
	exit 1
fi

# check that we're on a branch gentoo/${PV}

mybranchinfo=$(git status --porcelain -b|grep '^##')
mybranch=$(echo ${mybranchinfo}|sed -e 's:^## ::' -e 's:\.\.\..*$::')
if [[ ! "gentoo/${PV}" == "${mybranch}" ]] ; then
	echo "Error: Your git repository is on the incorrect branch ${mybranch}; should be gentoo/${PV}"
	exit 1
fi

# check that the working directory is clean

mystatusinfo=$(git status --porcelain)
if [[ ! -z "${mystatusinfo}" ]] ; then
	echo "Error: Your working directory is not clean"
	exit 1
fi

# check if the tag already exists

mytaginfo=$(git tag -l|grep "gentoo/glibc-${PV}-${pver}")
if [[ ! -z "${mytaginfo}" ]] ; then
	echo "Error: A tag corresponding to this patch level already exists (gentoo/glibc-${PV}-${pver})"
	exit 1
fi

# luckily glibc git has no /tmp dir and no tar.xz files, but let's better check and be pathologically careful

if [[ -e tmp ]] || [[ -e ${PN}-${PV}-patches-${pver}.tar.xz ]] ; then
	echo "Error: tmp or ${PN}-${PV}-patches-${pver}.tar.xz exists in git"
	exit 1
fi
rm -rf tmp
rm -f ${PN}-${PV}-*.tar.xz

for myname in 0*.patch ; do
	if [[ -e ${myname} ]]; then
		echo "Error: ${myname} exists in git"
		exit 1
	fi
done
rm -f 0*.patch

mkdir -p tmp/patches

# copy README.Gentoo.patches

cp scripts/gentoo/README.Gentoo.patches tmp/ || exit 1

# create and rename patches

if [[ "${PV}" == "9999" ]]; then
	# we're working with master, start from upstream master
	startpoint="master"
else
	# release branch, start from upstream release tag
	startpoint="glibc-${PV}"
fi

git format-patch ${startpoint}..HEAD > /dev/null

# remove all patches where the summary line starts with [no-tarball] or [no-patch]

rm -f 0???-no-tarball-*.patch
rm -f 0???-no-patch-*.patch

# move patches into temporary directory

mv 0*.patch tmp/patches/ || exit 1

# copy support files

cp -r scripts/gentoo/extra tmp/ || exit 1

# add a history file

git log --stat --decorate ${startpoint}..HEAD > tmp/patches/README.history || exit 1

# package everything up

tar -Jcf ${PN}-${PV}-patches-${pver}.tar.xz \
	-C tmp patches extra README.Gentoo.patches || exit 1
rm -r tmp

du -b *.tar.xz

# tag the commit

git tag -s -m "Gentoo patchset ${PV}-${pver}" "gentoo/glibc-${PV}-${pver}"