Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 Oct 2013 10:47:21 +0200
From:      Baptiste Daroussin <bapt@freebsd.org>
To:        Ulrich =?iso-8859-1?Q?Sp=F6rlein?= <uqs@FreeBSD.org>
Cc:        ports@freebsd.org, Fernando =?iso-8859-1?Q?Apestegu=EDa?= <fernando.apesteguia@gmail.com>, Bryan Drewery <bryan@shatow.net>
Subject:   Re: [HEADSUP] Staging, packaging and more
Message-ID:  <20131008084721.GJ16964@ithaqua.etoilebsd.net>
In-Reply-To: <CAJ9axoSF2%2BRys6MG078XCEkKEs2kEpVJegGgqFN3b2t2%2BR80kw@mail.gmail.com>
References:  <524D6059.2000700@FreeBSD.org> <524DD120.4000701@freebsd.org> <20131003203501.GA1371@medusa.sysfault.org> <CAGwOe2Ye2MLz3QpyMW3wyN9ew%2BiNnTETS1oOi_%2B8dPehUcWa0w@mail.gmail.com> <20131004061833.GA1367@medusa.sysfault.org> <20131004063259.GC72453@ithaqua.etoilebsd.net> <20131004065753.GV82824@droso.dk> <20131004070158.GE72453@ithaqua.etoilebsd.net> <20131004111256.GC98118@admin.xzibition.com> <CAJ9axoSF2%2BRys6MG078XCEkKEs2kEpVJegGgqFN3b2t2%2BR80kw@mail.gmail.com>

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

--x0KprKst+ZOYEj2z
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Sun, Oct 06, 2013 at 02:20:21PM +0200, Ulrich Sp=F6rlein wrote:
> 2013/10/4 Bryan Drewery <bryan@shatow.net>:
> > On Fri, Oct 04, 2013 at 09:01:58AM +0200, Baptiste Daroussin wrote:
> >> On Fri, Oct 04, 2013 at 08:57:53AM +0200, Erwin Lansing wrote:
> >> > On Fri, Oct 04, 2013 at 08:32:59AM +0200, Baptiste Daroussin wrote:
> >> > > > > > >
> >> > > > > > > Please no devel packages.
> >> > > > > >
> >> > > > > > Seconded.
> >> > > > >
> >> > > > > What's wrong with devel packages?
> >> > > >
> >> > > > It complicates things for developers and custom software on
> >> > > > FreeBSD. The typical situation that I see on most Linux platform=
s is a
> >> > > > lot of confusion by people, why their custom software XYZ does n=
ot
> >> > > > properly build - the most common answer: they forgot to install a
> >> > > > tremendous amount of dev packages, containing headers, build too=
ls and
> >> > > > whatnot.
> >> > > > On FreeBSD, you can rely on the fact that if you installed e.g. =
libGL,
> >> > > > you can start building your own GL applications without the need=
 to
> >> > > > install several libGL-dev, libX11-dev, ... packages first.
> >> > > > This is something, which I personally see as a big plus of the F=
reeBSD
> >> > > > ports system and which makes FreeBSD attractive as a development=
 platform.
> >> > > >
> >> > >
> >> > > On the other ends, that makes the package fat for embedded systems=
, that also
> >> > > makes some arbitrary runtime conflicts between packages (because t=
hey both
> >> > > provide the same symlink on the .so, while we could live with 2 ve=
rsion at
> >> > > runtime), that leads to tons of potential issue while building loc=
ally, and
> >> > > that makes having sometime insane issues with dependency tracking.=
 Why having
> >> > > .a, .la, .h etc in production servers? It could greatly reduce PBI=
 size, etc.
> >> > >
> >> > > Personnaly I do have no strong opinion in one or another direction=
=2E Should we be
> >> > > nicer with developers? with end users? with embedded world? That i=
s the question
> >> > > to face to decide if -devel packages is where we want to go or not.
> >> > >
> >> >
> >> > If we chose to go down that path, at least we should chose a differe=
nt
> >> > name as we've used the -devel suffix for many years for developmental
> >> > versions.
> >> >
> >> > I must agree that it is one of the things high on my list of things =
that
> >> > irritate me with several Linux distributions but I can see the point=
 for
> >> > for embedded systems as well.  But can't we have both?  Create three
> >> > packages, a default full package and split packages of -bin, -lib,
> >> > and even -doc.  My first though twas to make the full package a
> >> > meta-package that would install the split packages in the background,
> >> > but that would probably be confusing for users at the end of the day=
, so
> >> > rather just have it be a real package.
> >> >
> >> I do like that idea very much, and it is easily doable with stage :)
> >
> > +1 to splitting packages for embedded usage.
>=20
> -1 for the split, as it will not fix anybody's problem.
>=20
> On regular machines, disk space is cheap and having to install more
> packages is just annoying to users. Think of the time wasted that
> people are told to apt-get libfoo-dev before they can build anything
> from github, or similar.
>=20
> If you actually *are* space constricted on your tiny embedded machine,
> what the fuck are you doing with the sqlite database and all the
> metadata about ports/packages anyway? Just rm /usr/include and
> /usr/share/doc, /usr/share/man, etc. when building your disk image.
> But you are doing that already anyway, so this solves no actual
> problem for you.
>=20
> My two cents
> Uli

You are totally misunderstanding the goal of sub packages. Right now people=
 are
asking for nox11, noportdocs, noportexamples, etc and all sort of knob, when
building resulting in a nightmare for the package system, a given package m=
ight
or might not have a file depending on the knob, this is totally insane.

Here is a list of things the sub package solves (among full other things):
- Stupid conflicts like libjpeg and libjpeg-turbo, that conflicts because t=
hey
  have the same dev files, meaning that people cannot end up with packages
  bringing both libraries where there are no technical restrictions about i=
t. a
  more accurate examples is probably all the databases clients like pgsql or
  mysql etc.
- Allow to not split in tons of different ports things like qt and php.
- Not providing .h, .a, .la, etc files also makes it more complicated for
  someone to build something on a production server. Why the hell does a
  production would need a compiler and anything related to build? except ma=
king
  it easier for an attacked to build and run its own software easily that h=
as no
  meaning imho.
- Allow to bring cross compilation in the ports tree without too much heada=
che.
  To get cross compilation working the more atomic the packages are the sim=
pler
  it is. As we need for some build to have both native and target packages =
for
  example gettext: all the bin/* should be native one and are needed while
  building, whereas we need target version of libintl. Same goes for libxst=
l and
  xsltproc, it is very easier to flag them if they are small packages. (Yes=
 I am
  really close to get cross buidling working in the ports tree and yes havi=
ng
  splitted packages will help me a lot here.)
- Yes diskspace and bandwidth matters, Not everyone has a large bandwidth
  internet access, I have personnally setup a couple of FreeBSD servers in
  countries, bandwidth is not cheap at all.

If you all want flat packages then stop asking for nox11 nonls nodocs etc.

Some examples of weirdness because we do not split packages:
- glib2 bring python as a dependency (just because a developper only script=
 is
  in python), and NO glib port has not to be fixed here it does what we sho=
uld
  do.
- Lots of people complained about pkg-config being a run dep. But if we are
  consistent every single port bring .pc files should then run depend on
  pkg-config because .pc files are useless without pkg-config.
- People complain about having to depend on the full fat gcc46 just because=
 of the
  fact that their packages is linked to on of the libraries part of gcc46.
- Trying installing both gnome2 and kde4 on the same box this is impossible=
 just
  because gnome2 will at a moment pull in unixODBC and kde4 will pull in
  libiodbc, which in fact doesn't conflict in a binary world, they only
  conflicts on developpement only files! (don't tell me we don't have a
  dependency hell here.)

Concerning the dependency hell, we already have it, in fact it is easier to
solve the dependency hell with small atomic packages than with big large
packages. The other way is to go doing PBIs like packages, but even doing P=
BI,
will benefit a lot from splitted packages, because they will be smaller tha=
n the
acutal one, meaning faster to upgrade, faster to fetch, faster to install, =
and
easier to maintain. (Remember they are created out of regular packages.)

Concerning the fact that you need a couple of new packages to be able to
actually build something out github or whatever, this is a developer proble=
m and
doing pkg install gtk2-dev is not complicated at all. And remember that most
users are NOT developers, they are just USERS they just want to get things
running not to compile them.

Once again I'm not advocacing for any kind of -dev packages yet, we have lo=
t of
more important problem to solve before going that way.

regards,
Bapt

--x0KprKst+ZOYEj2z
Content-Type: application/pgp-signature

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

iEYEARECAAYFAlJTxpkACgkQ8kTtMUmk6ExBPwCgrDM4AyiiAt4wjkYVOe5Fptss
kIYAnjznv/g7JDZPwGCcJmXDnuVvbO2L
=b+jM
-----END PGP SIGNATURE-----

--x0KprKst+ZOYEj2z--



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