summaryrefslogtreecommitdiffstats
path: root/releaseme
blob: 24adbbd69a799f236f3192430410021bce7450f0 (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
#!/bin/bash
# release the firmware image, build RPMs, release the RPMs, commit and
# push your changes to olpc-firmware.
set -e

usage() {
    me=$(basename $0)
    echo "Usage:  $me [option]"
    echo "    options"
    echo "        --dry-run    do release steps without publishing files"
}

DRY_RUN=no
NO_RPM=no

while [ $# -gt 0 ]; do
    case $1 in
	--dry-run)
	    DRY_RUN=yes
	    ;;
	--no-rpm)
	    NO_RPM=yes
	    ;;
	--help)
	    usage
	    exit 0
	    ;;
	*)
	    echo $(basename $0): bad option argument $1
	    usage
	    exit 1
	    ;;
    esac
    shift
done

if [ ! -d roms ]; then
    echo "releaseme: bailing out, no roms directory, have you done buildme?"
    exit 2
fi

if [ $DRY_RUN = no ]; then
    WC=$(git diff | wc --lines)
    if [ $WC -ne 0 ]; then
	echo "releaseme: bailing out, uncommitted changes to builder"
	exit 2
    fi
fi

. ./varsme
ROM_VERSION=`cat $VER_FILE`
ROM_FILE=$ROM_VERSION.rom

(cd roms && md5sum $ROM_FILE > $ROM_FILE.md5)
(cd roms && sha1sum $ROM_FILE > $ROM_FILE.sha1)

# copy over the files to their home.
if [ $DRY_RUN = no ]; then
    ssh dev.laptop.org mkdir -p /var/www/firmware/$ROM_VERSION
    scp roms/${ROM_FILE} roms/${ROM_FILE}.md5 roms/${ROM_FILE}.sha1 \
        dev.laptop.org:/var/www/firmware/$ROM_VERSION
    ssh dev.laptop.org "cd /var/www/firmware && ln -nsf $ROM_VERSION LATEST && ln -nsf $ROM_VERSION LATEST.$BUNDLE_SUFFIX"
fi

# automatic changelog entry for rpm
ME="Somebody <$(whoami)@$(hostname)>"
if [ -f rpm/$(whoami).mail ]; then
    ME=$(cat rpm/$(whoami).mail)
fi
CE=$(TZ=US/Eastern date "+%a %b %d %Y")

cp openfirmware/cpu/x86/pc/olpc/images/Edge1-8k-EQ-Comp-Amp-Short.wav \
   roms/jingle.wav
cp rpm/README.openfirmware roms/README.openfirmware.${BUNDLE_SUFFIX}
mkdir -p build
rpmbuild \
    --define "olpc_firmware_version_prefix ${ROM_VERSION:0:2}" \
    --define "olpc_firmware_version_suffix ${ROM_VERSION:2:3}" \
    --define "olpc_firmware_version ${ROM_VERSION}" \
    --define "olpc_changelog_header * ${CE} ${ME}" \
    --define "olpc_model ${MODEL}" \
    --define "bundle_suffix ${BUNDLE_SUFFIX}" \
    --define "_sourcedir `pwd`/roms" \
    --define "_specdir `pwd`" \
    --define "_builddir `pwd`/build" \
    --define "_srcrpmdir `pwd`/roms" \
    --define "_rpmdir `pwd`/roms" \
    --define "dist .olpc2" \
    --define "olpc 2" \
    -ba ./rpm/olpc-firmware.spec

if [ $NO_RPM = no ]; then
    if [ $DRY_RUN = no ]; then
	for DIRECTORY in $DROPBOX; do
	    scp ./roms/olpc-firmware-*.unsigned.src.rpm \
		./roms/noarch/olpc-firmware-*.unsigned.noarch.rpm \
		dev.laptop.org:~rsmith/public_rpms/${DIRECTORY}
	done
    fi
else
    echo "releaseme: skipped release of RPM artefacts"
fi

if [ $DRY_RUN = no ]; then
    git tag ${ROM_VERSION} || git tag --force ${ROM_VERSION}.$(date +%s)
    git push --tags
    echo "releaseme: done, next you may announce"
else
    echo "releaseme: dry run done"
fi