diff --git a/common.sh b/common.sh index e244568c8..b4286d00f 100644 --- a/common.sh +++ b/common.sh @@ -30,13 +30,13 @@ compile_uboot() exit_with_error "Error building u-boot: source directory does not exist" "$BOOTSOURCEDIR" fi - # read uboot version to variable $VER - grab_version "$SOURCES/$BOOTSOURCEDIR" "VER" + # read uboot version + local version=$(grab_version "$SOURCES/$BOOTSOURCEDIR") # create patch for manual source changes in debug mode [[ $DEBUG_MODE == yes ]] && userpatch_create "u-boot" - display_alert "Compiling uboot" "$VER" "info" + display_alert "Compiling uboot" "$version" "info" display_alert "Compiler version" "${UBOOT_COMPILER}gcc $(eval ${UBOOT_TOOLCHAIN:+env PATH=$UBOOT_TOOLCHAIN:$PATH} ${UBOOT_COMPILER}gcc -dumpversion)" "info" cd $SOURCES/$BOOTSOURCEDIR @@ -88,7 +88,7 @@ compile_uboot() Installed-Size: 1 Section: kernel Priority: optional - Description: Uboot loader $VER + Description: Uboot loader $version END # copy files to build directory @@ -135,13 +135,13 @@ compile_kernel() exit_with_error "Error building kernel: source directory does not exist" "$LINUXSOURCEDIR" fi - # read kernel version to variable $VER - grab_version "$SOURCES/$LINUXSOURCEDIR" "VER" + # read kernel version + local version=$(grab_version "$SOURCES/$LINUXSOURCEDIR") # create patch for manual source changes in debug mode [[ $DEBUG_MODE == yes ]] && userpatch_create "kernel" - display_alert "Compiling $BRANCH kernel" "$VER" "info" + display_alert "Compiling $BRANCH kernel" "$version" "info" display_alert "Compiler version" "${KERNEL_COMPILER}gcc $(eval ${KERNEL_TOOLCHAIN:+env PATH=$KERNEL_TOOLCHAIN:$PATH} ${KERNEL_COMPILER}gcc -dumpversion)" "info" cd $SOURCES/$LINUXSOURCEDIR/ @@ -186,7 +186,7 @@ compile_kernel() # different packaging for 4.3+ KERNEL_PACKING="deb-pkg" - IFS='.' read -a array <<< "$VER" + IFS='.' read -a array <<< "$version" if (( "${array[0]}" == "4" )) && (( "${array[1]}" >= "3" )); then KERNEL_PACKING="bindeb-pkg" fi @@ -335,35 +335,36 @@ install_external_applications() #-------------------------------------------------------------------------------------------------------------------------------- # Install external applications example #-------------------------------------------------------------------------------------------------------------------------------- -display_alert "Installing extra applications and drivers" "" "info" + display_alert "Installing extra applications and drivers" "" "info" -for plugin in $SRC/lib/extras/*.sh; do - source $plugin -done + for plugin in $SRC/lib/extras/*.sh; do + source $plugin + done -# MISC5 = sunxi display control -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 - make ARCH=$ARCHITECTURE CC="${KERNEL_COMPILER}gcc" KSRC="$SOURCES/$LINUXSOURCEDIR/" >> $DEST/debug/compilation.log 2>&1 - install -m 755 a10disp "$CACHEDIR/sdcard/usr/local/bin" -fi + # sunxi display changer + if [[ $BRANCH != next && $LINUXSOURCEDIR == *sunxi* ]]; then + cd "$SOURCES/$MISC5_DIR" + cp "$SOURCES/$LINUXSOURCEDIR/include/video/sunxi_disp_ioctl.h" . + make clean >/dev/null + make ARCH=$ARCHITECTURE CC="${KERNEL_COMPILER}gcc" KSRC="$SOURCES/$LINUXSOURCEDIR/" >> $DEST/debug/compilation.log 2>&1 + install -m 755 a10disp "$CACHEDIR/sdcard/usr/local/bin" + 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" - make clean >/dev/null 2>&1 - make ARCH=$ARCHITECTURE CC="${KERNEL_COMPILER}gcc" KSRC="$SOURCES/$LINUXSOURCEDIR/" >> $DEST/debug/compilation.log 2>&1 - install -m 755 a10disp "$CACHEDIR/sdcard/usr/local/bin" -fi + # sunxi display changer + # compile it for sun8i just in case sun7i stuff gets ported to sun8i and we're able to use it + #if [[ $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" + # make clean >/dev/null 2>&1 + # make ARCH=$ARCHITECTURE CC="${KERNEL_COMPILER}gcc" KSRC="$SOURCES/$LINUXSOURCEDIR/" >> $DEST/debug/compilation.log 2>&1 + # install -m 755 a10disp "$CACHEDIR/sdcard/usr/local/bin" + #fi -# h3disp for sun8i/3.4.x -if [[ $LINUXFAMILY == sun8i && $BRANCH == default ]]; then - install -m 755 "$SRC/lib/scripts/h3disp" "$CACHEDIR/sdcard/usr/local/bin" - install -m 755 "$SRC/lib/scripts/h3consumption" "$CACHEDIR/sdcard/usr/local/bin" -fi + # h3disp for sun8i/3.4.x + if [[ $LINUXFAMILY == sun8i && $BRANCH == default ]]; then + install -m 755 "$SRC/lib/scripts/h3disp" "$CACHEDIR/sdcard/usr/local/bin" + install -m 755 "$SRC/lib/scripts/h3consumption" "$CACHEDIR/sdcard/usr/local/bin" + fi } # write_uboot diff --git a/config/fex/nanopineo.fex b/config/fex/nanopineo.fex index 0a7f540eb..63e0eac80 100644 --- a/config/fex/nanopineo.fex +++ b/config/fex/nanopineo.fex @@ -173,14 +173,14 @@ uart_rx = port:PG07<2><1> [uart2] uart_used = 1 uart_port = 2 -uart_type = 4 +uart_type = 2 uart_tx = port:PA00<2><1> uart_rx = port:PA01<2><1> [uart3] uart_used = 1 uart_port = 3 -uart_type = 4 +uart_type = 2 uart_tx = port:PA13<3><1> uart_rx = port:PA14<3><1> diff --git a/configuration.sh b/configuration.sh index 6b5edccf9..cb6a19165 100644 --- a/configuration.sh +++ b/configuration.sh @@ -10,19 +10,16 @@ # # common options - REVISION="5.17$SUBREVISION" # all boards have same revision ROOTPWD="1234" # Must be changed @first login MAINTAINER="Igor Pecovnik" # deb signature MAINTAINERMAIL="igor.pecovnik@****l.com" # deb signature -SDSIZE="4000" # SD image size in MB TZDATA=`cat /etc/timezone` # Timezone for target is taken from host or defined here. -USEALLCORES="yes" # Use all CPU cores for compiling +USEALLCORES=yes # Use all CPU cores for compiling EXIT_PATCHING_ERROR="" # exit patching if failed -MISC5="https://github.com/hglm/a10disp/" # Display changer for Allwinner -MISC5_DIR="sunxi-display-changer" # local directory HOST="$BOARD" # set hostname to the board CACHEDIR=$DEST/cache +[[ -z $ROOTFS_TYPE ]] && ROOTFS_TYPE=ext4 # default rootfs type is ext4 # used by multiple sources - reduce code duplication if [[ $USE_MAINLINE_GOOGLE_MIRROR == yes ]]; then @@ -89,23 +86,23 @@ case $LINUXFAMILY in esac # Essential packages -PACKAGE_LIST="bash-completion bc bridge-utils build-essential cpufrequtils device-tree-compiler dosfstools figlet \ - fbset fping git hostapd ifenslave-2.6 iw lirc fake-hwclock wpasupplicant psmisc ntp parted rsync sudo curl \ +PACKAGE_LIST="bc bridge-utils build-essential cpufrequtils device-tree-compiler dosfstools figlet \ + fbset fping ifenslave-2.6 iw lirc fake-hwclock wpasupplicant psmisc ntp parted rsync sudo curl \ dialog crda wireless-regdb ncurses-term python3-apt sysfsutils toilet u-boot-tools unattended-upgrades \ - unzip usbutils wireless-tools console-setup console-data console-common unicode-data openssh-server initramfs-tools ca-certificates" + unzip usbutils wireless-tools console-setup console-common unicode-data openssh-server initramfs-tools ca-certificates" # development related packages. remove when they are not needed for building packages in chroot -PACKAGE_LIST="$PACKAGE_LIST automake cmake libwrap0-dev libssl-dev libtool pkg-config libusb-dev libusb-1.0-0-dev libnl-3-dev libnl-genl-3-dev" +PACKAGE_LIST="$PACKAGE_LIST automake libwrap0-dev libssl-dev libusb-dev libusb-1.0-0-dev libnl-3-dev libnl-genl-3-dev" # Non-essential packages PACKAGE_LIST_ADDITIONAL="alsa-utils btrfs-tools hddtemp iotop iozone3 stress sysbench screen ntfs-3g vim pciutils evtest htop pv lsof \ apt-transport-https libfuse2 libdigest-sha-perl libproc-processtable-perl w-scan aptitude dnsutils f3 haveged hdparm rfkill \ - vlan sysstat bluez bluez-tools" + vlan sysstat bluez bluez-tools bash-completion hostapd git" PACKAGE_LIST_DESKTOP="xserver-xorg xserver-xorg-video-fbdev gvfs-backends gvfs-fuse xfonts-base xinit nodm x11-xserver-utils xfce4 lxtask xterm mirage radiotray thunar-volman galculator \ gtk2-engines gtk2-engines-murrine gtk2-engines-pixbuf libgtk2.0-bin gcj-jre-headless xfce4-screenshooter libgnome2-perl gksu bluetooth \ - network-manager network-manager-gnome xfce4-notifyd gnome-keyring gcr libgck-1-0 libgcr-3-common libgcr-base-3-1 libgcr-ui-3-1 p11-kit p11-kit-modules \ - pasystray pavucontrol pulseaudio paman pavumeter pulseaudio-module-gconf pulseaudio-module-zeroconf pulseaudio-module-bluetooth blueman" + network-manager network-manager-gnome xfce4-notifyd gnome-keyring gcr libgck-1-0 libgcr-3-common p11-kit pasystray pavucontrol pulseaudio \ + paman pavumeter pulseaudio-module-gconf pulseaudio-module-zeroconf pulseaudio-module-bluetooth blueman libpam-gnome-keyring" PACKAGE_LIST_EXCLUDE="xfce4-mixer" @@ -113,7 +110,6 @@ PACKAGE_LIST_EXCLUDE="xfce4-mixer" case $RELEASE in wheezy) PACKAGE_LIST_RELEASE="less makedev kbd acpid acpi-support-base iperf libudev1" - PACKAGE_LIST_DESKTOP="$PACKAGE_LIST_DESKTOP mozo pluma iceweasel icedove" ;; jessie) PACKAGE_LIST_RELEASE="less makedev kbd libpam-systemd iperf3 software-properties-common libnss-myhostname f2fs-tools" @@ -121,7 +117,6 @@ case $RELEASE in ;; trusty) PACKAGE_LIST_RELEASE="man-db wget nano software-properties-common iperf f2fs-tools acpid" - PACKAGE_LIST_DESKTOP="$PACKAGE_LIST_DESKTOP libreoffice-writer thunderbird firefox gnome-icon-theme-full tango-icon-theme" PACKAGE_LIST_EXCLUDE="$PACKAGE_LIST_EXCLUDE ureadahead plymouth" ;; xenial) diff --git a/debootstrap-ng.sh b/debootstrap-ng.sh index f3ff764d7..e47fa7711 100644 --- a/debootstrap-ng.sh +++ b/debootstrap-ng.sh @@ -25,10 +25,7 @@ debootstrap_ng() { display_alert "Starting build process for" "$BOARD $RELEASE" "info" - # default rootfs type is ext4 - [[ -z $ROOTFS_TYPE ]] && ROOTFS_TYPE=ext4 - - [[ "ext4 f2fs btrfs nfs fel" != *"$ROOTFS_TYPE"* ]] && exit_with_error "Unknown rootfs type" "$ROOTFS_TYPE" + [[ "ext4 f2fs btrfs nfs fel" != *$ROOTFS_TYPE* ]] && exit_with_error "Unknown rootfs type" "$ROOTFS_TYPE" # Fixed image size is in 1M dd blocks (MiB) # to get size of block device /dev/sdX execute as root: @@ -44,8 +41,8 @@ debootstrap_ng() trap unmount_on_exit INT TERM EXIT # stage: clean and create directories - rm -rf $CACHEDIR/sdcard $CACHEDIR/mount - mkdir -p $CACHEDIR/sdcard $CACHEDIR/mount $DEST/images $CACHEDIR/rootfs + rm -rf $CACHEDIR/{sdcard,mount} + mkdir -p $CACHEDIR/{sdcard,mount,rootfs} $DEST/images # stage: verify tmpfs configuration and mount # default maximum size for tmpfs mount is 1/2 of available RAM @@ -66,8 +63,8 @@ debootstrap_ng() # stage: install kernel and u-boot packages # install distribution and board specific applications - # mount deb storage to tmp - mount --bind $DEST/debs/ $CACHEDIR/sdcard/tmp + mkdir -p $CACHEDIR/sdcard/tmp/debs + mount --bind $DEST/debs/ $CACHEDIR/sdcard/tmp/debs install_distribution_specific install_common @@ -86,7 +83,7 @@ debootstrap_ng() fi # cleanup for install_kernel and install_board_specific - umount $CACHEDIR/sdcard/tmp > /dev/null 2>&1 + umount $CACHEDIR/sdcard/tmp/debs && rm -rf $CACHEDIR/sdcard/tmp/debs # stage: user customization script # NOTE: installing too many packages may fill tmpfs mount @@ -157,7 +154,7 @@ create_rootfs_cache() ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Debootstrap (stage 1/2)..." $TTY_Y $TTY_X'} \ ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} - [[ ${PIPESTATUS[0]} -ne 0 ]] && exit_with_error "Debootstrap base system first stage failed" + [[ ${PIPESTATUS[0]} -ne 0 || ! -f $CACHEDIR/sdcard/debootstrap/debootstrap ]] && exit_with_error "Debootstrap base system first stage failed" cp /usr/bin/$QEMU_BINARY $CACHEDIR/sdcard/usr/bin/ @@ -429,13 +426,9 @@ prepare_partitions() create_image() { # stage: create file name - VER=${VER/-$LINUXFAMILY/} - VERSION=$VERSION" "$VER - VERSION=${VERSION// /_} - VERSION=${VERSION//$BRANCH/} - VERSION=${VERSION//__/_} - [[ $BUILD_DESKTOP == yes ]] && VERSION=${VERSION}_desktop - [[ $ROOTFS_TYPE == nfs ]] && VERSION=${VERSION}_nfsboot + local version="Armbian_${REVISION}_${BOARD^}_${DISTRIBUTION}_${RELEASE}_${VER/-$LINUXFAMILY/}" + [[ $BUILD_DESKTOP == yes ]] && version=${version}_desktop + [[ $ROOTFS_TYPE == nfs ]] && version=${version}_nfsboot if [[ $ROOTFS_TYPE != nfs ]]; then display_alert "Copying files to image" "tmprootfs.raw" "info" @@ -444,7 +437,7 @@ create_image() else display_alert "Creating rootfs archive" "rootfs.tgz" "info" tar cp --xattrs --directory=$CACHEDIR/sdcard/ --exclude='./boot/*' --exclude='./dev/*' --exclude='./proc/*' --exclude='./run/*' --exclude='./tmp/*' \ - --exclude='./sys/*' . | pv -p -b -r -s $(du -sb $CACHEDIR/sdcard/ | cut -f1) -N "rootfs.tgz" | pigz > $DEST/images/$VERSION-rootfs.tgz + --exclude='./sys/*' . | pv -p -b -r -s $(du -sb $CACHEDIR/sdcard/ | cut -f1) -N "rootfs.tgz" | pigz > $DEST/images/${version}-rootfs.tgz fi # stage: rsync /boot @@ -464,7 +457,6 @@ create_image() # stage: write u-boot write_uboot $LOOP - # stage: copy armbian.txt TODO: Copy only if creating zip file? cp $CACHEDIR/sdcard/etc/armbian.txt $CACHEDIR/ # unmount /boot first, rootfs second, image file last @@ -473,31 +465,32 @@ create_image() [[ $ROOTFS_TYPE != nfs ]] && umount -l $CACHEDIR/mount losetup -d $LOOP - mv $CACHEDIR/tmprootfs.raw $CACHEDIR/$VERSION.raw + mv $CACHEDIR/tmprootfs.raw $CACHEDIR/${version}.raw cd $CACHEDIR/ # stage: compressing or copying image file if [[ $COMPRESS_OUTPUTIMAGE != yes ]]; then - display_alert "Copying image file" "$VERSION.raw" "info" - mv -f $CACHEDIR/$VERSION.raw $DEST/images/$VERSION.raw - display_alert "Done building" "$DEST/images/$VERSION.raw" "info" + mv -f $CACHEDIR/${version}.raw $DEST/images/${version}.raw + display_alert "Done building" "$DEST/images/${version}.raw" "info" else display_alert "Signing and compressing" "Please wait!" "info" + # stage: generate sha256sum + sha256sum -b ${version}.raw > sha256sum # stage: sign with PGP if [[ -n $GPG_PASS ]]; then - echo $GPG_PASS | gpg --passphrase-fd 0 --armor --detach-sign --batch --yes $VERSION.raw + echo $GPG_PASS | gpg --passphrase-fd 0 --armor --detach-sign --batch --yes ${version}.raw echo $GPG_PASS | gpg --passphrase-fd 0 --armor --detach-sign --batch --yes armbian.txt fi if [[ $SEVENZIP == yes ]]; then - FILENAME=$DEST/images/$VERSION.7z - 7za a -t7z -bd -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on $FILENAME $VERSION.raw* armbian.txt >/dev/null 2>&1 + local filename=$DEST/images/${version}.7z + 7za a -t7z -bd -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on $filename ${version}.raw armbian.txt *.asc sha256sum >/dev/null 2>&1 else - FILENAME=$DEST/images/$VERSION.zip - zip -FSq $FILENAME $VERSION.raw* armbian.txt + local filename=$DEST/images/${version}.zip + zip -FSq $filename ${version}.raw armbian.txt *.asc sha256sum fi - rm -f $VERSION.raw *.asc armbian.txt - FILESIZE=$(ls -l --b=M $FILENAME | cut -d " " -f5) - display_alert "Done building" "$FILENAME [$FILESIZE]" "info" + rm -f ${version}.raw *.asc armbian.txt sha256sum + local filesize=$(ls -l --b=M $filename | cut -d " " -f5) + display_alert "Done building" "$filename [$filesize]" "info" fi } ############################################################################# diff --git a/desktop.sh b/desktop.sh index 5c27de024..ff408c02f 100644 --- a/desktop.sh +++ b/desktop.sh @@ -13,12 +13,12 @@ install_desktop () { display_alert "Installing desktop" "XFCE" "info" - umount $CACHEDIR/sdcard/tmp >/dev/null 2>&1 - mount --bind $SRC/lib/bin/ $CACHEDIR/sdcard/tmp + mkdir -p $CACHEDIR/sdcard/tmp/bin + mount --bind $SRC/lib/bin/ $CACHEDIR/sdcard/tmp/bin # install default desktop settings - chroot $CACHEDIR/sdcard /bin/bash -c "tar xfz /tmp/$RELEASE-desktop.tgz -C /etc/skel/" - chroot $CACHEDIR/sdcard /bin/bash -c "tar xfz /tmp/$RELEASE-desktop.tgz -C /root/" + chroot $CACHEDIR/sdcard /bin/bash -c "tar xfz /tmp/bin/$RELEASE-desktop.tgz -C /etc/skel/" + chroot $CACHEDIR/sdcard /bin/bash -c "tar xfz /tmp/bin/$RELEASE-desktop.tgz -C /root/" # install wallpapers case $RELEASE in @@ -41,11 +41,8 @@ install_desktop () esac # Install custom icons and theme - chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/vibrancy-colors_2.4-trusty-Noobslab.com_all.deb >/dev/null 2>&1" - chroot $CACHEDIR/sdcard /bin/bash -c "unzip -qq /tmp/NumixHolo.zip -d /usr/share/themes" - - # unmount bind mount - umount $CACHEDIR/sdcard/tmp >/dev/null 2>&1 + chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/bin/vibrancy-colors_2.4-trusty-Noobslab.com_all.deb >/dev/null 2>&1" + chroot $CACHEDIR/sdcard /bin/bash -c "unzip -qq /tmp/bin/NumixHolo.zip -d /usr/share/themes" # Enable network manager if [[ -f ${CACHEDIR}/sdcard/etc/NetworkManager/NetworkManager.conf ]]; then @@ -89,4 +86,6 @@ install_desktop () sed "s/sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_no_mali_mem_reserve sunxi_fb_mem_reserve=16 //g" -i $CACHEDIR/sdcard/boot/boot.cmd mkimage -C none -A arm -T script -d $CACHEDIR/sdcard/boot/boot.cmd $CACHEDIR/sdcard/boot/boot.scr >> /dev/null fi + + umount $CACHEDIR/sdcard/tmp/bin && rm -rf $CACHEDIR/sdcard/tmp/bin } diff --git a/distributions.sh b/distributions.sh index bc57354fd..1c7c810ac 100644 --- a/distributions.sh +++ b/distributions.sh @@ -27,6 +27,8 @@ install_common() # before installing board support package rm $CACHEDIR/sdcard/etc/network/interfaces + mkdir -p $CACHEDIR/sdcard/selinux + # console fix due to Debian bug sed -e 's/CHARMAP=".*"/CHARMAP="'$CONSOLE_CHAR'"/g' -i $CACHEDIR/sdcard/etc/default/console-setup @@ -80,43 +82,39 @@ install_common() ff02::2 ip6-allrouters EOF - # extract kernel version - VER=$(dpkg --info $DEST/debs/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb | grep Descr | awk '{print $(NF)}') - VER="${VER/-$LINUXFAMILY/}" - # we need package names for dtb, uboot and headers DTB_TMP="${CHOSEN_KERNEL/image/dtb}" FW_TMP="${CHOSEN_KERNEL/image/firmware-image}" HEADERS_TMP="${CHOSEN_KERNEL/image/headers}" display_alert "Installing kernel" "$CHOSEN_KERNEL" "info" - chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 + chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/debs/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 display_alert "Installing u-boot" "$CHOSEN_UBOOT" "info" - chroot $CACHEDIR/sdcard /bin/bash -c "DEVICE=/dev/null dpkg -i /tmp/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 + chroot $CACHEDIR/sdcard /bin/bash -c "DEVICE=/dev/null dpkg -i /tmp/debs/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 display_alert "Installing headers" "$HEADERS_TMP" "info" - chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/${HEADERS_TMP}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 + chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/debs/${HEADERS_TMP}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 # install firmware - #if [[ -f $CACHEDIR/sdcard/tmp/${FW_TMP}_${REVISION}_${ARCH}.deb ]]; then + #if [[ -f $CACHEDIR/sdcard/tmp/debs/${FW_TMP}_${REVISION}_${ARCH}.deb ]]; then # display_alert "Installing firmware" "$FW_TMP" "info" - # chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/${FW_TMP}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 + # chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/debs/${FW_TMP}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 #fi if [[ -f $CACHEDIR/sdcard/tmp/armbian-firmware_${REVISION}_${ARCH}.deb ]]; then display_alert "Installing generic firmware" "armbian-firmware" "info" - chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/armbian-firmware_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 + chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/debs/armbian-firmware_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 fi if [[ -f $CACHEDIR/sdcard/tmp/${DTB_TMP}_${REVISION}_${ARCH}.deb ]]; then display_alert "Installing DTB" "$DTB_TMP" "info" - chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/${DTB_TMP}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 + chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/debs/${DTB_TMP}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 fi # install board support package display_alert "Installing board support package" "$BOARD" "info" - chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/$RELEASE/${CHOSEN_ROOTFS}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 + chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/debs/$RELEASE/${CHOSEN_ROOTFS}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 # copy boot splash image cp $SRC/lib/bin/armbian.bmp $CACHEDIR/sdcard/boot/boot.bmp @@ -166,9 +164,6 @@ install_distribution_specific() # enable root login for latest ssh on jessie sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' $CACHEDIR/sdcard/etc/ssh/sshd_config - # fix selinux error - mkdir $CACHEDIR/sdcard/selinux - # add serial console #cp $SRC/lib/config/ttyS0.conf $CACHEDIR/sdcard/etc/init/$SERIALCON.conf #sed -e "s/ttyS0/$SERIALCON/g" -i $CACHEDIR/sdcard/etc/init/$SERIALCON.conf @@ -209,9 +204,6 @@ install_distribution_specific() # enable root login for latest ssh on trusty sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' $CACHEDIR/sdcard/etc/ssh/sshd_config - # fix selinux error - mkdir $CACHEDIR/sdcard/selinux - # remove legal info from Ubuntu [[ -f $CACHEDIR/sdcard/etc/legal ]] && rm $CACHEDIR/sdcard/etc/legal @@ -230,9 +222,6 @@ install_distribution_specific() # enable root login for latest ssh on jessie sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' $CACHEDIR/sdcard/etc/ssh/sshd_config - # fix selinux error - mkdir $CACHEDIR/sdcard/selinux - # remove legal info from Ubuntu [[ -f $CACHEDIR/sdcard/etc/legal ]] && rm $CACHEDIR/sdcard/etc/legal diff --git a/extras/firmware.sh b/extras/firmware.sh index 2b1afcdc9..b636528b5 100644 --- a/extras/firmware.sh +++ b/extras/firmware.sh @@ -14,7 +14,7 @@ build_firmware() local plugin_repo="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git" local plugin_dir="armbian-firmware" - #fetch_from_github "$plugin_repo" "$plugin_dir/lib/firmware" + #fetch_from_repo "$plugin_repo" "$plugin_dir/lib/firmware" "branch:master" mkdir -p $SOURCES/$plugin_dir/lib/firmware # overlay our firmware cp -R $SRC/lib/bin/firmware-overlay/* $SOURCES/$plugin_dir/lib/firmware @@ -31,6 +31,7 @@ build_firmware() Architecture: $ARCH Maintainer: $MAINTAINER <$MAINTAINERMAIL> Installed-Size: 1 + Replaces: linux-firmware Section: kernel Priority: optional Description: Linux firmware diff --git a/extras/mt7601.sh b/extras/mt7601.sh index 386014e15..bac51cb99 100644 --- a/extras/mt7601.sh +++ b/extras/mt7601.sh @@ -12,7 +12,7 @@ install_mt7601() local plugin_repo="https://github.com/igorpecovnik/mt7601" local plugin_dir="mt7601" - fetch_from_github "$plugin_repo" "$plugin_dir" "old" + fetch_from_repo "$plugin_repo" "$plugin_dir" "branch:old" cd $SOURCES/$plugin_dir diff --git a/extras/rtl8192cu.sh b/extras/rtl8192cu.sh index 6a4dcb0f8..1de9e4dc4 100644 --- a/extras/rtl8192cu.sh +++ b/extras/rtl8192cu.sh @@ -15,9 +15,9 @@ install_rtl8192cu() # https://github.com/pvaret/rtl8192cu-fixes local plugin_dir="rt8192cu" - fetch_from_github "$plugin_repo" "$plugin_dir" + fetch_from_repo "$plugin_repo" "$plugin_dir" "branch:master" cd $SOURCES/$plugin_dir - #git checkout 0ea77e747df7d7e47e02638a2ee82ad3d1563199 + make ARCH=$ARCHITECTURE CROSS_COMPILE=$KERNEL_COMPILER clean >> $DEST/debug/compilation.log # GCC5 compatibility patch diff --git a/general.sh b/general.sh index 53ee72410..868a1c5be 100644 --- a/general.sh +++ b/general.sh @@ -14,7 +14,6 @@ # exit_with_error # get_package_list_hash # create_sources_list -# fetch_from_github # fetch_from_repo # display_alert # grab_version @@ -147,80 +146,6 @@ create_sources_list() esac } -# fetch_from_github -# -# parameters: -# : Git repository -# : where to place under SOURCES -# : cubieboard, cubieboard2, cubietruck, ... -# : additional description text -# : boolean - -fetch_from_github (){ -GITHUBSUBDIR=$3 -local githuburl=$1 -[[ -z "$3" ]] && GITHUBSUBDIR="branchless" -[[ -z "$4" ]] && GITHUBSUBDIR="" # only kernel and u-boot have subdirs for tags -if [ -d "$SOURCES/$2/$GITHUBSUBDIR" ]; then - cd $SOURCES/$2/$GITHUBSUBDIR - git checkout -q $FORCE $3 2> /dev/null - local bar_1=$(git ls-remote $githuburl --tags $GITHUBSUBDIR* | sed -n '1p' | cut -f1 | cut -c1-7) - local bar_2=$(git ls-remote $githuburl --tags $GITHUBSUBDIR* | sed -n '2p' | cut -f1 | cut -c1-7) - local bar_3=$(git ls-remote $githuburl --tags HEAD * | sed -n '1p' | cut -f1 | cut -c1-7) - local localbar="$(git rev-parse HEAD | cut -c1-7)" - - # debug - # echo "git ls-remote $githuburl --tags $GITHUBSUBDIR* | sed -n '1p' | cut -f1" - # echo "git ls-remote $githuburl --tags $GITHUBSUBDIR* | sed -n '2p' | cut -f1" - # echo "git ls-remote $githuburl --tags HEAD * | sed -n '1p' | cut -f1" - # echo "$3 - $bar_1 || $bar_2 = $localbar" - # echo "$3 - $bar_3 = $localbar" - - # ===>> workaround >> [[ $bar_1 == "" && $bar_2 == "" ]] - - if [[ "$3" != "" ]] && [[ "$bar_1" == "$localbar" || "$bar_2" == "$localbar" ]] || [[ "$3" == "" && "$bar_3" == "$localbar" ]] || [[ $bar_1 == "" && $bar_2 == "" ]]; then - display_alert "... you have latest sources" "$2 $3" "info" - else - if [ "$DEBUG_MODE" != yes ]; then - display_alert "... your sources are outdated - creating new shallow clone" "$2 $3" "info" - if [[ -z "$GITHUBSUBDIR" ]]; then - rm -rf $SOURCES/$2".old" - mv $SOURCES/$2 $SOURCES/$2".old" - else - rm -rf $SOURCES/$2/$GITHUBSUBDIR".old" - mv $SOURCES/$2/$GITHUBSUBDIR $SOURCES/$2/$GITHUBSUBDIR".old" - fi - - if [[ -n $3 && -n "$(git ls-remote $1 | grep "$tag")" ]]; then - git clone -n $1 $SOURCES/$2/$GITHUBSUBDIR -b $3 --depth 1 || git clone -n $1 $SOURCES/$2/$GITHUBSUBDIR -b $3 - else - git clone -n $1 $SOURCES/$2/$GITHUBSUBDIR --depth 1 - fi - fi - cd $SOURCES/$2/$GITHUBSUBDIR - git checkout -q - fi -else - if [[ -n $3 && -n "$(git ls-remote $1 | grep "$tag")" ]]; then - display_alert "... creating a shallow clone" "$2 $3" "info" - # Toradex git's doesn't support shallow clone. Need different solution than this. - git clone -n $1 $SOURCES/$2/$GITHUBSUBDIR -b $3 --depth 1 || git clone -n $1 $SOURCES/$2/$GITHUBSUBDIR -b $3 - cd $SOURCES/$2/$GITHUBSUBDIR - git checkout -q $3 - else - display_alert "... creating a shallow clone" "$2" "info" - git clone -n $1 $SOURCES/$2/$GITHUBSUBDIR --depth 1 - cd $SOURCES/$2/$GITHUBSUBDIR - git checkout -q - fi - -fi -cd $SRC -if [ $? -ne 0 ]; then - exit_with_error "Github download failed" "$1" -fi -} - # fetch_rom_repo # : remote repository URL # : local directory; subdir for branch/tag will be created @@ -368,21 +293,19 @@ display_alert() } #--------------------------------------------------------------------------------------------------------------------------------- -# grab_version +# grab_version # -# : Extract kernel or uboot version from Makefile -# : write version to this variable +# : Extract kernel or uboot version from $path/Makefile #--------------------------------------------------------------------------------------------------------------------------------- -grab_version () +grab_version() { - local var=("VERSION" "PATCHLEVEL" "SUBLEVEL" "EXTRAVERSION") local ver="" - for dir in "${var[@]}"; do - tmp=$(cat $1/Makefile | grep $dir | head -1 | awk '{print $(NF)}' | cut -d '=' -f 2)"#" - [[ $tmp != "#" ]] && ver=$ver$tmp + for component in VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION; do + tmp=$(cat $1/Makefile | grep $component | head -1 | awk '{print $(NF)}' | cut -d '=' -f 2)"#" + [[ $tmp != "#" ]] && ver="$ver$tmp" done ver=${ver//#/.}; ver=${ver%.}; ver=${ver//.-/-} - eval $"$2"="$ver" + echo $ver } fingerprint_image() @@ -390,10 +313,10 @@ fingerprint_image() #-------------------------------------------------------------------------------------------------------------------------------- # Saving build summary to the image #-------------------------------------------------------------------------------------------------------------------------------- - display_alert "Fingerprinting" "$VERSION" "info" + display_alert "Fingerprinting" cat <<-EOF > $1 -------------------------------------------------------------------------------- - Title: $VERSION + Title: Armbian $REVISION ${BOARD^} $DISTRIBUTION $RELEASE $BRANCH Kernel: Linux $VER Build date: $(date +'%d.%m.%Y') Author: Igor Pecovnik, www.igorpecovnik.com @@ -413,15 +336,14 @@ addtorepo() # parameter "remove" dumps all and creates new # function: cycle trough distributions local distributions=("wheezy" "jessie" "trusty" "xenial") - + # workaround since we dont't build utils for those - mkdir -p ../output/debs/extra/wheezy/ - mkdir -p ../output/debs/extra/trusty/ + mkdir -p ../output/debs/extra/{wheezy,trusty} ln -sf ../jessie/utils ../output/debs/extra/wheezy/utils ln -sf ../jessie/utils ../output/debs/extra/trusty/utils - + for release in "${distributions[@]}"; do - + # let's drop from publish if exits if [[ -n $(aptly publish list -config=config/aptly.conf -raw | awk '{print $(NF)}' | grep $release) ]]; then aptly publish drop -config=config/aptly.conf $release > /dev/null 2>&1 @@ -460,15 +382,15 @@ addtorepo() else display_alert "Not adding $release" "main" "wrn" fi - + # adding main distribution packages if find ${POT}${release} -maxdepth 1 -type f -name "*.deb" 2>/dev/null | grep -q .; then display_alert "Adding to repository $release" "main" "ext" aptly repo add -force-replace=$replace -config=config/aptly.conf $release ${POT}${release}/*.deb else display_alert "Not adding $release" "main" "wrn" - fi - + fi + # adding utils if find ${POT}extra/$release/utils -maxdepth 1 -type f -name "*.deb" 2>/dev/null | grep -q .; then display_alert "Adding to repository $release" "utils" "ext" diff --git a/main.sh b/main.sh index d8c2038c9..a8d5a44a9 100644 --- a/main.sh +++ b/main.sh @@ -75,8 +75,6 @@ else CCACHE="" fi -if [[ $FORCE_CHECKOUT == yes ]]; then FORCE="-f"; else FORCE=""; fi - # optimize build time with 100% CPU usage CPUS=$(grep -c 'processor' /proc/cpuinfo) if [[ $USEALLCORES != no ]]; then @@ -85,7 +83,7 @@ else CTHREADS="-j1" fi -# Check and fix dependencies, directory structure and settings +# Check and install dependencies, directory structure and settings prepare_host # if KERNEL_ONLY, BOARD, BRANCH or RELEASE are not set, display selection menu @@ -140,7 +138,7 @@ if [[ $KERNEL_ONLY != yes && -z $RELEASE ]]; then [[ -z $RELEASE ]] && exit_with_error "No release selected" fi -if [[ $KERNEL_ONLY != yes && -z $BUILD_DESKTOP ]]; then +if [[ $KERNEL_ONLY != yes && -z $BUILD_DESKTOP && "jessie xenial" == *$RELEASE* ]]; then options=() options+=("no" "Image with console interface") options+=("yes" "Image with desktop environment") @@ -151,25 +149,14 @@ fi source $SRC/lib/configuration.sh -# The name of the job -VERSION="Armbian $REVISION ${BOARD^} $DISTRIBUTION $RELEASE $BRANCH" - -echo `date +"%d.%m.%Y %H:%M:%S"` $VERSION >> $DEST/debug/output.log (cd $SRC/lib; echo "Build script version: $(git rev-parse @)") >> $DEST/debug/output.log display_alert "Starting Armbian build script" "@host" "info" -# display what we do -if [[ $KERNEL_ONLY == yes ]]; then - display_alert "Compiling kernel" "$BOARD" "info" -else - display_alert "Building" "$VERSION" "info" -fi - # sync clock if [[ $SYNC_CLOCK != no ]]; then display_alert "Syncing clock" "host" "info" - eval ntpdate -s ${NTP_SERVER:- time.ijs.si} + ntpdate -s ${NTP_SERVER:- time.ijs.si} fi start=`date +%s` @@ -183,12 +170,12 @@ BOOTSOURCEDIR=$BOOTDIR/${BOOTBRANCH##*:} fetch_from_repo "$KERNELSOURCE" "$KERNELDIR" "$KERNELBRANCH" "yes" LINUXSOURCEDIR=$KERNELDIR/${KERNELBRANCH##*:} -if [[ -n $MISC5 ]]; then fetch_from_github "$MISC5" "$MISC5_DIR"; fi -if [[ -n $MISC6 ]]; then fetch_from_github "$MISC6" "$MISC6_DIR"; fi +# TODO: move to armbian-tools or extras-buildpkgs +fetch_from_repo "https://github.com/hglm/a10disp/" "sunxi-display-changer" "branch:master" + +compile_sunxi_tools -# compile sunxi tools if [[ $LINUXFAMILY == sun*i ]]; then - compile_sunxi_tools [[ $BRANCH != default && $LINUXFAMILY != sun8i ]] && LINUXFAMILY="sunxi" fi @@ -212,8 +199,7 @@ if [[ ! -f $DEST/debs/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb ]]; then find_toolchain "UBOOT" "$UBOOT_NEEDS_GCC" "UBOOT_TOOLCHAIN" fi cd $SOURCES/$BOOTSOURCEDIR - grab_version "$SOURCES/$BOOTSOURCEDIR" "UBOOT_VER" - [[ $FORCE_CHECKOUT == yes ]] && advanced_patch "u-boot" "$BOOTDIR-$BRANCH" "$BOARD" "$BOOTDIR-$BRANCH $UBOOT_VER" + [[ $FORCE_CHECKOUT == yes ]] && advanced_patch "u-boot" "$BOOTDIR-$BRANCH" "$BOARD" "$BOOTDIR-$BRANCH" compile_uboot fi @@ -232,11 +218,14 @@ if [[ ! -f $DEST/debs/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb ]]; then [[ $FORCE_CHECKOUT == yes ]] && patch --batch --silent -t -p1 < $SRC/lib/patch/kernel/compiler.patch >> $DEST/debug/output.log 2>&1 fi - grab_version "$SOURCES/$LINUXSOURCEDIR" "KERNEL_VER" - [[ $FORCE_CHECKOUT == yes ]] && advanced_patch "kernel" "$LINUXFAMILY-$BRANCH" "$BOARD" "$LINUXFAMILY-$BRANCH $KERNEL_VER" + [[ $FORCE_CHECKOUT == yes ]] && advanced_patch "kernel" "$LINUXFAMILY-$BRANCH" "$BOARD" "$LINUXFAMILY-$BRANCH" compile_kernel fi +# extract kernel version from .deb package +VER=$(dpkg --info $DEST/debs/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb | grep Descr | awk '{print $(NF)}') +VER="${VER/-$LINUXFAMILY/}" + [[ -n $RELEASE ]] && create_board_package # chroot-buildpackages diff --git a/makeboarddeb.sh b/makeboarddeb.sh index 44c5341f4..e4daf6830 100644 --- a/makeboarddeb.sh +++ b/makeboarddeb.sh @@ -37,7 +37,7 @@ create_board_package() Provides: armbian-bsp Conflicts: armbian-bsp Replaces: base-files - Recommends: bsdutils, parted, python3-apt, util-linux, initramfs-tools + Recommends: bsdutils, parted, python3-apt, util-linux, initramfs-tools, toilet Description: Armbian tweaks for $RELEASE on $BOARD ($BRANCH branch) EOF