Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Dec 2016 01:31:43 +0100
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        ports@FreeBSD.org
Subject:   HEADSUP: FLAVORS (initial version) and subpackages proposals
Message-ID:  <20161219003143.c2qo5wn3a5kiua3m@ivaldir.etoilebsd.net>

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

--7l5z4llzssmpc7e6
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi all,

I have been working for a while on 2 long standing feature request for the ports
tree: flavors and subpackages.

For flavors I would like to propose a simple approach first which is more like a
rework of the slave ports for now:

Examples available here:
https://reviews.freebsd.org/D8840 (with the implementation)
and
https://reviews.freebsd.org/D8843

Design: introduce a 3rd level in the hierarchy and make it work a bit like slave
ports

pros:
- all slave ports are self hosted under the same directory: easier for
  maintenance
- should work with all existing tools

cons:
- hackish: it is not really much more than a slave port
- it adds plenty of new Makefiles :(

I think anyway this is an improvement

Next step after that is in would be to extend it to allow some dependency on "I
depend on whatever flavor if port X"

Subpackages:
Design:
Add a new macro MULTI_PACKAGES
flag plist with an @pkg{suffixofthesubpackage} file
the framework will split the plist into small plist and create all the packages
All variables like COMMENT can be overridden with a COMMENT_${suffixofthesubpackage}

pros:
- simple and working almost now
- allow to simplify lots of ports
- options friendly (<optionname>_PACKAGE automatically appends a new entry to
  MULTI_PACKAGES)

cons:
- will break the paradigm that certain tools depend on (portmaster/portupgrade
  in particular are a huge problem since they are not actively maintained)

Example of the usage:
https://people.freebsd.org/~bapt/multipackage.diff

Note that I took the mpg123 as an example because it was a simple one to test
not because it may need subpackages

As a result you build 3 packages:
mpg123 (the runtime tools)
mpg123-lib: the runtime libraries
mpg123-sndio: the sndio plugin

LIB_DEPENDS on ports depending on libmpg123.so does not have to be changed, the
framework already automatically register only the mpg123-lib as a dependency and
not others.

Not the example is missing one thing: a dependency between mpeg123-lib and
mpg123

The second is not ready yet and would take time to land

Any comment?

Best regards,
Bapt

--7l5z4llzssmpc7e6
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEgOTj3suS2urGXVU3Y4mL3PG3PloFAlhXKm0ACgkQY4mL3PG3
PlqPGQ/8DBFLa5boRqUe6DMw3WVOz8x0XY5O5ji9cXITAPeBF2q6jgCao7sqsXOx
3RePlpGZqq1wMPjNPGnnLlQ5IfT1NrSP6+Wsg3oa157x/oJM67oOHuzESKR3jXtX
QhFHGTwvcqJXpbkoPtiNXDq4DB3J7Sesr9sB6yfpoBH8Hvj52vKdcjOFv50JKpR9
TUJU/K2UdO4tqILB5gifGf2zefCfxMEBLa8thDdPeseKDnAtoC4Mr6jTwgFFUBxT
uSvg8hSAdZAZ7viCkqGZEYP1keG+H6V1QbDdEVfhd7Kuc2ZEIFsgILpuIRKaQHoH
U1g/zyZo5Zydil90LFFZiGFngn2nVy33cYL24AmZvYDBhPg8Nk2yxRV02bqsOdYL
he5UlhhNF2RrqSEImRdX4Le0mu67NVhBM7DMa2IhwHQaKJL6Nej1gvclWKa5lQ7m
3UpEXw7O5Kc11eZ7yKXOHCt8elvkd0KIBgFwOc/wyQd72iHBAfsW4qV3vaEF2Ybq
khvyXBxWBj905cFpW4qhRbM4xPPKLOC+3XIUH/RqYAjBofQa+xP87BKicNAru9CE
QgDpIihloe+0ZJqmuSwgWyaE9hJ4kIx3ftC50lhm+0r4g/oH8CEY852Akx4Mspoe
GsVSRmQIGr1aTz9VfziwDfrZ5FChUThK4hiRTMpWXw+cT8uiDbQ=
=J7DF
-----END PGP SIGNATURE-----

--7l5z4llzssmpc7e6--



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