summaryrefslogtreecommitdiff
path: root/resources/scripts/build/release/u-boot-libre
blob: 7aaff3bf51a77a0f7aabab661ef18ca104f1c1d1 (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
#!/usr/bin/env bash

#
#  helper script: generate deblobbed stable u-boot source code releases
#
#	Copyright (C) 2020,2021 Leah Rowe <info@minifree.org>
#	Copyright (C) 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

[ "x${DEBUG+set}" = 'xset' ] && set -v
set -u -e

revision="r1"

supported_uboot_versions=" \
	2021.07 \
"

usage()
{
	progname="resources/scripts/build/release/u-boot-libre"

	printf "Usage:\n"
	printf "\t%s                  # %s\n" \
	       "${progname}" \
	       "Release deblobbed u-boot tarballs for all supported versions"
	printf "\t%s [version]        # %s\n" \
	       "${progname}" \
	       "Release deblobbed u-boot tarballs for the given versions"
	printf "\t%s --list-versions  # %s\n" \
	       "${progname}" \
	       "List supported u-boot versions"
	printf "\t%s --help           # %s\n" \
	       "${progname}" \
	       "Prints this help"
}

release_deblobbed_uboot()
{
	version="$1"

	topdir="$(realpath $(dirname $(realpath $0))/../../../../)"
	versiondir="${topdir}/release/u-boot-libre/${version}-${revision}"
	tmpdir="${versiondir}/u-boot-libre-${version}-${revision}"
	tarball="${tmpdir}.tar"

	printf "Building source code archive, version %s revision %s\n" \
	       "${version}" "${revision}"

	cd "${topdir}"
	"${topdir}/download" u-boot "v${version}"

	rm -rf \
	   "${tmpdir}/" \
	   "${tarball}" \
	   "${tarball}.lz" \
	   "${tarball}.xz"

	mkdir -p "$(dirname ${tmpdir})"
	cp -R "u-boot/u-boot/" "${tmpdir}"

	rm -rf ${tmpdir}/.git ${tmpdir}/.gitignore
	make -C ${tmpdir} distclean

	prefix="$(dirname ${tmpdir} | sed 's#^/*##')/"
	tar cf "${tarball}" "${tmpdir}" \
	    --transform="s#${prefix}##" \
	    --format=gnu \
	    --sort=name \
	    --owner=0 --group=0 --numeric-owner \
	    --mtime="1970-01-01" \

	lzip -9 --keep -vv "${tarball}"
	xz   -9 --keep -vv "${tarball}"

	rm -rf "${tmpdir}/"

	printf "Source code archives available at:\n\t%s\n\t%s\n\t%s\n" \
	       "${tarball}" \
	       "${tarball}.lz" \
	       "${tarball}.xz"
}

if [ $# -eq 0 ] ; then
	for version in ${supported_uboot_versions} ; do
		release_deblobbed_uboot "${version}"
	done
	exit 0
elif [ $# -eq 1 -a "$1" == "--help" ] ; then
	usage
	exit 0
elif [ $# -eq 1 -a "$1" == "--list-versions" ] ; then
	for version in ${supported_uboot_versions} ; do
		printf "${version}\n"
	done
	exit 0
elif [ $# -eq 1 ] ; then
	found=0
	for revision in ${supported_uboot_revisions} ; do
		if [ "${revision}" = "$1" ] ; then
			release_deblobbed_uboot "$1"
			exit 0
		fi
	done

	printf "Error: Version '${1}' is not supported\n"

	exit 1
fi

exit 0