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