From 4acf58d9e49d6e9c97dd7f7444a1e3ed77c59c47 Mon Sep 17 00:00:00 2001 From: zador-blood-stained Date: Fri, 19 Aug 2016 19:16:03 +0300 Subject: [PATCH] Update packages building code --- chroot-buildpackages.sh | 286 ++++++++++---------- debootstrap-ng.sh | 7 +- extras-buildpkgs/00-libdri2.conf | 2 +- extras-buildpkgs/04-libvdpau.conf | 2 +- extras-buildpkgs/05-libump.conf | 2 +- extras-buildpkgs/06-libcedrus.conf | 2 +- extras-buildpkgs/06-xf86-video-fbturbo.conf | 2 +- extras-buildpkgs/09-ffmpeg.conf | 2 +- extras-buildpkgs/90-fswebcam-gc2035.conf | 2 +- extras-buildpkgs/90-guvcview.conf | 2 +- extras-buildpkgs/90-libglshim.conf | 2 +- extras-buildpkgs/90-libmali-sunxi-r3p0.conf | 2 +- extras-buildpkgs/90-libvdpau-sunxi.conf | 2 +- extras-buildpkgs/90-mpv.conf | 2 +- extras-buildpkgs/README.md | 65 ++--- main.sh | 5 +- 16 files changed, 182 insertions(+), 205 deletions(-) diff --git a/chroot-buildpackages.sh b/chroot-buildpackages.sh index 5162c38d4c..0100738314 100644 --- a/chroot-buildpackages.sh +++ b/chroot-buildpackages.sh @@ -12,33 +12,30 @@ # create_chroot # update_chroot # chroot_build_packages +# chroot_installpackages_local # chroot_installpackages -# create_chroot -# : directory to put files +# create_chroot # create_chroot() { - display_alert "Creating build chroot" "$RELEASE" "info" local target_dir="$1" + local release=$2 + local arch=$3 + declare -A qemu_binary + qemu_binary['armhf']='qemu-arm-static' + qemu_binary['arm64']='qemu-aarch64-static' + display_alert "Creating build chroot" "$release" "info" local includes="ccache,locales,git,ca-certificates,devscripts,libfile-fcntllock-perl,debhelper,rsync,python3" - case $RELEASE in - jessie) - includes="$includes,debian-keyring,debian-archive-keyring" - ;; - xenial) - includes="$includes,ubuntu-keyring" - ;; - esac - debootstrap --variant=buildd --arch=$ARCH --foreign --include="$includes" $RELEASE $target_dir "http://localhost:3142/$APT_MIRROR" + debootstrap --variant=buildd --arch=$arch --foreign --include="$includes" $release $target_dir "http://localhost:3142/$APT_MIRROR" [[ $? -ne 0 || ! -f $target_dir/debootstrap/debootstrap ]] && exit_with_error "Create chroot first stage failed" - cp /usr/bin/$QEMU_BINARY $target_dir/usr/bin/ + cp /usr/bin/${qemu_binary[$arch]} $target_dir/usr/bin/ [[ ! -f $target_dir/usr/share/keyrings/debian-archive-keyring.gpg ]] && \ mkdir -p $target_dir/usr/share/keyrings/ && \ cp /usr/share/keyrings/debian-archive-keyring.gpg $target_dir/usr/share/keyrings/ chroot $target_dir /bin/bash -c "/debootstrap/debootstrap --second-stage" [[ $? -ne 0 || ! -f $target_dir/bin/bash ]] && exit_with_error "Create chroot second stage failed" - cp $SRC/lib/config/apt/sources.list.$RELEASE $target_dir/etc/apt/sources.list + cp $SRC/lib/config/apt/sources.list.$release $target_dir/etc/apt/sources.list echo 'Acquire::http { Proxy "http://localhost:3142"; };' > $target_dir/etc/apt/apt.conf.d/02proxy cat <<-EOF > $target_dir/etc/apt/apt.conf.d/71-no-recommends APT::Install-Recommends "0"; @@ -48,160 +45,147 @@ create_chroot() chroot $target_dir /bin/bash -c "locale-gen; update-locale LANG=en_US:en LC_ALL=en_US.UTF-8" printf '#!/bin/sh\nexit 101' > $target_dir/usr/sbin/policy-rc.d chmod 755 $target_dir/usr/sbin/policy-rc.d - rm $target_dir/etc/resolv.conf + rm $target_dir/etc/resolv.conf 2>/dev/null echo "8.8.8.8" > $target_dir/etc/resolv.conf - rm $target_dir/etc/hosts + rm $target_dir/etc/hosts 2>/dev/null echo "127.0.0.1 localhost" > $target_dir/etc/hosts - touch $target_dir/root/.debootstrap-complete - display_alert "Debootstrap complete" "$RELEASE" "info" -} ############################################################################# - -# update_chroot -# : directory to put files -# -update_chroot() -{ - local target_dir="$1" - local t=$target_dir/root/.update-timestamp - # apply changes to previously created chroots mkdir -p $target_dir/root/{build,overlay,sources} $target_dir/selinux - # it is symlinked to /run/lock by default if [[ -L $target_dir/var/lock ]]; then - rm -rf $target_dir/var/lock + rm -rf $target_dir/var/lock 2>/dev/null mkdir -p $target_dir/var/lock fi - if [[ ! -f $t || $(( ($(date +%s) - $(<$t)) / 86400 )) -gt 2 ]]; then - display_alert "Upgrading packages" "$RELEASE" "info" - systemd-nspawn -a -q -D $target_dir /bin/bash -c "apt-get -q update; apt-get -q -y upgrade; apt-get clean" - date +%s > $t - fi - cat <<-'EOF' > $target_dir/root/install-deps.sh - #!/bin/bash - deps=() - installed=$(dpkg-query -W -f '${db:Status-Abbrev}|${binary:Package}\n' '*' 2>/dev/null | grep '^ii' | awk -F '|' '{print $2}' | cut -d ':' -f 1) - for packet in "$@"; do grep -q -x -e "$packet" <<< "$installed" || deps+=("$packet"); done - [[ ${#deps[@]} -gt 0 ]] && apt-get -y --no-install-recommends install "${deps[@]}" - EOF - chmod +x $target_dir/root/install-deps.sh + touch $target_dir/root/.debootstrap-complete + display_alert "Debootstrap complete" "$release" "info" } ############################################################################# # chroot_build_packages # chroot_build_packages() { - [[ $RELEASE != jessie && $RELEASE != xenial ]] && return + for release in jessie xenial; do + for arch in armhf arm64; do + display_alert "Starting package building process" "$release $arch" "info" - display_alert "Starting package building process" "$RELEASE" "info" + local target_dir=$DEST/buildpkg/${release}-${arch} + # to avoid conflicts between published and self-built packages higher pin-priority may be enough + # or may use hostname or other unique identifier or smth like builddate=$(date +"%Y%m%d") - local target_dir=$DEST/buildpkg/${RELEASE}-${ARCH} - # to avoid conflicts between published and self-built packages - # higher pin-priority may be enough - # may use hostname or other unique identifier - # local builddate=$(date +"%Y%m%d") + [[ ! -f $target_dir/root/.debootstrap-complete ]] && create_chroot "$target_dir" "$release" "$arch" + [[ ! -f $target_dir/root/.debootstrap-complete ]] && exit_with_error "Creating chroot failed" "$release" - mkdir -p $DEST/debs/extra/$RELEASE - [[ ! -f $target_dir/root/.debootstrap-complete ]] && create_chroot "$target_dir" - [[ ! -f $target_dir/bin/bash ]] && exit_with_error "Creating chroot failed" "$RELEASE" - - update_chroot "$target_dir" - - for plugin in $SRC/lib/extras-buildpkgs/*.conf; do - unset package_name package_repo package_ref package_builddeps package_install_chroot package_install_target \ - package_prebuild_eval package_upstream_version needs_building plugin_target_dir package_component - source $plugin - - # check build arch - [[ $package_arch != $ARCH && $package_arch != all ]] && continue - - local plugin_target_dir=$DEST/debs/extra/$RELEASE/$package_component/ - mkdir -p $plugin_target_dir - - # check if needs building - local needs_building=no - if [[ -n $package_install_target ]]; then - for f in $package_install_target; do - if [[ -z $(find $plugin_target_dir -name "${f}_*$REVISION*_$ARCH.deb") ]]; then - needs_building=yes - break - fi - done - else - needs_building=yes - fi - if [[ $needs_building == no ]]; then - display_alert "Packages are up to date" "$package_name" "info" - continue - fi - display_alert "Building packages" "$package_name" "info" - # create build script - cat <<-EOF > $target_dir/root/build.sh - #!/bin/bash - export PATH="/usr/lib/ccache:\$PATH" - export HOME="/root" - export DEBIAN_FRONTEND="noninteractive" - export DEST="/tmp" - mkdir -p /tmp/debug - export DEB_BUILD_OPTIONS="ccache nocheck" - export CCACHE_TEMPDIR="/tmp" - export DEBFULLNAME="$MAINTAINER" - export DEBEMAIL="$MAINTAINERMAIL" - $(declare -f display_alert) - display_alert "Installing build dependencies" - [[ -n "$package_builddeps" ]] && /root/install-deps.sh $package_builddeps - cd /root/build - display_alert "Copying sources" - rsync -aq /root/sources/$package_name /root/build/ - cd /root/build/$package_name - # copy overlay / "debianization" files - [[ -d "/root/overlay/$package_name/" ]] && rsync -aq /root/overlay/$package_name /root/build/ - # execute additional commands before building - [[ -n "$package_prebuild_eval" ]] && eval "$package_prebuild_eval" - # set upstream version - [[ -n "$package_upstream_version" ]] && debchange --preserve --newversion "$package_upstream_version" "Import from upstream" - # set local version - # debchange -l~armbian${REVISION}-${builddate}+ "New Armbian release" - debchange -l~armbian${REVISION}+ "New Armbian release" - display_alert "Building package" - dpkg-buildpackage -b -uc -us -jauto - if [[ \$? -eq 0 ]]; then - cd /root/build - # install in chroot if other libraries depend on them - if [[ -n "$package_install_chroot" ]]; then - display_alert "Installing packages" - for p in $package_install_chroot; do - dpkg -i \${p}_*.deb - done + local t=$target_dir/root/.update-timestamp + if [[ ! -f $t || $(( ($(date +%s) - $(<$t)) / 86400 )) -gt 2 ]]; then + display_alert "Upgrading packages" "$release $arch" "info" + systemd-nspawn -a -q -D $target_dir /bin/bash -c "apt-get -q update; apt-get -q -y upgrade; apt-get clean" + date +%s > $t fi - display_alert "Done building" "$package_name" "ext" - ls *.deb - mv *.deb /root 2>/dev/null - else - display_alert "Failed building" "$package_name" "err" - fi - exit 0 - EOF - chmod +x $target_dir/root/build.sh + for plugin in $SRC/lib/extras-buildpkgs/*.conf; do + unset package_name package_repo package_ref package_builddeps package_install_chroot package_install_target \ + package_prebuild_eval package_upstream_version needs_building plugin_target_dir package_component + source $plugin - fetch_from_repo "$package_repo" "extra/$package_name" "$package_ref" + # check build arch + [[ $package_arch != $arch && $package_arch != all ]] && continue + # build utils only once for Jessie target + [[ $package_component == utils && $release == xenial ]] && continue - eval systemd-nspawn -a -q -D $target_dir --tmpfs=/root/build --tmpfs=/tmp --bind-ro $SRC/lib/extras-buildpkgs/:/root/overlay \ - --bind-ro $SRC/sources/extra/:/root/sources /bin/bash -c "/root/build.sh" 2>&1 \ - ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/buildpkg.log'} - mv $target_dir/root/*.deb $plugin_target_dir 2>/dev/null + local plugin_target_dir=$DEST/debs/extra/$package_component/ + mkdir -p $plugin_target_dir + + # check if needs building + local needs_building=no + if [[ -n $package_install_target ]]; then + for f in $package_install_target; do + if [[ -z $(find $plugin_target_dir -name "${f}_*$REVISION*_$arch.deb") ]]; then + needs_building=yes + break + fi + done + else + needs_building=yes + fi + if [[ $needs_building == no ]]; then + display_alert "Packages are up to date" "$package_name $release $arch" "info" + continue + fi + display_alert "Building packages" "$package_name $release $arch" "ext" + + # create build script + cat <<-EOF > $target_dir/root/build.sh + #!/bin/bash + export PATH="/usr/lib/ccache:\$PATH" + export HOME="/root" + export DEBIAN_FRONTEND="noninteractive" + export DEB_BUILD_OPTIONS="ccache nocheck" + export CCACHE_TEMPDIR="/tmp" + export DEBFULLNAME="$MAINTAINER" + export DEBEMAIL="$MAINTAINERMAIL" + $(declare -f display_alert) + cd /root/build + if [[ -n "$package_builddeps" ]]; then + display_alert "Installing build dependencies" + deps=() + installed=\$(dpkg-query -W -f '\${db:Status-Abbrev}|\${binary:Package}\n' '*' 2>/dev/null | grep '^ii' | awk -F '|' '{print \$2}' | cut -d ':' -f 1) + for packet in $package_builddeps; do grep -q -x -e "\$packet" <<< "\$installed" || deps+=("\$packet"); done + [[ \${#deps[@]} -gt 0 ]] && apt-get -y --no-install-recommends --show-progress -o DPKG::Progress-Fancy=1 install "\${deps[@]}" + fi + display_alert "Copying sources" + rsync -aq /root/sources/$package_name /root/build/ + cd /root/build/$package_name + # copy overlay / "debianization" files + [[ -d "/root/overlay/$package_name/" ]] && rsync -aq /root/overlay/$package_name /root/build/ + # execute additional commands before building + [[ -n "$package_prebuild_eval" ]] && eval "$package_prebuild_eval" + # set upstream version + [[ -n "$package_upstream_version" ]] && debchange --preserve --newversion "$package_upstream_version" "Import from upstream" + # set local version + # debchange -l~armbian${REVISION}-${builddate}+ "New Armbian release" + debchange -l~armbian${REVISION}+ "New Armbian release" + display_alert "Building package" + dpkg-buildpackage -b -uc -us -jauto + if [[ \$? -eq 0 ]]; then + cd /root/build + # install in chroot if other libraries depend on them + if [[ -n "$package_install_chroot" ]]; then + display_alert "Installing packages" + for p in $package_install_chroot; do + dpkg -i \${p}_*.deb + done + fi + display_alert "Done building" "$package_name $release $arch" "ext" + ls *.deb 2>/dev/null + mv *.deb /root 2>/dev/null + else + display_alert "Failed building" "$package_name $release $arch" "err" + fi + exit 0 + EOF + + chmod +x $target_dir/root/build.sh + + fetch_from_repo "$package_repo" "extra/$package_name" "$package_ref" + + eval systemd-nspawn -a -q -D $target_dir --tmpfs=/root/build --tmpfs=/tmp --bind-ro $SRC/lib/extras-buildpkgs/:/root/overlay \ + --bind-ro $SRC/sources/extra/:/root/sources /bin/bash -c "/root/build.sh" 2>&1 \ + ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/buildpkg.log'} + mv $target_dir/root/*.deb $plugin_target_dir 2>/dev/null + done + done done } ############################################################################# -# chroot_installpackages +# chroot_installpackages_local # -chroot_installpackages() +chroot_installpackages_local() { local conf=$SRC/lib/config/aptly-temp.conf rm -rf /tmp/aptly-temp/ mkdir -p /tmp/aptly-temp/ aptly -config=$conf repo create temp # NOTE: this works recursively - aptly -config=$conf repo add temp $DEST/debs/extra/$RELEASE/ + aptly -config=$conf repo add temp $DEST/debs/extra/${RELEASE}-desktop/ + aptly -config=$conf repo add temp $DEST/debs/extra/utils/ # -gpg-key="925644A6" aptly -keyring="$SRC/lib/extras-buildpkgs/buildpkg-public.gpg" -secret-keyring="$SRC/lib/extras-buildpkgs/buildpkg.gpg" -batch=true -config=$conf \ -gpg-key="925644A6" -passphrase="testkey1234" -component=temp -distribution=$RELEASE publish repo temp @@ -216,6 +200,15 @@ chroot_installpackages() cat <<-EOF > $CACHEDIR/sdcard/etc/apt/sources.list.d/armbian-temp.list deb http://localhost:8189/ $RELEASE temp EOF + chroot_installpackages_repo + kill $aptly_pid +} ############################################################################# + +# chroot_installpackages +# +chroot_installpackages() +{ + local remote_only=$1 local install_list="" for plugin in $SRC/lib/extras-buildpkgs/*.conf; do source $plugin @@ -226,20 +219,27 @@ chroot_installpackages() done cat <<-EOF > $CACHEDIR/sdcard/tmp/install.sh #!/bin/bash - apt-key add /tmp/buildpkg.key + [[ $remote_only != yes ]] && apt-key add /tmp/buildpkg.key apt-get -o Acquire::http::Proxy=\"http://${APT_PROXY_ADDR:-localhost:3142}\" \ -o Acquire::http::Proxy::localhost="DIRECT" -q update # uncomment to debug # /bin/bash + # TODO: check if package exists in case new config was added + #if [[ -n "$remote_only" == yes ]]; then + # for p in $install_list; do + # if grep -qE "apt.armbian.com|localhost" <(apt-cache madison \$p); then + # if apt-get -s -qq install \$p; then + #fi apt-get -q -o Acquire::http::Proxy=\"http://${APT_PROXY_ADDR:-localhost:3142}\" \ -o Acquire::http::Proxy::localhost="DIRECT" \ --show-progress -o DPKG::Progress-Fancy=1 install -y $install_list apt-get clean - apt-key del "925644A6" - rm /etc/apt/sources.list.d/armbian-temp.list /etc/apt/preferences.d/90-armbian-temp.pref /tmp/buildpkg.key + [[ $remote_only != yes ]] && apt-key del "925644A6" + rm /etc/apt/sources.list.d/armbian-temp.list 2>/dev/null + rm /etc/apt/preferences.d/90-armbian-temp.pref 2>/dev/null + rm /tmp/buildpkg.key 2>/dev/null rm -- "\$0" EOF chmod +x $CACHEDIR/sdcard/tmp/install.sh chroot $CACHEDIR/sdcard /bin/bash -c "/tmp/install.sh" - kill $aptly_pid } ############################################################################# diff --git a/debootstrap-ng.sh b/debootstrap-ng.sh index 8ad0ebd615..bf61413fdb 100644 --- a/debootstrap-ng.sh +++ b/debootstrap-ng.sh @@ -78,7 +78,12 @@ debootstrap_ng() # install desktop files [[ $BUILD_DESKTOP == yes ]] && install_desktop - [[ $EXTERNAL_NEW == yes ]] && chroot_installpackages + if [[ $RELEASE == jessie || $RELEASE == xenial ]]; then + # install locally built packages + [[ $EXTERNAL_NEW == yes ]] && chroot_installpackages_local + # install from apt.armbian.com + [[ $EXTERNAL_NEW == nobuild ]] && chroot_installpackages "yes" + fi # cleanup for install_kernel and install_board_specific umount $CACHEDIR/sdcard/tmp > /dev/null 2>&1 diff --git a/extras-buildpkgs/00-libdri2.conf b/extras-buildpkgs/00-libdri2.conf index 354dacec91..56f2aaf95a 100644 --- a/extras-buildpkgs/00-libdri2.conf +++ b/extras-buildpkgs/00-libdri2.conf @@ -7,7 +7,7 @@ local package_builddeps="xutils-dev x11proto-xext-dev x11proto-dri2-dev pkg-conf local package_install_chroot="libdri2-1 libdri2-dev" local package_install_target="libdri2-1" local package_arch="armhf" -local package_component="desktop" +local package_component="${release}-desktop" package_checkinstall() { diff --git a/extras-buildpkgs/04-libvdpau.conf b/extras-buildpkgs/04-libvdpau.conf index d9420e8a3c..1f60fb8bbe 100644 --- a/extras-buildpkgs/04-libvdpau.conf +++ b/extras-buildpkgs/04-libvdpau.conf @@ -6,7 +6,7 @@ local package_builddeps="graphviz ghostscript doxygen-latex x11proto-dri2-dev pk local package_install_chroot="libvdpau1 libvdpau-dev" local package_install_target="libvdpau1" local package_arch="armhf" -local package_component="desktop" +local package_component="${release}-desktop" package_checkinstall() { diff --git a/extras-buildpkgs/05-libump.conf b/extras-buildpkgs/05-libump.conf index 6fd8b646e4..ab7ab5d2fe 100644 --- a/extras-buildpkgs/05-libump.conf +++ b/extras-buildpkgs/05-libump.conf @@ -6,7 +6,7 @@ local package_builddeps="dh-autoreconf pkg-config" local package_install_chroot="libump libump-dev" local package_install_target="libump" local package_arch="armhf" -local package_component="desktop" +local package_component="${release}-desktop" package_checkinstall() { diff --git a/extras-buildpkgs/06-libcedrus.conf b/extras-buildpkgs/06-libcedrus.conf index f30b755750..54ae935214 100644 --- a/extras-buildpkgs/06-libcedrus.conf +++ b/extras-buildpkgs/06-libcedrus.conf @@ -7,7 +7,7 @@ local package_upstream_version="1.0.1" local package_install_chroot="libcedrus1 libcedrus1-dev" local package_install_target="libcedrus1" local package_arch="armhf" -local package_component="desktop" +local package_component="${release}-desktop" package_checkinstall() { diff --git a/extras-buildpkgs/06-xf86-video-fbturbo.conf b/extras-buildpkgs/06-xf86-video-fbturbo.conf index 51125aa053..5e5c72c150 100644 --- a/extras-buildpkgs/06-xf86-video-fbturbo.conf +++ b/extras-buildpkgs/06-xf86-video-fbturbo.conf @@ -6,7 +6,7 @@ local package_ref="branch:master" local package_builddeps="dh-autoreconf pkg-config xserver-xorg-dev x11proto-core-dev x11proto-fonts-dev x11proto-randr-dev x11proto-render-dev x11proto-video-dev xutils-dev" local package_install_target="xserver-xorg-video-fbturbo" local package_arch="armhf" -local package_component="desktop" +local package_component="${release}-desktop" package_checkinstall() { diff --git a/extras-buildpkgs/09-ffmpeg.conf b/extras-buildpkgs/09-ffmpeg.conf index 1ea138ee2e..aadad2185c 100644 --- a/extras-buildpkgs/09-ffmpeg.conf +++ b/extras-buildpkgs/09-ffmpeg.conf @@ -8,7 +8,7 @@ local package_builddeps="dpkg-dev flite1-dev frei0r-plugins-dev ladspa-sdk libas local package_install_chroot="libavutil-ffmpeg54 libavutil-dev libpostproc-ffmpeg53 libswresample-ffmpeg1 libswscale-ffmpeg3 libswscale-dev libavresample-ffmpeg2 libavresample-dev libavcodec-ffmpeg56 libswresample-dev libavcodec-dev libpostproc-dev libavformat-ffmpeg56 libavformat-dev libavfilter-ffmpeg5 libavfilter-dev libavdevice-ffmpeg56 libavdevice-dev" local package_install_target="libavutil-ffmpeg54 libpostproc-ffmpeg53 libswresample-ffmpeg1 libswscale-ffmpeg3 libavresample-ffmpeg2 libavcodec-ffmpeg56 libavformat-ffmpeg56 libavfilter-ffmpeg5 libavdevice-ffmpeg56 ffmpeg" local package_arch="armhf" -local package_component="desktop" +local package_component="${release}-desktop" package_checkinstall() { diff --git a/extras-buildpkgs/90-fswebcam-gc2035.conf b/extras-buildpkgs/90-fswebcam-gc2035.conf index c90af7c6f8..2a1bd8cbae 100644 --- a/extras-buildpkgs/90-fswebcam-gc2035.conf +++ b/extras-buildpkgs/90-fswebcam-gc2035.conf @@ -5,7 +5,7 @@ local package_ref="branch:master" local package_builddeps="libgd2-xpm-dev libgd2-noxpm-dev libjpeg-dev libpng-dev libfreetype6-dev libv4l-dev" local package_install_target="fswebcam-gc2035" local package_arch="armhf" -local package_component="desktop" +local package_component="${release}-desktop" package_checkinstall() { diff --git a/extras-buildpkgs/90-guvcview.conf b/extras-buildpkgs/90-guvcview.conf index 2e9f24d8cd..49f9e4972a 100644 --- a/extras-buildpkgs/90-guvcview.conf +++ b/extras-buildpkgs/90-guvcview.conf @@ -7,7 +7,7 @@ local package_upstream_version="2.0.2.1" local package_builddeps="intltool dh-autoreconf autotools-dev libsdl1.2-dev libgtk-3-dev portaudio19-dev libpng12-dev libudev-dev libusb-1.0-0-dev libpulse-dev libgsl0-dev libv4l-dev libv4l2rds0 libsdl2-dev" local package_install_target="libguvcview-1.1-1 guvcview" local package_arch="armhf" -local package_component="desktop" +local package_component="${release}-desktop" package_checkinstall() { diff --git a/extras-buildpkgs/90-libglshim.conf b/extras-buildpkgs/90-libglshim.conf index 1114e4ee27..8720c7f898 100644 --- a/extras-buildpkgs/90-libglshim.conf +++ b/extras-buildpkgs/90-libglshim.conf @@ -5,7 +5,7 @@ local package_ref="branch:master" local package_builddeps="cmake libx11-dev libsdl1.2-dev" local package_install_target="libglshim1" local package_arch="armhf" -local package_component="desktop" +local package_component="${release}-desktop" package_checkinstall() { diff --git a/extras-buildpkgs/90-libmali-sunxi-r3p0.conf b/extras-buildpkgs/90-libmali-sunxi-r3p0.conf index 891e0fc3ae..f1888d8f0a 100644 --- a/extras-buildpkgs/90-libmali-sunxi-r3p0.conf +++ b/extras-buildpkgs/90-libmali-sunxi-r3p0.conf @@ -5,7 +5,7 @@ local package_ref="branch:master" local package_builddeps="xutils-dev" local package_install_target="libmali-sunxi-r3p0" local package_arch="armhf" -local package_component="desktop" +local package_component="${release}-desktop" package_checkinstall() { diff --git a/extras-buildpkgs/90-libvdpau-sunxi.conf b/extras-buildpkgs/90-libvdpau-sunxi.conf index ee4ecbddad..fa9b3a6f48 100644 --- a/extras-buildpkgs/90-libvdpau-sunxi.conf +++ b/extras-buildpkgs/90-libvdpau-sunxi.conf @@ -9,7 +9,7 @@ local package_upstream_version="0.5.1" local package_builddeps="libpixman-1-dev pkg-config" local package_install_target="libvdpau-sunxi1" local package_arch="armhf" -local package_component="desktop" +local package_component="${release}-desktop" package_checkinstall() { diff --git a/extras-buildpkgs/90-mpv.conf b/extras-buildpkgs/90-mpv.conf index 068ac7c133..a9bf1e61f9 100644 --- a/extras-buildpkgs/90-mpv.conf +++ b/extras-buildpkgs/90-mpv.conf @@ -9,7 +9,7 @@ local package_upstream_version="0.19.0" local package_builddeps="libasound2-dev libbluray-dev libcdio-paranoia-dev libdvdnav-dev libdvdread-dev libenca-dev libguess-dev libjpeg-dev liblcms2-dev liblua5.2-dev libpulse-dev librubberband-dev libsdl2-dev libsndio-dev libva-dev libx11-dev libxinerama-dev libxkbcommon-dev libxrandr-dev libxss-dev pkg-config python python-docutils" local package_install_target="libmpv1 mpv" local package_arch="armhf" -local package_component="desktop" +local package_component="${release}-desktop" package_checkinstall() { diff --git a/extras-buildpkgs/README.md b/extras-buildpkgs/README.md index ecdd2f2c5b..6e568cab6f 100644 --- a/extras-buildpkgs/README.md +++ b/extras-buildpkgs/README.md @@ -1,60 +1,31 @@ +# Requirements + +* Xenial build host + +* apt-cacher-ng enabled + +# Limitations + +* Using QEMU emulation in chroot, so compilation may take a long time (~10 hours) + +* Limited error checking, process is not aborted on single package building failure + +* Packages are built only for Jessie and Xenial target, installing on older distributions may be done manually if dependencies can be satisfied + # TODO ### Process -* Switch from chroot to native multiarch - -Progress: - -* sunxi-mali: fix pkgconfig files for multiarch - **done** - -* fbturbo: check xserver plugin search path for multiarch - -### Installing packages to images: - -* Add a function for installing packages - **done** - -* Use aptly to create local repository: this will allow solving dependencies on installation automatically - **done** - -* Add a variable for list of packages to install during debootstrap - **done** - -* Add a variable for installing condition (branch, release, desktop, ...) - **done** - -### Building: - -* Add a function / code to move packages to $DEST/debs/extras - **done** - -* Adjust "debs" option of CLEAN_LEVEL to delete old packages in "extras" subdirectory - **done** - -* Add a code to check if package exists / package needs (re)building - **done** - -* Add logging to file for build process - **done** - -### All packages: - -* Add sunxi-mali package if BLOBs license allows redistribution, otherwise create an installer like oracle-jdk - **done** - -* Add hostapd-realtek package - copy of hostapd with realtek-specific patches - **done** - -* Delete unused files (i.e. \*.lintian-overrides) - **done*** - -* Add missing udev rules to appropriate packages - **done** +* Switch from qemu to multiarch cross-compiling ### Package-specific: -* ffmpeg: disable building documentation - **done** - -* ffmpeg: disable unused features - **done** - -* mpv: disable unused features **done** - * libvdpau-sunxi: select branch (master or dev) -* libcsptr-dev: upgrade to debhelper version 9 - **done** - -* hostapd(-realtek): add /etc/hostapd.conf templates - * mpv: test and add configuration file for direct framebuffer output ## Notes + libcedrus compiled without USE_UMP=1 requires access to /dev/ion + +libcedrus compiled with USE_UMP=1 caused segfault last time I tested video playback with mpv diff --git a/main.sh b/main.sh index 82935a3510..9228a8450d 100644 --- a/main.sh +++ b/main.sh @@ -229,7 +229,8 @@ if [[ ! -f $DEST/debs/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb ]]; then # this is a patch that Ubuntu Trusty compiler works if [[ $(patch --dry-run -t -p1 < $SRC/lib/patch/kernel/compiler.patch | grep Reversed) != "" ]]; then - [[ $FORCE_CHECKOUT == yes ]] && patch --batch --silent -t -p1 < $SRC/lib/patch/kernel/compiler.patch > /dev/null 2>&1 + display_alert "Patching kernel for compiler support" + [[ $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" @@ -240,7 +241,7 @@ fi [[ -n $RELEASE ]] && create_board_package # chroot-buildpackages -[[ $EXTERNAL_NEW == yes && $(lsb_release -sc) == xenial ]] && chroot_build_packages +[[ $EXTERNAL_NEW == yes ]] && chroot_build_packages if [[ $KERNEL_ONLY != yes ]]; then debootstrap_ng