Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 6 Feb 2013 07:55:15 +0100
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        Tim Kientzle <kientzle@freebsd.org>
Cc:        pkg@FreeBSD.org, freebsd-current Current <freebsd-current@freebsd.org>
Subject:   Re: Cross-architecture package installs
Message-ID:  <20130206065514.GB1268@ithaqua.etoilebsd.net>
In-Reply-To: <4703DEB0-E2DC-403E-9F14-DE968CBE4921@freebsd.org>
References:  <4703DEB0-E2DC-403E-9F14-DE968CBE4921@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--tjCHc7DPkfUGtrlw
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Tue, Feb 05, 2013 at 10:34:18PM -0800, Tim Kientzle wrote:
> I'm working on tools to build ARM system images.
> Usually, these tools run on x86, which creates a problem
> for packages.

First Yes cross-installation of packages is something we highly want in pkg=
ng
and is plan since the beginning, that is one of the reason pkg -c is readig=
 the
ABI from the DESTDIR, to make sure we only install things that are abi
compatible..

>=20
> I would like to install packages onto the image as it's built.
> So I've been experimenting with variations of
>    pkg -c <DESTDIR> add <package files>

> I'm running into a few problems but I think they can all be
> solved.  Only the first is critical; the rest are relatively
> minor annoyances.
>=20
> 1) Pre-install/post-install scripts.
>=20
>     These obviously don't work since the DESTDIR
>     is for a different architecture.
>=20
>     At least for post-install, it should be possible to
>     record which packages still need their post-install
>     scripts run and arrange to run them after first
>     boot.  I'm picturing an rc.d script that invokes pkg
>     with appropriate options to find all packages
>     that still need their post-install run and runs them.
>=20
>     This won't work for pre-install, but those are rarer
>     and we can hopefully work around them on a
>     case-by-case basis.

This is imho the main problem, and one of the long term goal of pkgng is to=
 remove
as much as possible any pre-instal/post-install scripts. The second problem=
 you
will get into is the API that call system()/exec()/etc for example all the =
call
the pw_mkdb from libutil :(

We are open for all suggestions here

>=20
> 2) The chroot happens before opening the package files.
>=20
>     It's possible to work around this by copying all of the
>     package files into DESTDIR first, but that's both
>     time-consuming and rather awkward.  (And quite
>     tricky if you're installing directly onto a mounted
>     image that has very little free space.)
>=20
>     It should be feasible to open the package files first
>     and then chroot.  Then the actual installation still
>     happens entirely inside DESTDIR.

In fact pkg add is only mean to be used in special case if in that particul=
ar
case you would have used pkg -c DESTDIR install <packagename> using a repos=
itory
you would have created on your host using pkg repo to create the metadata t=
hing
necessary. problem your packagesite should served via a http/ftp not file e=
xcept
if the files are also locate inside the chroot.

>=20
> 3) Bogus "failed to install" messages.
>=20
>     As far as I can tell, if "bar" depends on "foo", then
>     "pkg add bar foo" will do this:
>=20
>     Installing bar =E2=80=A6
>         Installing foo =E2=80=A6
>         done
>     done
>     Installing foo =E2=80=A6 foo already installed.


Yeah as said above pkg add as to be forgotten as much as possible, it has b=
een
created mostly for the ports tree and the ports build script so that they d=
on't
need too much changes other that s/pkg_add/pkg add/g
>=20
>     Failed to install the following package: foo.
>=20
>     This is surprising since foo did in fact get installed.
>=20
>     In my case, I want to say "pkg add *" and just have
>     it DTRT.  It mostly does get the ordering right (I'm impressed!)
>     but the error message is a bit odd.

Just do "pkg install -x ." or "pkg install -g *" ordering would be ok witho=
ut
odd message.

pkg add does not ordering, I'm surprised you got it right :)

regards,
Bapt

PS: I CCed freebsd-pkg@, which is a new mailing list dedicated to this kind=
 of
discussion

--tjCHc7DPkfUGtrlw
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iEYEARECAAYFAlER/lIACgkQ8kTtMUmk6EwWwwCeLQA2NF/FMU/MGDxCmBPZlhbf
N/0AoLZ04bVsLLzY3qG4pGdmRYpLO8RC
=tOn2
-----END PGP SIGNATURE-----

--tjCHc7DPkfUGtrlw--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130206065514.GB1268>