sudo: required branches: only: - master cache: directories: - .ccache - .arch-cache - AUR-repo - LuxCore.git env: # force update every n days - update_interval=5 services: - docker arch: cache: - ccache: true - pacman-cache: true repos: - bartus=https://github.com/bartoszek/AUR-repo/raw/master packages: # disable to prevent `package-cleanup.hook` # - ccache # - moreutils script: # prepare ENV: # 1. multithreading: # 1.1 COMPRESSXZ=(-xz -T0), can't be passed to makepkg as bash dosn't support array in `export` statement. # 1.2 MAKEFLAGS='-j2' # 2. override `package-cleanup.hook` to preserve cache for travis. - | echo 'options+=(ccache)' >> PKGBUILD echo 'COMPRESSXZ=(xz -T 0 -c -z -)' >> PKGBUILD echo "MAKEFLAGS='-j2'" >> PKGBUILD sudo mkdir /etc/pacman.d/hooks/ && sudo ln -s /dev/null /etc/pacman.d/hooks/package-cleanup.hook sudo pacman -S --noconfirm ccache moreutils bc # check interval update - | update_offset=$(. PKGBUILD; sha1sum <<< "$pkgname"|sed -e "s/[a-z -]//g" -e "s/^0*//"|echo `cat`%$update_interval|bc) next_update=$(((365-`date +%j`+update_offset)%update_interval)) # check (opt|)depends update - | build_deps=$(. PKGBUILD; IFS=$'\n'; echo -e "${depends[*]}\n${makedepends[*]}"; ) build_deps=$(for pkg in $build_deps; do pacman -S --print-format '%n' $pkg|tail -1; done|sort -u;) new_deps_ver=$(for pkg in $build_deps; do pacman -S --print-format '%n %v' $pkg|tail -1; done;) build_info=$(curl -sL $(. PKGBUILD; pacman -S --print $pkgname|tail -n1)|bsdtar xJOf - .BUILDINFO|grep -Po '^installed = \K.*'|rev|while IFS=$'-' read arch pkgrel pkgver pkgname; do echo $pkgrel-$pkgver $pkgname; done|rev) old_deps_ver=$(echo "$build_info"|grep -f <(echo "$build_deps" )) printf "%-50s %50s\n" "BUILDINFO dependency versions" "PACMAN dependency versions" dep_update=$(diff -y -W 100 --tabsize=4 <(echo "$old_deps_ver"|sort) <(echo "$new_deps_ver"|sort) >&2; echo $?;) # check commit update - 'force_update=$(git log --pretty=%B -1|egrep -q "\[(force|rebuild)\]"; echo $?)' # check version - | makepkg -od --skipinteg new_pkgver=$(. PKGBUILD; [[ -v epoch ]] && echo -n $epoch:; echo $pkgver-$pkgrel) old_pkgver=$(. PKGBUILD; pacman -S --print-format %v $pkgname|tail -n1) # skipp build if: # 1. no new version # 2. no dependency update # 3. no force update - '[[ "$new_pkgver" == "$old_pkgver" && $next_update != 0 && $force_update != 0 && dep_update != 0 ]] && { echo -e "Current version is up to date!\nNext force update in $next_update days!"; exit 0; }' # exit with makepkg return code - | set -o pipefail makepkg -s --noconfirm TRAVIS=1 MAKEFLAGS='-j2' 2>&1 |ts -s '[%.T]' makepkg_ret=$? ccache -s exit $makepkg_ret script: - "curl -s https://raw.githubusercontent.com/bartoszek/arch-travis/pacman-pkg-cache/arch-travis.sh | bash" - "echo 'pacman pkg cache size: ' $(du -h .arch-cache|cut -f1) in $(ls .arch-cache|wc -l) files" deploy: on: branch: master skip_cleanup: true provider: script script: bash .travis_deploy.sh