mirror of
https://github.com/Fishwaldo/build.git
synced 2025-03-16 03:41:26 +00:00
Update packages building code
This commit is contained in:
parent
c2ebed55f8
commit
4acf58d9e4
16 changed files with 182 additions and 205 deletions
|
@ -12,33 +12,30 @@
|
|||
# create_chroot
|
||||
# update_chroot
|
||||
# chroot_build_packages
|
||||
# chroot_installpackages_local
|
||||
# chroot_installpackages
|
||||
|
||||
# create_chroot <target_dir>
|
||||
# <target_dir>: directory to put files
|
||||
# create_chroot <target_dir> <release> <arch>
|
||||
#
|
||||
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 <target_dir>
|
||||
# <target_dir>: 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 <remote_only>
|
||||
#
|
||||
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
|
||||
} #############################################################################
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
5
main.sh
5
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
|
||||
|
|
Loading…
Add table
Reference in a new issue