1

I am trying to build popsicle in Launchpad (I cloned the repository from GitHub, and am trying to build it using this package recipe), and it fails to build.

Here is the relevant part of the buildlog

dpkg-buildpackage: info: source package popsicle
dpkg-buildpackage: info: source version 1.1.0-0~202008031810~ubuntu20.04.1
dpkg-buildpackage: info: source distribution focal
 dpkg-source --before-build .
dpkg-buildpackage: info: host architecture amd64
 fakeroot debian/rules clean
dh clean
   debian/rules override_dh_auto_clean
make[1]: Entering directory '/<<PKGBUILDDIR>>'
make clean
make[2]: Entering directory '/<<PKGBUILDDIR>>'
cargo clean
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
if ! ischroot; then \
    make vendor; \
fi
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
   dh_clean
 debian/rules build
dh build
   dh_update_autotools_config
   dh_auto_configure
   debian/rules override_dh_auto_build
make[1]: Entering directory '/<<PKGBUILDDIR>>'
env CARGO_HOME="$(pwd)/target/cargo" \
dh_auto_build
    make -j1
make[2]: Entering directory '/<<PKGBUILDDIR>>'
tar pxf vendor.tar
tar: vendor.tar: Cannot open: No such file or directory

and here is the full buildlog.

However, when I try to build it in my Kubuntu 18.04 machine, I get

name@pc:~/popsicle$ debuild -us -uc
 dpkg-buildpackage -rfakeroot -us -uc -ui
dpkg-buildpackage: info: source package popsicle
dpkg-buildpackage: info: source version 1.1.0
dpkg-buildpackage: info: source distribution focal
dpkg-buildpackage: info: source changed by Ian Douglas Scott <idscott@system76.com>
 dpkg-source --before-build popsicle
 fakeroot debian/rules clean
dh clean
   debian/rules override_dh_auto_clean
make[1]: Entering directory '/home/archisman/popsicle'
make clean
make[2]: Entering directory '/home/archisman/popsicle'
cargo clean
make[2]: Leaving directory '/home/archisman/popsicle'
if ! ischroot; then \
        make vendor; \
fi
make[2]: Entering directory '/home/archisman/popsicle'
mkdir -p .cargo
cargo vendor | head -n -1 > .cargo/config
    Updating crates.io index
 Downloading crates ...
  Downloaded bitflags v1.2.1

and the build proceeds.

How to build it in Launchpad?

1 Answers1

2

As pointed out in a comment in OMG!Ubuntu!, the source package of the Pop!OS PPA is much larger than the code in GitHub. Most likely the devs are packing all the dependencies inside the source using cargo before uploading the source to Launchpad.

If you look near the end of the buildlog you can see the build server trying to unpack a missing vendor.tar and failing. That file contains all the dependencies needed to compile the big fat popsicle binary (that's why I'm not a huge fan of Rust software), which cannot be fetched online by cargo since Debian/Ubuntu has a proper build system that doesn't allow network access. If you compare your build with the one from Pop, your compressed source is 269.3 KiB, while the one from Pop is 12.4 MiB: the difference in size is exactly the missing file.