[PATCH 3 of 3 cubicweb update-skel-pkg] [pkg] Add new autopkgtest for skeleton packaging

Denis Laxalde denis.laxalde at logilab.fr
Thu Jul 4 11:07:51 CEST 2019


Jérémy Bobbio a écrit :
> # HG changeset patch
> # User Jérémy Bobbio <jeremy.bobbio at irq7.fr>
> # Date 1560785104 -7200
> #      Mon Jun 17 17:25:04 2019 +0200
> # Node ID 3fa50f2af63e29ce312502ef064c090cdb976a3a
> # Parent  1ce09fce640946c1719ed66b8d9e8ab42416375e
> # EXP-Topic update-skel-pkg
> [pkg] Add new autopkgtest for skeleton packaging
> 
> When running `cubicweb-ctl newcube`, the generated template provides
> debian packaging. So let's add automated tests for that using
> autopkgtest.
> 
> The new test will generated a new cube, build a source tarball,
> build the package, try to install it, see if the Python 3 module is
> available and even run autopkgtest against the newly created packages.
> 
> Along the way it will also print information about the generated
> package: buildinfo, package content, and lintian report.
> 

> diff -r 1ce09fce6409 -r 3fa50f2af63e debian/tests/skeleton-packaging
> --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +++ b/debian/tests/skeleton-packaging	Mon Jun 17 17:25:04 2019 +0200
> @@ -0,0 +1,58 @@
> +#!/bin/sh
> +
> +set -e
> +set -x
> +
> +if [ -z "$AUTOPKGTEST_TMP" ]; then
> +	echo "Not running as part as autopkgtest" >&2
> +	exit 250
> +fi
> +
> +# Switch to unprivileged user if needed
> +if [ "$(id -u)" = 0 ]; then
> +	apt-get install -q -y sudo
> +	echo 'Defaults !fqdn' > /etc/sudoers.d/fqdn
> +	echo 'nobody ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/nobody
> +	chown nobody:nogroup "$AUTOPKGTEST_TMP"
> +	exec su nobody -s /bin/sh -c "$0"

This step does not work for me:


    + exec su nobody -s /bin/sh -c /tmp/autopkgtest.jmYTP8/tree/debian/tests/skeleton-packaging
    /bin/sh: 0: Can't open /tmp/autopkgtest.jmYTP8/tree/debian/tests/skeleton-packaging

I had to chmod a+r that file once in the interactive shell to continue
(then, everything works fine).

The command I'm running is:

  autopkgtest --shell-fail --apt-upgrade ../*3.27*.deb \
    --test-name=skeleton-packaging \
    -- schroot cubicweb-unstable-amd64-sbuild

> +fi
> +
> +cd "$AUTOPKGTEST_TMP"
> +
> +# Create a cube
> +PACKAGE="cubicweb-mytest"
> +cubicweb-ctl newcube -s 'Just a test cube' ${PACKAGE#cubicweb-}
> +cd "$PACKAGE"
> +
> +UPSTREAM_VERSION=$(python3 setup.py --version)
> +DEBIAN_VERSION=$(dpkg-parsechangelog -S Version)
> +
> +# Create source tarball
> +python3 setup.py sdist
> +mv "dist/${PACKAGE}-${UPSTREAM_VERSION}.tar.gz" "../${PACKAGE}_${UPSTREAM_VERSION}.orig.tar.gz"
> +
> +# Install build-dependencies
> +mk-build-deps
> +mv "${PACKAGE}-build-deps_${DEBIAN_VERSION}_all.deb" ..
> +sudo dpkg --unpack "../${PACKAGE}-build-deps_${DEBIAN_VERSION}_all.deb"
> +sudo apt-get -q -y -f install --no-install-recommends
> +
> +# Build!
> +dpkg-buildpackage
> +
> +# Output .buildinfo for posterity
> +cat ../*.buildinfo
> +
> +# Output package content, again for posterity
> +debc
> +
> +# Install the package
> +sudo debi --with-depends
> +
> +lintian -i ../*.dsc ../*.changes
> +
> +# Test if Python module is usable
> +python3 -c 'import cubicweb_mytest; print(dir(cubicweb_mytest))'
> +
> +# Run autopkgtest (uh… inception, anyone?)
> +sudo autopkgtest ../*.changes -- null



More information about the cubicweb-devel mailing list