Reducing the size of the ports tree (brainstorm v2)

Tijl Coosemans tijl at FreeBSD.org
Fri Oct 31 23:08:35 UTC 2014


On Fri, 31 Oct 2014 19:56:21 +0100 Baptiste Daroussin <bapt at FreeBSD.org> wrote:
> Hi all,
> 
> tijl@ spotted an interesting point, distinfo and pkg-descr files files
> convenient are taking a lot of space for "free", we can reduce the size of the
> while ports tree by a factor 2 by simply merging them into one of the other
> files (Makefile and/or pkg-plist) from my testing it really devides
> significantly the size of the tree.
> 
> Problem is how to merge them if we want to.
> 
> What we do not want to loose:
> - Easyness of parsing distinfo
> - Easyness to get informations about the description
> 
> so far I have not been able to figure out a user friendly way
> 
> Ideas I got so far only concerns pkg-descr:
> Adding an entry in the Makefile for the WWW:
> WWW= bla
> or an entry in the plist: @www http...
> 
> for the description the Makefile is not suitable as multi line entry in
> Makefiles are painful
> Maybe a new keyword:
> @descr <<EOD
> mydesc
> in 
> multiline
> EOD
> 
> which could easily be added to the plist parser in pkg. But I'm do not find that
> very friendly in particular for make(1) to extract the data.
> 
> Concerning the distinfo I have no idea.
> 
> so this mail is a call of ideas :), if nothing nice ideas is found we will just
> do nothing here :)

For distinfo I was thinking about something like this in the Makefile:

DIST_FILES=	FOO BAR

FOO_FILE=	foo-1.0
FOO_SITES=	http://www.example.com/foo/
FOO_SIZE=	12345
FOO_SHA256=	0123456789abcdef.....

BAR_FILE=	bar-2.0
BAR_SITES=	http://www.example.com/bar/
BAR_SIZE=	54321
BAR_SHA256=	.....fedcba9876543210

If bsd.port.mk then contained this:
DIST_FILES?=	DIST
DIST_FILE?=	${PORTNAME}-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}

Then for ports with a single distfile named after PORTNAME (the large
majority), the above would reduce to:

DIST_SITES=	http://www.example.com/foo/
DIST_SIZE=	12345
DIST_SHA256=	0123456789abcdef.....

Also, if BAR_SITES is the same as FOO_SITES you can use somthing like
BAR_SITES=${FOO_SITES} of course.


pkg-descr and pkg-plist will be around for a while I think but maybe pkg
could support an alternative syntax that is similar to the manifest file
included in the package.  This file (named Manifest maybe?) would include
a comment, description, install/deinstall scripts and a list of files and directories like this (copied from https://github.com/freebsd/pkg):

comment: Short package description
desc: |-
  Long package description
  goes here
www: http:///www.example.com/
files: |-
  bin/foo
  lib/bar
dirs: |-
  some/dir
scripts:
  post-install: |-
    #!/bin/sh
    echo post-install
  pre-install: |-
    #!/bin/sh
    echo pre-install


More information about the freebsd-ports mailing list