Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/rpms/buildrpm.sh
blob: 19db988fa261daac42bd3d09b8b106d12b4fe2f1 (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
#!/bin/bash
#
#    Copyright (C) 2012  Ruben Rodriguez <ruben@trisquel.info>
#
#    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 2 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, write to the Free Software
#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
#

#    This script builds Dextrose patched, Sugar rpms from git repositories
#    Requirements: git, yum-utils, rpmbuild, patch, libtool, intltool, createrepo
#
#

if [ $# != 2 ]
then
    echo Usage: sh $0 version package
    echo Example: sh $0 0.94.1 sugar-toolkit
    exit 1
fi

# Let's make sure we have all we need
yum -y install git yum-utils rpmbuild patch libtool intltool createrepo

WD=$PWD
VERSION=$1
PACKAGE=$2
FUZZ=20
ARCH=$(rpm -q glibc |sed 's/.*\.//;s/i686/i386/')
TEST=$(mktemp -d)

rm -rf ~/rpmbuild/SOURCES ~/rpmbuild/SPECS

mkdir -p ~/rpmbuild/BUILD ~/rpmbuild/BUILDROOT ~/rpmbuild/RPMS ~/rpmbuild/SOURCES ~/rpmbuild/SPECS/$PACKAGE ~/rpmbuild/SRPMS


cp dextrose/$PACKAGE.spec ~/rpmbuild/SPECS/$PACKAGE/
[ $PACKAGE = "sugar-toolkit" ] && cp $PACKAGE/macros.sugar ~/rpmbuild/SOURCES/

if [ $PACKAGE = "sugar-toolkit-gtk3" ]
	then
	cp dextrose/macros.sugar ~/rpmbuild/SOURCES/
        #sugar-toolkit-gtk3 has a different git setup
	git clone git://git.sugarlabs.org/sugar-toolkit-gtk3/sugar-toolkit-gtk3.git ~/rpmbuild/SOURCES/$PACKAGE-$VERSION
	else
	git clone git://git.sugarlabs.org/$PACKAGE/mainline.git ~/rpmbuild/SOURCES/$PACKAGE-$VERSION
	fi

#Create patches between dx and sugar

cd ~/rpmbuild/SOURCES/$PACKAGE-$VERSION
git checkout v$VERSION
cd $WD
#We change version from spec using parameter
sed "s/Version:.*/Version: $VERSION/" ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec -i
#sed "s/Release:.*/Release: $(date +%Y%m%d)dx3/" ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec -i
# Since sugar and sugar-artwork DX3 specs *already* have epoch set to the
# date number, we will continue that hack for DX3. BUT THIS IS WRONG!!!
#sed '/^Epoch:/d' -i ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec
#sed "/^Name:/s/$/\nEpoch: $(date +%Y%m%d)/" -i ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec

# Let's allow some fuzz
sed "1s/$/\n%define _default_patch_fuzz $FUZZ/" -i ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec

cd ~/rpmbuild/SOURCES/$PACKAGE-$VERSION
[ $PACKAGE = "sugar-artwork" ] && sed  '/GNOME_COMPILE_WARNINGS/d' configure.ac -i
sh autogen.sh
cd ..
tar -jcvf $PACKAGE-$VERSION.tar.bz2 $PACKAGE-$VERSION
cd $WD

############################################################################

# Set tokens for adding patches to the spec file
sed "/^Source0/s/$/\n\#ListPatches/" ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec -i
sed "/^%setup/s/$/\n\#MakePatches/" ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec -i
sed "/^Patch/d" ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec -i
sed "/^%*patch/d" ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec -i

# number, name, string, strip
addpatch(){
sed "/ListPatches/s%^%Patch$1: $3\n%" ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec -i
sed "/MakePatches/s/^/%patch$1 -p$4 -b $2\n/" ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec -i
}

PATCHESTMP=$(mktemp -d)
git format-patch -o $PATCHESTMP v$VERSION

rm -rf ~/rpmbuild/RPMS/$PACKAGE-$VERSION.*patches
cp ~/rpmbuild/SOURCES/$PACKAGE-$VERSION $TEST/src -a
cd $TEST/src
for i in $PATCHESTMP/*patch
do
    file=${i//*\//}
    number=${file//-*/}
    log=$(patch -N -t -F$FUZZ --dry-run -p1 < $i 2>&1)
    if [ $? = 0 ]
    then
        echo APPLIED PATCH: $file | tee -a ~/rpmbuild/RPMS/$PACKAGE-$VERSION.appliedpatches
        patch -F$FUZZ -p1 < $i
        cp $i ~/rpmbuild/SOURCES/
        addpatch $number .$number "$file" 1
    else
        if echo $log |grep -q "previously applied"
        then
            echo ALREADY APPLIED: $file | tee -a ~/rpmbuild/RPMS/$PACKAGE-$VERSION.failedpatches
        else
            echo FAILED TO APPLY: $file | tee -a ~/rpmbuild/RPMS/$PACKAGE-$VERSION.failedpatches
        fi
    fi
done
cd $WD
rm -rf $TEST

# Clean tokens
sed '/ListPatches/d; /MakePatches/d' ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec -i

############################################################################

grep BuildRequires ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec |sed s/.*\ //|xargs yum -y install
rpmbuild --clean ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec
if  rpm -q glibc |grep -q armv7
then
    rpmbuild --target armv7tel -ba ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec
else
    rpmbuild -ba ~/rpmbuild/SPECS/$PACKAGE/$PACKAGE.spec
fi