Welcome to mirror list, hosted at ThFree Co, Russian Federation.

README - github.com/freebsd/poudriere.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/README
blob: c690d397e015d7baab84d80a5b731a4aea219f74 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
poudriere only depends on base and only on base

To be able to use poudriere you will need a zfs pool dedicated.
that pool should have a fs name poudriere: poolname/poudriere

poudriere will also need a place to store it's datas: packages and logs. Let's
call it poudriere_data.

How it works
first you have to create jails, poudriere comes with bundle script to create
jails for you: 
	poudriere createjail -v 8.1-RELEASE -a amd64 -j 81amd64

it will fetch all the necessary stuff to create a simple minimal jail you can
create as much jails as you want.

poudriere creates the jail in a dedicated zfs file system under
poolname/poudriere/nameofthejail

by default createjail will create a jail which architecture is the same as the
host. If the host is amd64 you will be able to create i386 jails (need 32bit
support in the kernel)

when the jail creation is finished poudriere snapshots the jail filesystem to be
sure to be able to rollback to a clean filesystem.

now you are ready to test some ports

poudriere testport -d ~/ports-cvs/mybeautifulporttotest

all the tests will be done in all the jails in alphabetical order

it starts the jail, then mount the ports tree (nullfs) then mounts the package
dir (pourdriere_data/packages/jailname) then it mounts the
~/ports-cvs/mybeautifulporttotest (nullfs) it builds all the dependency (except
runtime ones) and log it to
poudriere_data/logs/mybeautifulporttotest-jailname-depends.log)
if packages for the dependencies already exists it will use them

when all the dependencies are built, packages for them are created so that next
time it will be faster.

all the dependency phase is done with PREFIX == LOCALBASE

after that it will build the port itself with LOCALBASE != PREFIX
and log the build to poudriere_data/logs/mybeautifulporttotest-jailname-build.log

it will try to:
 - install it
 - create a package from it
 - deinstall it
 - check for cruft left behind
 - propose the line to add to pkg-plist if needed

It is very easy to extend it so that we can easily add other tests if wanted
One could imaging a webui or stores datas in a SGBD


To use poudriere:

first you need a configuration file ${PREFIX}/etc/poudriere.conf
ZPOOL=poolname # the name of the zfs pool where poudriere will live
FTPHOST=ftp.freebsd.org #the host where poudriere will download the sets for the jails
IP=192.168.1.1 #the ip of the jail so that it can access internet (fetch distfiles etc)
ETH=nfe0 # the network interface linked to the jail
PORTSDIR=/usr/ports # the portstree that will be mounted into the jails
POUDRIERE_DATA=/usr/local/poudriere_data # the directory where poudriere will store packages and logs
MFSSIZE=1024m # if set WORKDIRPREFIX will be mdmfs at the given size
USE_LOOPBACK=yes|no # you maybe want to use a loopback on your host when needed. lo interface is
auto-magically found and setted
USE_PORTLINT=yes|no # use portling to check port sanity

make.conf per jails: 
${PREFIX}/etc/poudriere.d/make.conf: global to all the jails
${PREFIX}/etc/poudriere.d/<jailname>-make.conf: specific for the jail named <jailname>

NOTE:

-j is the name of the jail which will also be the name of the zfs filesystem
be carefull to respects the names supported by jail(8):
"This is an arbitrary string that identifies a jail (except it may not contain a ‘.’)"
be also carefull to not begin the name of the jail by a number if you are not in -stable or current:
http://svn.freebsd.org/viewvc/base?view=revision&revision=209820