1 |
#! /bin/sh |
2 |
# |
3 |
# This is kernel build script for ubuntu 13.10's 3.11 kernel. |
4 |
# |
5 |
|
6 |
update_maintainer () { |
7 |
for i in debian*/control debian*/control.stub* |
8 |
do |
9 |
cp -p $i $i.orig |
10 |
sed -i -e 's/Maintainer: .*/Maintainer: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>/' -- $i |
11 |
touch -r $i.orig $i |
12 |
rm $i.orig |
13 |
done |
14 |
} |
15 |
|
16 |
die () { |
17 |
echo $1 |
18 |
exit 1 |
19 |
} |
20 |
|
21 |
ORIGINAL_FLAVOUR=`uname -r | cut -d - -f 3- | sed -e 's/generic-pae/generic/'` # e.g. generic server |
22 |
NEW_FLAVOUR=${ORIGINAL_FLAVOUR}-ccs |
23 |
echo "Building "${NEW_FLAVOUR}" from "${ORIGINAL_FLAVOUR}"." |
24 |
|
25 |
export CONCURRENCY_LEVEL=`grep -c '^processor' /proc/cpuinfo` || die "Can't export." |
26 |
|
27 |
apt-get -y install wget |
28 |
|
29 |
# Download TOMOYO Linux patches. |
30 |
mkdir -p /root/rpmbuild/SOURCES/ |
31 |
cd /root/rpmbuild/SOURCES/ || die "Can't chdir to /root/rpmbuild/SOURCES/ ." |
32 |
if [ ! -r ccs-patch-1.8.3-20150421.tar.gz ] |
33 |
then |
34 |
wget -O ccs-patch-1.8.3-20150421.tar.gz 'http://sourceforge.jp/frs/redir.php?f=/tomoyo/49684/ccs-patch-1.8.3-20150421.tar.gz' || die "Can't download patch." |
35 |
fi |
36 |
|
37 |
# Install kernel source packages. |
38 |
cd /usr/src/ || die "Can't chdir to /usr/src/ ." |
39 |
apt-get -y install fakeroot build-essential || die "Can't install packages." |
40 |
apt-get build-dep linux || die "Can't install packages." |
41 |
apt-get source linux-source-3.11.0 || die "Can't install kernel source." |
42 |
for i in `awk ' { if ( $1 != "Build-Depends:") next; $1 = ""; n = split($0, a, ","); for (i = 1; i <= n; i++) { split(a[i], b, " "); print b[1]; } } ' linux-3.11.0/debian/control`; do apt-get -y install $i; done |
43 |
|
44 |
# Apply patches and create kernel config. |
45 |
cd linux-3.11.0/ || die "Can't chdir to linux-3.11.0/ ." |
46 |
update_maintainer |
47 |
tar -zxf /root/rpmbuild/SOURCES/ccs-patch-1.8.3-20150421.tar.gz || die "Can't extract patch." |
48 |
patch -p1 < patches/ccs-patch-3.11-ubuntu-13.10.diff || die "Can't apply patch." |
49 |
rm -fR patches/ specs/ || die "Can't delete patch." |
50 |
for i in `find debian.master/ -type f -name '*'${ORIGINAL_FLAVOUR}'*'`; do cp -p $i `echo $i | sed -e 's/'${ORIGINAL_FLAVOUR}'/'${NEW_FLAVOUR}'/g'`; done |
51 |
for i in debian.master/config/*/config.common.*; do cat config.ccs >> $i; done |
52 |
rm debian.master/control.stub || die "Can't delete control.stub." |
53 |
make -f debian/rules debian.master/control.stub || die "Can't update control.stub." |
54 |
rm debian/control || die "Can't delete control." |
55 |
debian/rules debian/control || die "Can't update control." |
56 |
|
57 |
# Make modified header files go into local header package. |
58 |
patch -p0 << "EOF" || die "Can't patch link-headers." |
59 |
--- debian/scripts/link-headers |
60 |
+++ debian/scripts/link-headers |
61 |
@@ -39,4 +39,19 @@ |
62 |
done |
63 |
) |
64 |
|
65 |
+if [ $flavour == "NEW_FLAVOUR" ] |
66 |
+then |
67 |
+ cd $hdrdir/../../../../$symdir/usr/src/$symdir/include/linux/ |
68 |
+ for i in sched.h init_task.h security.h ccsecurity.h |
69 |
+ do |
70 |
+ rm -f $hdrdir/include/linux/$i |
71 |
+ cp -p $i $hdrdir/include/linux/$i |
72 |
+ done |
73 |
+ rm -f $hdrdir/include/net $hdrdir/security |
74 |
+ cd ../ |
75 |
+ tar -cf - net | tar -xf - -C $hdrdir/include/ |
76 |
+ cd ../ |
77 |
+ tar -cf - security | tar -xf - -C $hdrdir |
78 |
+fi |
79 |
+ |
80 |
exit |
81 |
EOF |
82 |
sed -i -e 's/NEW_FLAVOUR/'${NEW_FLAVOUR}'/' debian/scripts/link-headers || die "Can't patch link-headers." |
83 |
|
84 |
# Start compilation. |
85 |
debian/rules binary-headers || die "Failed to build kernel package." |
86 |
debian/rules binary-debs flavours=${NEW_FLAVOUR} || die "Failed to build kernel package." |
87 |
|
88 |
# Generate meta packages. |
89 |
cd /usr/src/ |
90 |
rm -fR linux-meta-*/ |
91 |
apt-get source linux-meta |
92 |
cd linux-meta-*/ |
93 |
update_maintainer |
94 |
sed -e 's/'${ORIGINAL_FLAVOUR}'/'${NEW_FLAVOUR}'/g' -- debian/control.d/${ORIGINAL_FLAVOUR} > debian/${NEW_FLAVOUR} |
95 |
rm -f debian/control.d/* |
96 |
mv debian/${NEW_FLAVOUR} debian/control.d/${NEW_FLAVOUR} |
97 |
debian/rules binary-arch |
98 |
cd ../ |
99 |
rm -fR linux-meta-*/ |
100 |
|
101 |
exit 0 |