-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path.cm-a510-release
More file actions
executable file
·151 lines (127 loc) · 4.99 KB
/
Copy path.cm-a510-release
File metadata and controls
executable file
·151 lines (127 loc) · 4.99 KB
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
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/bin/sh
# Configuration variables
# temp. directory structure
BASE_PATH=/tmp/cm-a510-release
PACKAGE_PATH=$BASE_PATH/a510-linux
FILE_SYSTEM_TMP_DIR=$BASE_PATH/cm-a510-rootfs
PACKAGE_KERNEL_DIR_PATCH=$PACKAGE_PATH/kernel/linux-2.6.32.9-cm-a510.patch
PACKAGE_KERNEL_DIR_CONFIG=$PACKAGE_PATH/kernel/linux-2.6.32.9-cm-a510.config
PACKAGE_KERNEL_DIR_UIMAGE=$PACKAGE_PATH/kernel/uImage-2.6.32.9-cm-a510.bin
PACKAGE_IMAGE_DIR_UIMAGE=$PACKAGE_PATH/images/kernel.img
PACKAGE_IMAGE_DIR_FS_TAR=$PACKAGE_PATH/images/debian-image.tar.bz2
PACKAGE_IMAGE_DIR_FS_UBI=$PACKAGE_PATH/images/debian-image.ubi
PACKAGE_UTIL_DIR_UBI_CONFIG=$PACKAGE_PATH/utilities/debian-image.cfg
UBIFS_IMAGE_FILE=debian-image.ubifs
# user-specific
# source path
SOURCE_REPOSITORY_PATH=/home/andrey/Work/cm-a510
KERNEL_REPOSITORY_NAME=linux-dove-2.6.32
KERNEL_RELEASE_TAG=cm-a510-lsp-5.4.2-1.0
KERNEL_BASE_TAG=linux-2.6.32
WIFI_REPOSITORY_NAME=system-broadcom-wlan
WIFI_RELEASE_TAG=bcm4319-cm-a510.v1.0
WIFI_LOCAL_PATH=bcm4329/src/dhd/linux
# compilation environment variables
# kernel
export ARCH=arm
export CROSS_COMPILE=/home/andrey/Work/crosstools/arm-2009q3/bin/arm-none-linux-gnueabi-
export INSTALL_MOD_PATH=$FILE_SYSTEM_TMP_DIR
export KBUILD_OUTPUT=$BASE_PATH/a510-linux-build
# Wi-Fi driver
export LINUX_BUILD_DIR=$KBUILD_OUTPUT
export LINUXDIR=$SOURCE_REPOSITORY_PATH/$KERNEL_REPOSITORY_NAME
# ftp
RELEASE_REPOSITORY=10.1.1.95
RELEASE_REPOSITORY_USER=ftp
RELEASE_REPOSITORY_PASSWORD=anonymous
CURRENT_PRODUCT_PATH=releases/cm-a510/Linux
CURRENT_PRODUCT_NAME=a510-linux-current.zip
RELEASE_PRODUCT_NAME=a510-linux-release.zip
RELEASE_PRODUCT_PATH=incoming/CM-A510/Linux
RELEASE_PRODUCT_VERSION=`echo $KERNEL_RELEASE_TAG | cut -f2- -d.`
# Clean up
mkdir -p $BASE_PATH
sudo rm -fr $BASE_PATH/*
mkdir -p $FILE_SYSTEM_TMP_DIR
mkdir -p $LINUX_BUILD_DIR
# Download current release
echo "Download $CURRENT_PRODUCT_NAME"
ftp -inv $RELEASE_REPOSITORY << ENDFTP
user $RELEASE_REPOSITORY_USER $RELEASE_REPOSITORY_PASSWORD
cd $CURRENT_PRODUCT_PATH
lcd $BASE_PATH
bin
get $CURRENT_PRODUCT_NAME
bye
ENDFTP
# Extract product package
echo "Extract files into temporary directory"
unzip -d $BASE_PATH $BASE_PATH/$CURRENT_PRODUCT_NAME > /dev/null
# Extract file system
sudo tar -C $FILE_SYSTEM_TMP_DIR -xjvf $PACKAGE_IMAGE_DIR_FS_TAR > /dev/null
sudo rm -fr $FILE_SYSTEM_TMP_DIR/tmp/*
sudo rm -fr $FILE_SYSTEM_TMP_DIR/lib/modules/*
# Prepare kernel tree
cd $SOURCE_REPOSITORY_PATH/$KERNEL_REPOSITORY_NAME
stash_clean=`git stash | grep -c "No local changes to save"`
current_branch=`git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
# Prepare patch
git checkout $KERNEL_RELEASE_TAG
git format-patch --stdout $KERNEL_BASE_TAG > $PACKAGE_KERNEL_DIR_PATCH
cp -av arch/arm/configs/cm_a510_defconfig $PACKAGE_KERNEL_DIR_CONFIG
# Compile Kernel
echo "Compile kernel"
make cm_a510_defconfig
make uImage -j24 && make modules -j24 && sudo -E make modules_install
# 2.1 Copy kernel to the package
[ $? = 0 ] && sudo cp -av $LINUX_BUILD_DIR/arch/arm/boot/uImage $PACKAGE_KERNEL_DIR_UIMAGE
[ $? = 0 ] && sudo cp -av $LINUX_BUILD_DIR/arch/arm/boot/uImage $PACKAGE_IMAGE_DIR_UIMAGE
# Restore kernel tree
git checkout $current_branch
[ $stash_clean = 0 ] && git stash pop
# Prepare external tree
cd $SOURCE_REPOSITORY_PATH/$WIFI_REPOSITORY_NAME
stash_clean=`git stash | grep -c "No local changes to save"`
current_branch=`git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
git checkout $WIFI_RELEASE_TAG
sudo mkdir -p $FILE_SYSTEM_TMP_DIR/lib/firmware/bcm4319/
sudo cp -av firmware/bcm4319/files/* $FILE_SYSTEM_TMP_DIR/lib/firmware/bcm4319/
sudo cp -av firmware/bcm4319/script/* $FILE_SYSTEM_TMP_DIR/etc/
# Compile Wi-Fi driver
echo "Compile Wi-Fi driver"
cd $WIFI_LOCAL_PATH
rm -rf dhd-cdc-sdmmc-gpl*
make dhd-cdc-sdmmc-gpl
[ $? = 0 ] && cp -av dhd-cdc-sdmmc-gpl*/dhd.ko $FILE_SYSTEM_TMP_DIR/lib/modules/.
# Restore external tree
git checkout $current_branch
[ $stash_clean = 0 ] && git stash pop
# Pack file system (.tar.bz2)
echo "Pack filesystem (.tar.bz2)"
cd $FILE_SYSTEM_TMP_DIR
sudo tar -cjf $PACKAGE_IMAGE_DIR_FS_TAR .
# Pack file system (UBI image)
echo "Pack filesystem (UBI)"
sudo mkfs.ubifs --root=$FILE_SYSTEM_TMP_DIR --min-io-size=2048 --leb-size=126976 --max-leb-cnt=4094 --output=$BASE_PATH/$UBIFS_IMAGE_FILE
cd $BASE_PATH
ubinize --output=$PACKAGE_IMAGE_DIR_FS_UBI --min-io-size=2048 --vid-hdr-offset=2048 --peb-size=128KiB $PACKAGE_UTIL_DIR_UBI_CONFIG
# Pack Final Package
echo "Prepare final package"
cd $PACKAGE_PATH
zip -9 -r $BASE_PATH/$RELEASE_PRODUCT_NAME ../${PACKAGE_PATH##*/}
echo "Preliminary exit"
echo "Gather $BASE_PATH/$RELEASE_PRODUCT_NAME, and upload it wherever it should be"
exit 0
# Currently, FTP upload is not available.
# The release file should be uploaded to 'smb://pdc/packages-incoming'.
# Upload current release
ftp -inv $RELEASE_REPOSITORY << ENDFTP
user $RELEASE_REPOSITORY_USER $RELEASE_REPOSITORY_PASSWORD
cd $RELEASE_PRODUCT_PATH
mkdir $RELEASE_PRODUCT_VERSION
cd $RELEASE_PRODUCT_VERSION
lcd $BASE_PATH
bin
put $RELEASE_PRODUCT_NAME
bye
ENDFTP