Date: Sun, 6 Dec 2015 10:52:07 +0100 From: Baptiste Daroussin <bapt@FreeBSD.org> To: Nick Rogers <ncrogers@gmail.com> Cc: "freebsd-ports@freebsd.org" <freebsd-ports@freebsd.org> Subject: Re: pkg regression 1.6.1 to 1.6.2: custom package dependencies missing after install Message-ID: <20151206095207.GF27529@ivaldir.etoilebsd.net> In-Reply-To: <CAKOb=YY4ePB3Ko9n-mcpW%2Bp_89ZJLT8601=e%2BeYmFNzuD3%2BJsQ@mail.gmail.com> References: <CAKOb=YY4ePB3Ko9n-mcpW%2Bp_89ZJLT8601=e%2BeYmFNzuD3%2BJsQ@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--QXO0/MSS4VvK6f+D Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sat, Dec 05, 2015 at 07:24:39PM -0800, Nick Rogers wrote: > Hello, >=20 > I have an interesting problem since upgrading to the latest pkg version. I > am running FreeBSD 10.1-RELEASE-p24. >=20 > I use "pkg create" to create a custom package (lets call it "mypkg") to > distribute some proprietary software. In the custom package's manifest, I > specify dependencies that the software relies on. These dependencies are > all "real" ports in the FreeBSD ports tree. I use poudriere to host a > custom repository that contains all the necessary dependencies. When I > bring up a new system, to install the software I run "pkg install mypkg", > and that automatically installs all the necessary dependency packages. The > custom repo is configured in /usr/local/etc/pkg/repos, and the default > "FreeBSD" repo is disabled. >=20 > This has worked great for some time until I upgraded to pkg 1.6.2 > (previously was using 1.6.1). Now when I install my package for the first > time, pkg seems to ignore some of the dependencies and does not install > some packages (about 14 out of over 200). >=20 > The MANIFEST of the custom package used in pkg create looks something like > this: > Generating +MANIFEST > name: mypkg > origin: myorigin/mypkg > version: "1.23" > comment: mypkg > prefix: /mypkg > arch: freebsd:10:* > deps: { > "bonnie++": { > origin: "benchmarks/bonnie++" > version: "*" > }, > "iperf": { > origin: "benchmarks/iperf" > version: "*" > }, > "mgetty": { > origin: "comms/mgetty+sendfax" > version: "*" > }, > "bash": { > origin: "shells/bash" > version: "*" > }, > .... more dependencies .... >=20 >=20 > There are no errors when I do the initial pkg install mypkg. It does not > complain about missing dependencies. Most of the dependencies are > installed, and a few are left out. >=20 > When I run "pkg check -d" after the initial "pkg install mypkg", pkg > clearly recognizes that some packages are missing, but then it crashes wi= th > an abort trap. Here you can see which packages are ignored and the error. >=20 > Checking all packages: 100% > mypkg has a missing dependency: iperf > mypkg has a missing dependency: bash > mypkg has a missing dependency: gmake > mypkg has a missing dependency: rubygem-daemons > mypkg has a missing dependency: mrtg > mypkg has a missing dependency: python > mypkg has a missing dependency: dmidecode > mypkg has a missing dependency: bwm-ng > mypkg has a missing dependency: freeradius3 > mypkg has a missing dependency: flex > mypkg has a missing dependency: p5-Devel-Size > mypkg has a missing dependency: tclGetOpts >=20 > >>> Missing package dependencies were detected. > >>> Found 13 issue(s) in the package database. >=20 > Assertion failed: (pattern !=3D NULL), function pkg_jobs_maybe_match_file, > file pkg_jobs.c, line 188. > Child process pid=3D29412 terminated abnormally: Abort trap >=20 > If I try the same "pkg install mypkg" with pkg 1.6.1, against the exact > same custom package file and the same poudriere repo, all packages are > installed as expected and "pkg check -d" returns a success. So it seems > that the problem lies in some change in the behavior of pkg between 1.6.1 > and 1.6.2, and not my custom package or the repo. Note that the custom > package is created with pkg 1.6.2 as well. >=20 > I am inclined to think the problem has something to do with the way I am > specifying dependencies in my custom packages MANIFEST. My gut tells me it > has something to do with the following commit/change to pkg between 1.6.2 > and 1.6.1, but I am unfamiliar with the code. > https://github.com/freebsd/pkg/commit/7e5152d942cba492142c7a226974913b9d3= 8af21 >=20 > The list of packages that are left-out is the same every time, but I do n= ot > notice any correlation between them as far as how they are named or what > not, but there must be some similarity. >=20 > Hoping someone can shed some light on what is going on. >=20 > I have opened a similar issue on github in case this is the wrong forum f= or > such weirdness. > https://github.com/freebsd/pkg/issues/1356 >=20 > Thanks! As replied on the github issue, the MANIFEST definition is wrong, at least = not doing that is expected: is means depending on for example bash-* (not a glob really the "*" charact= er. pkg accepted the installation in pkg 1.6.1 due to a bug in the solver fixed= in 1.6.2. The proper way to do what is expected is to just drop the version: "*" line= s. How ever pkg should not die in pkg check, I will work on a fix for that. Best regards, Bapt --QXO0/MSS4VvK6f+D Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iEYEARECAAYFAlZkBUcACgkQ8kTtMUmk6EzEeQCgoTvjwxspx+ieiL0i/2h+skaI MgQAoLEMnxCRxGLD4h81fdwTpn7j2apX =OkAI -----END PGP SIGNATURE----- --QXO0/MSS4VvK6f+D--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20151206095207.GF27529>