2014-10-07 20:49:46 +02:00
#!/bin/bash
#
2015-12-02 20:33:32 +01:00
# Copyright (c) 2015 Igor Pecovnik, igor.pecovnik@gma**.com
#
# This file is licensed under the terms of the GNU General Public
# License version 2. This program is licensed "as is" without any
# warranty of any kind, whether express or implied.
#
# This file is a part of tool chain https://github.com/igorpecovnik/lib
2014-10-07 20:49:46 +02:00
#
2015-12-18 12:22:42 +03:00
# Functions:
# compile_uboot
# compile_sunxi_tools
# compile_kernel
# install_external_applications
2015-12-25 20:04:33 +03:00
# write_uboot
2016-03-19 17:26:15 +03:00
# customize_image
2014-10-07 20:49:46 +02:00
2015-12-02 20:33:32 +01:00
compile_uboot ( ) {
2015-12-09 09:14:39 +01:00
#---------------------------------------------------------------------------------------------------------------------------------
2015-12-02 20:33:32 +01:00
# Compile uboot from sources
2015-12-09 09:14:39 +01:00
#---------------------------------------------------------------------------------------------------------------------------------
2016-03-05 21:26:01 +03:00
if [ [ ! -d " $SOURCES / $BOOTSOURCEDIR " ] ] ; then
exit_with_error "Error building u-boot: source directory does not exist" " $BOOTSOURCEDIR "
fi
2016-03-17 20:16:26 +01:00
2015-12-08 19:25:30 +01:00
display_alert "Compiling uboot. Please wait." " $VER " "info"
2016-04-08 13:39:08 +03:00
eval ${ UBOOT_TOOLCHAIN : +env PATH= $UBOOT_TOOLCHAIN : $PATH } ${ CROSS_COMPILE } gcc --version | head -1 | tee -a $DEST /debug/install.log
2016-04-08 00:38:59 +03:00
echo
2015-12-08 19:25:30 +01:00
cd $SOURCES /$BOOTSOURCEDIR
2016-03-17 20:16:26 +01:00
2016-04-08 00:38:59 +03:00
local cthreads = $CTHREADS
[ [ $LINUXFAMILY = = "marvell" ] ] && local MAKEPARA = "u-boot.mmc"
[ [ $BOARD = = "odroidc2" ] ] && local MAKEPARA = "ARCH=arm" && local cthreads = ""
2016-03-17 20:16:26 +01:00
2016-04-08 00:38:59 +03:00
eval ${ UBOOT_TOOLCHAIN : +env PATH= $UBOOT_TOOLCHAIN : $PATH } 'make $CTHREADS $BOOTCONFIG CROSS_COMPILE="$CROSS_COMPILE"' 2>& 1 \
${ PROGRESS_LOG_TO_FILE : + ' | tee -a $DEST/debug/compilation.log' } \
${ OUTPUT_VERYSILENT : + ' >/dev/null 2>/dev/null' }
[ -f .config ] && sed -i 's/CONFIG_LOCALVERSION=""/CONFIG_LOCALVERSION="-armbian"/g' .config
[ -f .config ] && sed -i 's/CONFIG_LOCALVERSION_AUTO=.*/# CONFIG_LOCALVERSION_AUTO is not set/g' .config
[ -f $SOURCES /$BOOTSOURCEDIR /tools/logos/udoo.bmp ] && cp $SRC /lib/bin/armbian-u-boot.bmp $SOURCES /$BOOTSOURCEDIR /tools/logos/udoo.bmp
touch .scmversion
2016-03-27 16:50:05 +02:00
2016-04-08 00:38:59 +03:00
# patch mainline uboot configuration to boot with old kernels
if [ [ $BRANCH = = "default" && $LINUXFAMILY = = sun*i ] ] ; then
if [ " $( cat $SOURCES /$BOOTSOURCEDIR /.config | grep CONFIG_ARMV7_BOOT_SEC_DEFAULT = y) " = = "" ] ; then
echo "CONFIG_ARMV7_BOOT_SEC_DEFAULT=y" >> $SOURCES /$BOOTSOURCEDIR /.config
echo "CONFIG_OLD_SUNXI_KERNEL_COMPAT=y" >> $SOURCES /$BOOTSOURCEDIR /.config
2016-03-17 20:16:26 +01:00
fi
2016-04-08 00:38:59 +03:00
fi
2016-03-17 20:16:26 +01:00
2016-04-08 00:38:59 +03:00
eval ${ UBOOT_TOOLCHAIN : +env PATH= $UBOOT_TOOLCHAIN : $PATH } 'make $MAKEPARA $cthreads CROSS_COMPILE="$CROSS_COMPILE"' 2>& 1 \
2015-12-09 18:02:04 +03:00
${ PROGRESS_LOG_TO_FILE : + ' | tee -a $DEST/debug/compilation.log' } \
2016-03-07 18:29:48 +01:00
${ OUTPUT_DIALOG : + ' | dialog --backtitle "$backtitle" --progressbox "Compiling u-boot..." $TTY_Y $TTY_X' } \
2015-12-09 18:02:04 +03:00
${ OUTPUT_VERYSILENT : + ' >/dev/null 2>/dev/null' }
2014-10-07 20:49:46 +02:00
2015-12-09 09:54:58 +01:00
# create .deb package
2014-10-07 20:49:46 +02:00
2016-03-23 20:58:58 +01:00
local uboot_name = ${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH }
2016-03-14 21:54:03 +03:00
mkdir -p $DEST /debs/$uboot_name /usr/lib/$uboot_name $DEST /debs/$uboot_name /DEBIAN
2016-03-17 20:16:26 +01:00
2015-12-02 20:33:32 +01:00
# set up post install script
2016-03-14 21:54:03 +03:00
cat <<END > $DE ST/debs/$uboot_name /DEBIAN/postinst
2015-12-02 20:33:32 +01:00
#!/bin/bash
set -e
2016-03-27 22:24:51 +02:00
if [ [ \$ DEVICE = = "/dev/null" ] ] ; then exit 0; fi
2015-12-02 20:33:32 +01:00
if [ [ \$ DEVICE = = "" ] ] ; then DEVICE = "/dev/mmcblk0" ; fi
2016-03-17 20:16:26 +01:00
if [ [ \$ DPKG_MAINTSCRIPT_PACKAGE = = *cubox* ] ] ; then
2016-03-14 21:54:03 +03:00
( dd if = /usr/lib/$uboot_name /SPL of = \$ DEVICE bs = 512 seek = 2 status = noxfer ) > /dev/null 2>& 1
2016-03-17 20:16:26 +01:00
( dd if = /usr/lib/$uboot_name /u-boot.img of = \$ DEVICE bs = 1K seek = 42 status = noxfer ) > /dev/null 2>& 1
elif [ [ \$ DPKG_MAINTSCRIPT_PACKAGE = = *guitar* ] ] ; then
2016-03-14 21:54:03 +03:00
( dd if = /usr/lib/$uboot_name /bootloader.bin of = \$ DEVICE bs = 512 seek = 4097 conv = fsync ) > /dev/null 2>& 1
( dd if = /usr/lib/$uboot_name /u-boot-dtb.bin of = \$ DEVICE bs = 512 seek = 6144 conv = fsync ) > /dev/null 2>& 1
2016-03-22 10:42:47 +01:00
elif [ [ \$ DPKG_MAINTSCRIPT_PACKAGE = = *odroidxu4* ] ] ; then
2016-03-14 21:54:03 +03:00
( dd if = /usr/lib/$uboot_name /bl1.bin.hardkernel of = \$ DEVICE seek = 1 conv = fsync ) > /dev/null 2>& 1
( dd if = /usr/lib/$uboot_name /bl2.bin.hardkernel of = \$ DEVICE seek = 31 conv = fsync ) > /dev/null 2>& 1
( dd if = /usr/lib/$uboot_name /u-boot.bin of = \$ DEVICE bs = 512 seek = 63 conv = fsync ) > /dev/null 2>& 1
( dd if = /usr/lib/$uboot_name /tzsw.bin.hardkernel of = \$ DEVICE seek = 719 conv = fsync ) > /dev/null 2>& 1
2015-12-10 11:41:14 +01:00
( dd if = /dev/zero of = \$ DEVICE seek = 1231 count = 32 bs = 512 conv = fsync ) > /dev/null 2>& 1
2016-03-22 10:42:47 +01:00
elif [ [ \$ DPKG_MAINTSCRIPT_PACKAGE = = *odroidc1* ] ] ; then
2016-03-28 20:04:01 +02:00
( dd if = /usr/lib/$uboot_name /bl1.bin.hardkernel of = \$ DEVICE bs = 1 count = 442 conv = fsync ) > /dev/null 2>& 1
( dd if = /usr/lib/$uboot_name /bl1.bin.hardkernel of = \$ DEVICE bs = 512 skip = 1 seek = 1 conv = fsync ) > /dev/null 2>& 1
2016-03-22 10:42:47 +01:00
( dd if = /usr/lib/$uboot_name /u-boot.bin of = \$ DEVICE bs = 512 seek = 64 conv = fsync ) > /dev/null 2>& 1
( dd if = /dev/zero of = \$ DEVICE seek = 1024 count = 32 bs = 512 conv = fsync ) > /dev/null 2>& 1
2016-03-23 06:41:01 +01:00
elif [ [ \$ DPKG_MAINTSCRIPT_PACKAGE = = *odroidc2* ] ] ; then
2016-03-24 11:01:18 +01:00
( dd if = /usr/lib/$uboot_name /bl1.bin.hardkernel of = \$ DEVICE bs = 1 count = 442 conv = fsync ) > /dev/null 2>& 1
( dd if = /usr/lib/$uboot_name /bl1.bin.hardkernel of = \$ DEVICE bs = 512 skip = 1 seek = 1 conv = fsync ) > /dev/null 2>& 1
( dd if = /usr/lib/$uboot_name /u-boot.bin of = \$ DEVICE bs = 512 seek = 97 conv = fsync ) > /dev/null 2>& 1
( dd if = /dev/zero of = \$ DEVICE seek = 1249 count = 799 bs = 512 conv = fsync ) > /dev/null 2>& 1
2016-03-17 20:16:26 +01:00
elif [ [ \$ DPKG_MAINTSCRIPT_PACKAGE = = *udoo* ] ] ; then
2016-03-14 21:54:03 +03:00
( dd if = /usr/lib/$uboot_name /SPL of = \$ DEVICE bs = 1k seek = 1 status = noxfer ) > /dev/null 2>& 1
2016-03-17 20:16:26 +01:00
( dd if = /usr/lib/$uboot_name /u-boot.img of = \$ DEVICE bs = 1K seek = 69 status = noxfer ) > /dev/null 2>& 1
elif [ [ \$ DPKG_MAINTSCRIPT_PACKAGE = = *armada* ] ] ; then
( dd if = /usr/lib/$uboot_name /u-boot.mmc of = \$ DEVICE bs = 512 seek = 1 status = noxfer ) > /dev/null 2>& 1
else
2016-03-22 20:55:39 +01:00
( dd if = /dev/zero of = \$ DEVICE bs = 1k count = 1023 seek = 1 status = noxfer ) > /dev/null 2>& 1
2016-03-17 20:16:26 +01:00
( dd if = /usr/lib/$uboot_name /u-boot-sunxi-with-spl.bin of = \$ DEVICE bs = 1024 seek = 8 status = noxfer ) > /dev/null 2>& 1
2015-12-02 20:33:32 +01:00
fi
exit 0
END
2015-12-09 09:54:58 +01:00
#
2014-10-07 20:49:46 +02:00
2016-03-14 21:54:03 +03:00
chmod 755 $DEST /debs/$uboot_name /DEBIAN/postinst
2015-12-02 20:33:32 +01:00
# set up control file
2016-03-14 21:54:03 +03:00
cat <<END > $DE ST/debs/$uboot_name /DEBIAN/control
Package: linux-u-boot-${ BOARD } -${ BRANCH }
2015-12-02 20:33:32 +01:00
Version: $REVISION
2016-03-23 21:19:21 +01:00
Architecture: $ARCH
2015-12-02 20:33:32 +01:00
Maintainer: $MAINTAINER <$MAINTAINERMAIL >
Installed-Size: 1
Section: kernel
Priority: optional
2015-12-08 19:25:30 +01:00
Description: Uboot loader $VER
2015-12-02 20:33:32 +01:00
END
#
2014-10-07 20:49:46 +02:00
2015-12-09 09:54:58 +01:00
# copy proper uboot files to place
if [ [ $BOARD = = cubox-i* ] ] ; then
2016-03-17 20:16:26 +01:00
[ ! -f "SPL" ] || cp SPL u-boot.img $DEST /debs/$uboot_name /usr/lib/$uboot_name
2015-12-09 09:54:58 +01:00
elif [ [ $BOARD = = guitar* ] ] ; then
2016-03-17 20:16:26 +01:00
[ ! -f "u-boot-dtb.bin" ] || cp u-boot-dtb.bin $DEST /debs/$uboot_name /usr/lib/$uboot_name
2016-03-14 21:54:03 +03:00
[ ! -f " $SRC /lib/bin/s500-bootloader.bin " ] || cp $SRC /lib/bin/s500-bootloader.bin $DEST /debs/$uboot_name /usr/lib/$uboot_name /bootloader.bin
2016-03-22 10:42:47 +01:00
elif [ [ $BOARD = = odroidxu4 ] ] ; then
2016-03-17 20:16:26 +01:00
[ ! -f "sd_fuse/hardkernel/bl1.bin.hardkernel" ] || cp sd_fuse/hardkernel/bl1.bin.hardkernel $DEST /debs/$uboot_name /usr/lib/$uboot_name
2016-03-14 21:54:03 +03:00
[ ! -f "sd_fuse/hardkernel/bl2.bin.hardkernel" ] || cp sd_fuse/hardkernel/bl2.bin.hardkernel $DEST /debs/$uboot_name /usr/lib/$uboot_name
[ ! -f "sd_fuse/hardkernel/tzsw.bin.hardkernel" ] || cp sd_fuse/hardkernel/tzsw.bin.hardkernel $DEST /debs/$uboot_name /usr/lib/$uboot_name
[ ! -f "u-boot.bin" ] || cp u-boot.bin $DEST /debs/$uboot_name /usr/lib/$uboot_name /
2016-03-22 10:42:47 +01:00
elif [ [ $BOARD = = odroidc1 ] ] ; then
[ ! -f "sd_fuse/bl1.bin.hardkernel" ] || cp sd_fuse/bl1.bin.hardkernel $DEST /debs/$uboot_name /usr/lib/$uboot_name
2016-03-23 06:41:01 +01:00
[ ! -f "sd_fuse/u-boot.bin" ] || cp sd_fuse/u-boot.bin $DEST /debs/$uboot_name /usr/lib/$uboot_name
elif [ [ $BOARD = = odroidc2 ] ] ; then
[ ! -f "sd_fuse/bl1.bin.hardkernel" ] || cp sd_fuse/bl1.bin.hardkernel $DEST /debs/$uboot_name /usr/lib/$uboot_name
2016-03-31 07:20:31 +02:00
[ ! -f "sd_fuse/u-boot.bin" ] || cp sd_fuse/u-boot.bin $DEST /debs/$uboot_name /usr/lib/$uboot_name
2015-12-09 09:54:58 +01:00
elif [ [ $BOARD = = udoo* ] ] ; then
2016-03-14 21:54:03 +03:00
[ ! -f "u-boot.img" ] || cp SPL u-boot.img $DEST /debs/$uboot_name /usr/lib/$uboot_name
2016-01-08 19:50:53 +01:00
elif [ [ $BOARD = = armada* ] ] ; then
2016-03-14 21:54:03 +03:00
[ ! -f "u-boot.mmc" ] || cp u-boot.mmc $DEST /debs/$uboot_name /usr/lib/$uboot_name
2015-12-09 09:54:58 +01:00
else
2016-03-17 20:16:26 +01:00
[ ! -f "u-boot-sunxi-with-spl.bin" ] || cp u-boot-sunxi-with-spl.bin $DEST /debs/$uboot_name /usr/lib/$uboot_name
2015-12-09 09:54:58 +01:00
fi
2014-10-13 19:17:37 +02:00
2015-12-09 09:54:58 +01:00
cd $DEST /debs
display_alert "Target directory" " $DEST /debs/ " "info"
2016-03-14 21:54:03 +03:00
display_alert "Building deb" " $uboot_name .deb " "info"
dpkg -b $uboot_name > /dev/null
rm -rf $uboot_name
2014-10-24 18:56:18 +02:00
2016-03-14 21:54:03 +03:00
FILESIZE = $( wc -c $DEST /debs/$uboot_name .deb | cut -f 1 -d ' ' )
2015-12-09 09:54:58 +01:00
2016-02-15 13:53:35 +03:00
if [ [ $FILESIZE -lt 50000 ] ] ; then
2016-03-14 21:54:03 +03:00
rm $DEST /debs/$uboot_name .deb
2016-03-06 13:01:05 +03:00
exit_with_error "Building u-boot failed, check configuration"
2015-12-09 09:54:58 +01:00
fi
2014-10-07 20:49:46 +02:00
}
2015-12-02 20:33:32 +01:00
compile_sunxi_tools ( ) {
2015-12-09 08:51:19 +01:00
#---------------------------------------------------------------------------------------------------------------------------------
# https://github.com/linux-sunxi/sunxi-tools Tools to help hacking Allwinner devices
#---------------------------------------------------------------------------------------------------------------------------------
display_alert "Compiling sunxi tools" "@host & target" "info"
cd $SOURCES /$MISC1_DIR
make -s clean >/dev/null 2>& 1
2016-02-26 13:08:22 +01:00
rm -f sunxi-fexc sunxi-nand-part
2015-12-09 08:51:19 +01:00
make -s >/dev/null 2>& 1
cp fex2bin bin2fex /usr/local/bin/
2016-02-26 14:19:32 +01:00
# make -s clean >/dev/null 2>&1
# rm -f sunxi-fexc sunxi-nand-part meminfo sunxi-fel sunxi-pio 2>/dev/null
2016-04-08 00:38:59 +03:00
# NOTE: Fix CC=$CROSS_COMPILE"gcc" before reenabling
2016-03-23 19:00:45 +01:00
# make $CTHREADS 'sunxi-nand-part' CC=$CROSS_COMPILE"gcc" >> $DEST/debug/install.log 2>&1
# make $CTHREADS 'sunxi-fexc' CC=$CROSS_COMPILE"gcc" >> $DEST/debug/install.log 2>&1
# make $CTHREADS 'meminfo' CC=$CROSS_COMPILE"gcc" >> $DEST/debug/install.log 2>&1
2015-12-09 08:51:19 +01:00
2014-10-07 20:49:46 +02:00
}
2015-12-02 20:33:32 +01:00
compile_kernel ( ) {
2015-12-09 14:39:27 +01:00
#---------------------------------------------------------------------------------------------------------------------------------
2015-12-02 20:33:32 +01:00
# Compile kernel
2015-12-09 14:39:27 +01:00
#---------------------------------------------------------------------------------------------------------------------------------
2014-12-11 19:41:07 +01:00
2016-03-05 21:26:01 +03:00
if [ [ ! -d " $SOURCES / $LINUXSOURCEDIR " ] ] ; then
exit_with_error "Error building kernel: source directory does not exist" " $LINUXSOURCEDIR "
fi
2016-03-17 20:16:26 +01:00
2015-12-09 14:39:27 +01:00
# read kernel version to variable $VER
2016-03-17 20:16:26 +01:00
grab_version " $SOURCES / $LINUXSOURCEDIR "
2014-12-11 19:41:07 +01:00
2015-12-10 11:41:14 +01:00
display_alert " Compiling $BRANCH kernel " "@host" "info"
2016-04-08 13:39:08 +03:00
eval ${ KERNEL_TOOLCHAIN : +env PATH= $KERNEL_TOOLCHAIN : $PATH } ${ CROSS_COMPILE } gcc --version | head -1 | tee -a $DEST /debug/install.log
2016-04-08 00:38:59 +03:00
echo
2015-12-09 14:39:27 +01:00
cd $SOURCES /$LINUXSOURCEDIR /
2014-12-11 19:41:07 +01:00
2015-12-09 14:39:27 +01:00
# adding custom firmware to kernel source
if [ [ -n " $FIRMWARE " ] ] ; then unzip -o $SRC /lib/$FIRMWARE -d $SOURCES /$LINUXSOURCEDIR /firmware; fi
2014-12-11 19:41:07 +01:00
2015-12-09 14:39:27 +01:00
# use proven config
2015-12-27 17:02:03 +03:00
if [ " $KERNEL_KEEP_CONFIG " != "yes" ] || [ ! -f $SOURCES /$LINUXSOURCEDIR /.config ] ; then
if [ -f $SRC /userpatches/$LINUXCONFIG .config ] ; then
display_alert "Using kernel config provided by user" " userpatches/ $LINUXCONFIG .config " "info"
cp $SRC /userpatches/$LINUXCONFIG .config $SOURCES /$LINUXSOURCEDIR /.config
else
2016-01-02 19:25:01 +03:00
display_alert "Using kernel config file" " lib/config/ $LINUXCONFIG .config " "info"
2015-12-27 17:02:03 +03:00
cp $SRC /lib/config/$LINUXCONFIG .config $SOURCES /$LINUXSOURCEDIR /.config
fi
2015-12-09 14:39:27 +01:00
fi
2014-12-11 19:41:07 +01:00
2015-12-09 14:39:27 +01:00
# hacks for banana family
if [ [ $LINUXFAMILY = = "banana" ] ] ; then
sed -i 's/CONFIG_GMAC_CLK_SYS=y/CONFIG_GMAC_CLK_SYS=y\nCONFIG_GMAC_FOR_BANANAPI=y/g' .config
fi
# hack for deb builder. To pack what's missing in headers pack.
cp $SRC /lib/patch/misc/headers-debian-byteshift.patch /tmp
2014-12-17 20:10:02 +01:00
2015-12-09 14:39:27 +01:00
export LOCALVERSION = "-" $LINUXFAMILY
2016-03-23 21:19:21 +01:00
if [ [ $ARCH = = *64* ] ] ; then ARCHITECTURE = arm64; else ARCHITECTURE = arm; fi
2014-12-11 19:41:07 +01:00
2016-03-17 20:16:26 +01:00
# We can use multi threading here but not later since it's not working. This way of compilation is much faster.
2015-12-09 14:39:27 +01:00
if [ " $KERNEL_CONFIGURE " != "yes" ] ; then
if [ " $BRANCH " = "default" ] ; then
2016-04-08 00:38:59 +03:00
eval ${ KERNEL_TOOLCHAIN : +env PATH= $KERNEL_TOOLCHAIN : $PATH } 'make $CTHREADS ARCH=$ARCHITECTURE CROSS_COMPILE="$CROSS_COMPILE" silentoldconfig'
2015-12-09 14:39:27 +01:00
else
2016-04-08 00:38:59 +03:00
eval ${ KERNEL_TOOLCHAIN : +env PATH= $KERNEL_TOOLCHAIN : $PATH } 'make $CTHREADS ARCH=$ARCHITECTURE CROSS_COMPILE="$CROSS_COMPILE" olddefconfig'
2015-12-09 14:39:27 +01:00
fi
2015-12-08 17:09:13 +03:00
else
2016-04-08 00:38:59 +03:00
eval ${ KERNEL_TOOLCHAIN : +env PATH= $KERNEL_TOOLCHAIN : $PATH } 'make $CTHREADS ARCH=$ARCHITECTURE CROSS_COMPILE="$CROSS_COMPILE" oldconfig'
eval ${ KERNEL_TOOLCHAIN : +env PATH= $KERNEL_TOOLCHAIN : $PATH } 'make $CTHREADS ARCH=$ARCHITECTURE CROSS_COMPILE="$CROSS_COMPILE" menuconfig'
2015-12-08 17:09:13 +03:00
fi
2014-12-11 19:41:07 +01:00
2016-04-08 00:38:59 +03:00
eval ${ KERNEL_TOOLCHAIN : +env PATH= $KERNEL_TOOLCHAIN : $PATH } 'make $CTHREADS ARCH=$ARCHITECTURE CROSS_COMPILE="$CROSS_COMPILE" $TARGETS modules dtbs 2>&1' \
2016-03-05 21:26:01 +03:00
${ PROGRESS_LOG_TO_FILE : + ' | tee -a $DEST/debug/compilation.log' } \
2016-03-07 18:29:48 +01:00
${ OUTPUT_DIALOG : + ' | dialog --backtitle "$backtitle" --progressbox "Compiling kernel..." $TTY_Y $TTY_X' } \
2016-03-05 21:26:01 +03:00
${ OUTPUT_VERYSILENT : + ' >/dev/null 2>/dev/null' }
2014-12-11 19:41:07 +01:00
2016-03-23 21:19:21 +01:00
if [ ${ PIPESTATUS [0] } -ne 0 ] || [ ! -f arch/$ARCHITECTURE /boot/$TARGETS ] ; then
2016-03-05 21:26:01 +03:00
exit_with_error "Kernel was not built" "@host"
fi
2014-11-17 16:20:02 +01:00
2016-03-05 21:26:01 +03:00
# different packaging for 4.3+ // probably temporaly soution
KERNEL_PACKING = "deb-pkg"
IFS = '.' read -a array <<< " $VER "
if ( ( " ${ array [0] } " = = "4" ) ) && ( ( " ${ array [1] } " >= "3" ) ) ; then
KERNEL_PACKING = "bindeb-pkg"
fi
2016-04-08 00:38:59 +03:00
# produce deb packages: image, headers, firmware, dtb
eval ${ KERNEL_TOOLCHAIN : +env PATH= $KERNEL_TOOLCHAIN : $PATH } ' make -j1 $KERNEL_PACKING KDEB_PKGVERSION = $REVISION LOCALVERSION = "-" $LINUXFAMILY \
KBUILD_DEBARCH = $ARCH ARCH = $ARCHITECTURE DEBFULLNAME = " $MAINTAINER " DEBEMAIL = " $MAINTAINERMAIL " CROSS_COMPILE = " $CROSS_COMPILE " 2>& 1 ' \
2016-03-05 21:26:01 +03:00
${ PROGRESS_LOG_TO_FILE : + ' | tee -a $DEST/debug/compilation.log' } \
2016-03-07 18:29:48 +01:00
${ OUTPUT_DIALOG : + ' | dialog --backtitle "$backtitle" --progressbox "Creating kernel packages..." $TTY_Y $TTY_X' } \
2016-03-05 21:26:01 +03:00
${ OUTPUT_VERYSILENT : + ' >/dev/null 2>/dev/null' }
cd ..
mv *.deb $DEST /debs/ || exit_with_error "Failed moving kernel DEBs"
2014-10-07 20:49:46 +02:00
}
install_external_applications ( ) {
2014-10-08 09:53:25 +02:00
#--------------------------------------------------------------------------------------------------------------------------------
2015-12-02 20:33:32 +01:00
# Install external applications example
2014-10-08 09:53:25 +02:00
#--------------------------------------------------------------------------------------------------------------------------------
2016-04-07 16:18:57 +02:00
IFS = '.' read -a array <<< " $VER "
# USB redirector broken for old kernels
if ( ( " ${ array [0] } " = = "4" ) ) && ( ( " ${ array [1] } " >= "1" ) ) ; then
display_alert "Installing external applications" "USB redirector" "info"
if [ [ $ARCH = = *64* ] ] ; then ARCHITECTURE = arm64; else ARCHITECTURE = arm; fi
# USB redirector tools http://www.incentivespro.com
cd $SOURCES
wget -q http://www.incentivespro.com/usb-redirector-linux-arm-eabi.tar.gz
tar xfz usb-redirector-linux-arm-eabi.tar.gz
rm usb-redirector-linux-arm-eabi.tar.gz
cd $SOURCES /usb-redirector-linux-arm-eabi/files/modules/src/tusbd
# patch to work with newer kernels
sed -e "s/f_dentry/f_path.dentry/g" -i usbdcdev.c
2016-04-08 00:38:59 +03:00
make -j1 ARCH = $ARCHITECTURE CROSS_COMPILE = " $CROSS_COMPILE " KERNELDIR = $SOURCES /$LINUXSOURCEDIR / >> $DEST /debug/install.log
2016-04-07 16:18:57 +02:00
# configure USB redirector
sed -e 's/%INSTALLDIR_TAG%/\/usr\/local/g' $SOURCES /usb-redirector-linux-arm-eabi/files/rc.usbsrvd > $SOURCES /usb-redirector-linux-arm-eabi/files/rc.usbsrvd1
sed -e 's/%PIDFILE_TAG%/\/var\/run\/usbsrvd.pid/g' $SOURCES /usb-redirector-linux-arm-eabi/files/rc.usbsrvd1 > $SOURCES /usb-redirector-linux-arm-eabi/files/rc.usbsrvd
sed -e 's/%STUBNAME_TAG%/tusbd/g' $SOURCES /usb-redirector-linux-arm-eabi/files/rc.usbsrvd > $SOURCES /usb-redirector-linux-arm-eabi/files/rc.usbsrvd1
sed -e 's/%DAEMONNAME_TAG%/usbsrvd/g' $SOURCES /usb-redirector-linux-arm-eabi/files/rc.usbsrvd1 > $SOURCES /usb-redirector-linux-arm-eabi/files/rc.usbsrvd
chmod +x $SOURCES /usb-redirector-linux-arm-eabi/files/rc.usbsrvd
# copy to root
cp $SOURCES /usb-redirector-linux-arm-eabi/files/usb* $CACHEDIR /sdcard/usr/local/bin/
cp $SOURCES /usb-redirector-linux-arm-eabi/files/modules/src/tusbd/tusbd.ko $CACHEDIR /sdcard/usr/local/bin/
cp $SOURCES /usb-redirector-linux-arm-eabi/files/rc.usbsrvd $CACHEDIR /sdcard/etc/init.d/
# not started by default ----- update.rc rc.usbsrvd defaults
# chroot $CACHEDIR/sdcard /bin/bash -c "update-rc.d rc.usbsrvd defaults
fi
2015-12-02 20:33:32 +01:00
2014-10-07 20:49:46 +02:00
# some aditional stuff. Some driver as example
if [ [ -n " $MISC3_DIR " ] ] ; then
2015-12-02 20:33:32 +01:00
display_alert "Installing external applications" "RT8192 driver" "info"
2014-10-07 20:49:46 +02:00
# https://github.com/pvaret/rtl8192cu-fixes
2015-12-02 20:33:32 +01:00
cd $SOURCES /$MISC3_DIR
#git checkout 0ea77e747df7d7e47e02638a2ee82ad3d1563199
2016-04-08 00:38:59 +03:00
make ARCH = $ARCHITECTURE CROSS_COMPILE = " $CROSS_COMPILE " clean >/dev/null 2>& 1
( make ARCH = $ARCHITECTURE CROSS_COMPILE = " $CROSS_COMPILE " KSRC = $SOURCES /$LINUXSOURCEDIR / >/dev/null 2>& 1)
2016-03-17 20:16:26 +01:00
cp *.ko $CACHEDIR /sdcard/lib/modules/$VER -$LINUXFAMILY /kernel/net/wireless/
depmod -b $CACHEDIR /sdcard/ $VER -$LINUXFAMILY
#cp blacklist*.conf $CACHEDIR/sdcard/etc/modprobe.d/
2015-12-02 20:33:32 +01:00
fi
# MISC4 = NOTRO DRIVERS / special handling
2016-02-26 17:20:03 +01:00
# MISC5 = sunxi display control
2016-02-26 20:22:13 +01:00
if [ [ -n " $MISC5_DIR " && $BRANCH != "next" && $LINUXSOURCEDIR = = *sunxi* ] ] ; then
cd " $SOURCES / $MISC5_DIR "
cp " $SOURCES / $LINUXSOURCEDIR /include/video/sunxi_disp_ioctl.h " .
make clean >/dev/null 2>& 1
2016-04-08 00:38:59 +03:00
( make ARCH = $ARCHITECTURE CC = " ${ CROSS_COMPILE } gcc " KSRC = " $SOURCES / $LINUXSOURCEDIR / " >/dev/null)
2016-03-17 20:16:26 +01:00
install -m 755 a10disp " $CACHEDIR /sdcard/usr/local/bin "
2016-02-26 20:22:13 +01:00
fi
# MISC5 = sunxi display control / compile it for sun8i just in case sun7i stuff gets ported to sun8i and we're able to use it
if [ [ -n " $MISC5_DIR " && $BRANCH != "next" && $LINUXSOURCEDIR = = *sun8i* ] ] ; then
cd " $SOURCES / $MISC5_DIR "
wget -q "https://raw.githubusercontent.com/linux-sunxi/linux-sunxi/sunxi-3.4/include/video/sunxi_disp_ioctl.h"
2015-12-02 20:33:32 +01:00
make clean >/dev/null 2>& 1
2016-04-08 00:38:59 +03:00
( make ARCH = $ARCHITECTURE CC = " ${ CROSS_COMPILE } gcc " KSRC = " $SOURCES / $LINUXSOURCEDIR / " >/dev/null)
2016-03-17 20:16:26 +01:00
install -m 755 a10disp " $CACHEDIR /sdcard/usr/local/bin "
2014-10-07 20:49:46 +02:00
fi
2016-02-20 13:49:19 +02:00
# MT7601U
if [ [ -n " $MISC6_DIR " && $BRANCH != "next" ] ] ; then
display_alert "Installing external applications" "MT7601U - driver" "info"
cd $SOURCES /$MISC6_DIR
cat >> fix_build.patch << _EOF_
diff --git a/src/dkms.conf b/src/dkms.conf
new file mode 100644
index 0000000..7563b5a
--- /dev/null
+++ b/src/dkms.conf
@@ -0,0 +1,8 @@
+PACKAGE_NAME= "mt7601-sta-dkms"
+PACKAGE_VERSION= "3.0.0.4"
+CLEAN= "make clean"
+BUILT_MODULE_NAME[ 0] = "mt7601Usta"
+BUILT_MODULE_LOCATION[ 0] = "./os/linux/"
+DEST_MODULE_LOCATION[ 0] = "/kernel/drivers/net/wireless"
+AUTOINSTALL= yes
+MAKE[ 0] = "make -j4 KERNELVER=\$kernelver"
diff --git a/src/include/os/rt_linux.h b/src/include/os/rt_linux.h
index 3726b9e..b8be886 100755
--- a/src/include/os/rt_linux.h
+++ b/src/include/os/rt_linux.h
@@ -279,7 +279,7 @@ typedef struct file* RTMP_OS_FD;
typedef struct _OS_FS_INFO_
{
-#if LINUX_VERSION_CODE >= KERNEL_VERSION( 3,12,0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION( 3,4,0)
uid_t fsuid;
gid_t fsgid;
#else
diff --git a/src/os/linux/rt_linux.c b/src/os/linux/rt_linux.c
index 1b6a631..c336611 100755
--- a/src/os/linux/rt_linux.c
+++ b/src/os/linux/rt_linux.c
@@ -51,7 +51,7 @@
#define RT_CONFIG_IF_OPMODE_ON_STA(__OpMode)
#endif
-ULONG RTDebugLevel = RT_DEBUG_TRACE;
+ULONG RTDebugLevel = 0;
ULONG RTDebugFunc = 0;
#ifdef OS_ABL_FUNC_SUPPORT
_EOF_
2016-02-21 16:26:43 +02:00
patch -f -s -p1 -r - <fix_build.patch >/dev/null
2016-02-20 13:49:19 +02:00
cd src
2016-04-08 00:38:59 +03:00
make -s ARCH = $ARCHITECTURE CROSS_COMPILE = " $CROSS_COMPILE " clean >/dev/null 2>& 1
( make -s -j4 ARCH = $ARCHITECTURE CROSS_COMPILE = " $CROSS_COMPILE " LINUX_SRC = $SOURCES /$LINUXSOURCEDIR / >/dev/null 2>& 1)
2016-03-17 20:16:26 +01:00
cp os/linux/*.ko $CACHEDIR /sdcard/lib/modules/$VER -$LINUXFAMILY /kernel/net/wireless/
mkdir -p $CACHEDIR /sdcard/etc/Wireless/RT2870STA
cp RT2870STA.dat $CACHEDIR /sdcard/etc/Wireless/RT2870STA/
depmod -b $CACHEDIR /sdcard/ $VER -$LINUXFAMILY
2016-02-23 17:58:12 +02:00
make -s clean 1>& 2 2>/dev/null
2016-02-20 13:49:19 +02:00
cd ..
2016-03-17 20:16:26 +01:00
mkdir -p $CACHEDIR /sdcard/usr/src/
cp -R src $CACHEDIR /sdcard/usr/src/mt7601-3.0.0.4
2016-02-20 13:49:19 +02:00
# TODO: Set the module to build automatically via dkms in the future here
fi
2016-02-24 11:47:54 +01:00
2016-04-06 20:16:12 +02:00
# h3disp/sun8i-corekeeper.sh for sun8i/3.4.x
if [ " ${ LINUXFAMILY } " = "sun8i" -a " ${ BRANCH } " = "default" ] ; then
2016-03-17 20:16:26 +01:00
install -m 755 " $SRC /lib/scripts/h3disp " " $CACHEDIR /sdcard/usr/local/bin "
2016-04-06 20:16:12 +02:00
install -m 755 " $SRC /lib/scripts/sun8i-corekeeper.sh " " $CACHEDIR /sdcard/usr/local/bin "
2016-04-06 23:09:56 +02:00
sed -i 's|^exit\ 0$|/usr/local/bin/sun8i-corekeeper.sh \&\n\n&|' " $CACHEDIR /sdcard/etc/rc.local "
2016-02-24 11:47:54 +01:00
fi
2014-10-07 20:49:46 +02:00
}
2015-12-25 20:04:33 +03:00
# write_uboot <loopdev>
#
# writes u-boot to loop device
# Parameters:
# loopdev: loop device with mounted rootfs image
write_uboot( )
{
LOOP = $1
display_alert "Writing bootloader" " $LOOP " "info"
2016-03-23 20:58:58 +01:00
dpkg -x ${ DEST } /debs/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } .deb /tmp/
2015-12-25 20:04:33 +03:00
if [ [ $BOARD = = *cubox* ] ] ; then
2016-03-23 20:58:58 +01:00
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /SPL of = $LOOP bs = 512 seek = 2 status = noxfer >/dev/null 2>& 1)
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /u-boot.img of = $LOOP bs = 1K seek = 42 status = noxfer >/dev/null 2>& 1)
2016-01-08 19:50:53 +01:00
elif [ [ $BOARD = = *armada* ] ] ; then
2016-03-23 20:58:58 +01:00
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /u-boot.mmc of = $LOOP bs = 512 seek = 1 status = noxfer >/dev/null 2>& 1)
2015-12-25 20:04:33 +03:00
elif [ [ $BOARD = = *udoo* ] ] ; then
2016-03-23 20:58:58 +01:00
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /SPL of = $LOOP bs = 1k seek = 1 status = noxfer >/dev/null 2>& 1)
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /u-boot.img of = $LOOP bs = 1k seek = 69 conv = fsync >/dev/null 2>& 1)
2015-12-25 20:04:33 +03:00
elif [ [ $BOARD = = *guitar* ] ] ; then
2016-03-23 20:58:58 +01:00
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /bootloader.bin of = $LOOP bs = 512 seek = 4097 conv = fsync > /dev/null 2>& 1)
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /u-boot-dtb.bin of = $LOOP bs = 512 seek = 6144 conv = fsync > /dev/null 2>& 1)
2016-03-22 10:42:47 +01:00
elif [ [ $BOARD = = *odroidxu4* ] ] ; then
2016-03-23 20:58:58 +01:00
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /bl1.bin.hardkernel of = $LOOP seek = 1 conv = fsync ) > /dev/null 2>& 1
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /bl2.bin.hardkernel of = $LOOP seek = 31 conv = fsync ) > /dev/null 2>& 1
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /u-boot.bin of = $LOOP bs = 512 seek = 63 conv = fsync ) > /dev/null 2>& 1
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /tzsw.bin.hardkernel of = $LOOP seek = 719 conv = fsync ) > /dev/null 2>& 1
2016-03-22 10:42:47 +01:00
( dd if = /dev/zero of = $LOOP seek = 1231 count = 32 bs = 512 conv = fsync ) > /dev/null 2>& 1
elif [ [ $BOARD = = *odroidc1* ] ] ; then
2016-03-28 20:04:01 +02:00
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /bl1.bin.hardkernel of = $LOOP bs = 1 count = 442 conv = fsync ) > /dev/null 2>& 1
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /bl1.bin.hardkernel of = $LOOP bs = 512 skip = 1 seek = 1 conv = fsync ) > /dev/null 2>& 1
2016-03-23 20:58:58 +01:00
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /u-boot.bin of = $LOOP bs = 512 seek = 64 conv = fsync ) > /dev/null 2>& 1
2016-03-22 20:55:39 +01:00
( dd if = /dev/zero of = $LOOP seek = 1024 count = 32 bs = 512 conv = fsync ) > /dev/null 2>& 1
2016-03-23 06:41:01 +01:00
elif [ [ $BOARD = = *odroidc2* ] ] ; then
2016-03-23 20:58:58 +01:00
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /bl1.bin.hardkernel of = $LOOP bs = 1 count = 442 conv = fsync ) > /dev/null 2>& 1
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /bl1.bin.hardkernel of = $LOOP bs = 512 skip = 1 seek = 1 conv = fsync ) > /dev/null 2>& 1
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /u-boot.bin of = $LOOP bs = 512 seek = 97 conv = fsync ) > /dev/null 2>& 1
2016-03-23 06:41:01 +01:00
( dd if = /dev/zero of = $LOOP seek = 1249 count = 799 bs = 512 conv = fsync ) > /dev/null 2>& 1
2015-12-25 20:04:33 +03:00
else
2016-03-22 20:55:39 +01:00
( dd if = /dev/zero of = $LOOP bs = 1k count = 1023 seek = 1 status = noxfer ) > /dev/null 2>& 1
2016-03-23 20:58:58 +01:00
( dd if = /tmp/usr/lib/${ CHOSEN_UBOOT } _${ REVISION } _${ ARCH } /u-boot-sunxi-with-spl.bin of = $LOOP bs = 1024 seek = 8 status = noxfer >/dev/null 2>& 1)
2015-12-25 20:04:33 +03:00
fi
if [ $? -ne 0 ] ; then
2016-03-06 13:01:05 +03:00
exit_with_error "U-boot failed to install" "@host"
2015-12-25 20:04:33 +03:00
fi
rm -r /tmp/usr
sync
}
2016-03-19 17:26:15 +03:00
customize_image( )
{
cp $SRC /userpatches/customize-image.sh $CACHEDIR /sdcard/tmp/customize-image.sh
chmod +x $CACHEDIR /sdcard/tmp/customize-image.sh
mkdir -p $CACHEDIR /sdcard/tmp/overlay
mount --bind $SRC /userpatches/overlay $CACHEDIR /sdcard/tmp/overlay
display_alert "Calling image customization script" "customize-image.sh" "info"
chroot $CACHEDIR /sdcard /bin/bash -c " /tmp/customize-image.sh $RELEASE $FAMILY $BOARD $BUILD_DESKTOP "
umount $CACHEDIR /sdcard/tmp/overlay
}