|
Lines 277-297
Create the base jails which Poudriere will use for building:
Link Here
|
| 277 |
[source,shell] |
277 |
[source,shell] |
| 278 |
.... |
278 |
.... |
| 279 |
# poudriere jail -c -j 114Ramd64 -v 11.4-RELEASE -a amd64 |
279 |
# poudriere jail -c -j 131Ramd64 -v 13.1-RELEASE -a amd64 |
| 280 |
.... |
280 |
.... |
| 281 |
Fetch a `11.4-RELEASE` for `amd64` from the FTP server given by `FREEBSD_HOST` in [.filename]#poudriere.conf#, |
281 |
Fetch a `13.1-RELEASE` for `amd64` from the FTP server given by `FREEBSD_HOST` in [.filename]#poudriere.conf#, |
| 282 |
create the zfs file system `tank/poudriere/jails/114Ramd64`, |
282 |
create the zfs file system `tank/poudriere/jails/131Ramd64`, |
| 283 |
mount it on [.filename]#/poudriere/jails/114Ramd64# and extract the `11.4-RELEASE` tarballs into this file system. |
283 |
mount it on [.filename]#/poudriere/jails/131Ramd64# and extract the `13.1-RELEASE` tarballs into this file system. |
| 284 |
[source,shell] |
284 |
[source,shell] |
| 285 |
.... |
285 |
.... |
| 286 |
# poudriere jail -c -j 11i386 -v stable/11 -a i386 -m git+https |
286 |
# poudriere jail -c -j 12i386 -v stable/12 -a i386 -m git+https |
| 287 |
.... |
287 |
.... |
| 288 |
Create `tank/poudriere/jails/11i386`, mount it on [.filename]#/poudriere/jails/11i386#, |
288 |
Create `tank/poudriere/jails/12i386`, mount it on [.filename]#/poudriere/jails/12i386#, |
| 289 |
then check out the tip of the Subversion branch of `FreeBSD-11-STABLE` from `SVN_HOST` in [.filename]#poudriere.conf# into [.filename]#/poudriere/jails/11i386/usr/src#, |
289 |
then check out the tip of the Subversion branch of `FreeBSD-12-STABLE` from `SVN_HOST` in [.filename]#poudriere.conf# into [.filename]#/poudriere/jails/12i386/usr/src#, |
| 290 |
then complete a `buildworld` and install it into [.filename]#/poudriere/jails/11i386#. |
290 |
then complete a `buildworld` and install it into [.filename]#/poudriere/jails/12i386#. |
| 291 |
[TIP] |
291 |
[TIP] |
| 292 |
==== |
292 |
==== |
|
Lines 300-306
For example:
Link Here
|
| 300 |
[source,shell] |
300 |
[source,shell] |
| 301 |
.... |
301 |
.... |
| 302 |
# poudriere jail -c -j 11i386 -v stable/11@123456 -a i386 -m git+https |
302 |
# poudriere jail -c -j 12i386 -v stable/12@123456 -a i386 -m git+https |
| 303 |
.... |
303 |
.... |
| 304 |
==== |
304 |
==== |
|
Lines 308-315
For example:
Link Here
|
| 308 |
[NOTE] |
308 |
[NOTE] |
| 309 |
==== |
309 |
==== |
| 310 |
While it is possible to build a newer version of FreeBSD on an older version, most of the time it will not run. |
310 |
While it is possible to build a newer version of FreeBSD on an older version, most of the time it will not run. |
| 311 |
For example, if a `stable/11` jail is needed, the host will have to run `stable/11` too. |
311 |
For example, if a `stable/13` jail is needed, the host will have to run `stable/13` too. |
| 312 |
Running `11.4-RELEASE` is not enough. |
312 |
Running `13.1-RELEASE` is not enough. |
| 313 |
==== |
313 |
==== |
| 314 |
[NOTE] |
314 |
[NOTE] |
|
Lines 323-330
To create a Poudriere jail for `14.0-CURRENT`:
Link Here
|
| 323 |
In order to run a `14.0-CURRENT` Poudriere jail you must be running `14.0-CURRENT`. |
323 |
In order to run a `14.0-CURRENT` Poudriere jail you must be running `14.0-CURRENT`. |
| 324 |
In general, newer kernels can build and run older jails. |
324 |
In general, newer kernels can build and run older jails. |
| 325 |
For instance, a `14.0-CURRENT` kernel can build and run a `11.4-STABLE`. |
325 |
For instance, a `14.0-CURRENT` kernel can build and run a `12.3-STABLE`. |
| 326 |
Poudriere jail if the `COMPAT_FREEBSD11` kernel option was compiled in (on by default in `14.0-CURRENT`[.filename]#GENERIC# kernel config). |
326 |
Poudriere jail if the `COMPAT_FREEBSD12` kernel option was compiled in (on by default in `14.0-CURRENT`[.filename]#GENERIC# kernel config). |
| 327 |
==== |
327 |
==== |
| 328 |
[CAUTION] |
328 |
[CAUTION] |
|
Lines 340-347
A list of jails currently known to Poudriere can be shown with `poudriere jail -
Link Here
|
| 340 |
.... |
340 |
.... |
| 341 |
# poudriere jail -l |
341 |
# poudriere jail -l |
| 342 |
JAILNAME VERSION ARCH METHOD |
342 |
JAILNAME VERSION ARCH METHOD |
| 343 |
114Ramd64 11.4-RELEASE amd64 ftp |
343 |
131Ramd64 13.1-RELEASE amd64 ftp |
| 344 |
11i386 11.4-STABLE i386 svn+https |
344 |
12i386 12.3-STABLE i386 svn+https |
| 345 |
.... |
345 |
.... |
| 346 |
[[testing-poudriere-maintaining-jails]] |
346 |
[[testing-poudriere-maintaining-jails]] |
|
Lines 482-492
They must be updated manually by the porter.
Link Here
|
| 482 |
After jails and ports trees have been set up, the result of a contributor's modifications to the ports tree can be tested. |
482 |
After jails and ports trees have been set up, the result of a contributor's modifications to the ports tree can be tested. |
| 483 |
For example, local modifications to the package:www/firefox[] port located in [.filename]#/work/ports/www/firefox# can be tested in the previously created 11.4-RELEASE jail: |
483 |
For example, local modifications to the package:www/firefox[] port located in [.filename]#/work/ports/www/firefox# can be tested in the previously created 13.1-RELEASE jail: |
| 484 |
[source,shell] |
484 |
[source,shell] |
| 485 |
.... |
485 |
.... |
| 486 |
# poudriere testport -j 114Ramd64 -p development -o www/firefox |
486 |
# poudriere testport -j 131Ramd64 -p development -o www/firefox |
| 487 |
.... |
487 |
.... |
| 488 |
This will build all dependencies of Firefox. |
488 |
This will build all dependencies of Firefox. |
|
Lines 494-503
If a dependency has been built previously and is still up-to-date, the pre-built
Link Here
|
| 494 |
If a dependency has no up-to-date package, one will be built with default options in a jail. |
494 |
If a dependency has no up-to-date package, one will be built with default options in a jail. |
| 495 |
Then Firefox itself is built. |
495 |
Then Firefox itself is built. |
| 496 |
The complete build of every port is logged to [.filename]#/poudriere/data/logs/bulk/114Ri386-development/build-time/logs#. |
496 |
The complete build of every port is logged to [.filename]#/poudriere/data/logs/bulk/131Ri386-development/build-time/logs#. |
| 497 |
The directory name `114Ri386-development` is derived from the arguments to `-j` and `-p`, respectively. |
497 |
The directory name `131Ri386-development` is derived from the arguments to `-j` and `-p`, respectively. |
| 498 |
For convenience, a symbolic link [.filename]#/poudriere/data/logs/bulk/114Ri386-development/latest# is also maintained. |
498 |
For convenience, a symbolic link [.filename]#/poudriere/data/logs/bulk/131Ri386-development/latest# is also maintained. |
| 499 |
The link points to the latest _build-time_ directory. |
499 |
The link points to the latest _build-time_ directory. |
| 500 |
Also in this directory is an [.filename]#index.html# for observing the build process with a web browser. |
500 |
Also in this directory is an [.filename]#index.html# for observing the build process with a web browser. |
|
Lines 506-512
To ease investigation, jails can be kept running after the build by adding `-i`
Link Here
|
| 506 |
[source,shell] |
506 |
[source,shell] |
| 507 |
.... |
507 |
.... |
| 508 |
# poudriere testport -j 114Ramd64 -p development -i -o www/firefox |
508 |
# poudriere testport -j 131Ramd64 -p development -i -o www/firefox |
| 509 |
.... |
509 |
.... |
| 510 |
After the build completes, and regardless of whether it was successful, a shell is provided within the jail. |
510 |
After the build completes, and regardless of whether it was successful, a shell is provided within the jail. |
|
Lines 517-532
It is then possible to man:jexec[8] into it:
Link Here
|
| 517 |
[source,shell] |
517 |
[source,shell] |
| 518 |
.... |
518 |
.... |
| 519 |
# poudriere testport -j 114Ramd64 -p development -I -o www/firefox |
519 |
# poudriere testport -j 131Ramd64 -p development -I -o www/firefox |
| 520 |
[...] |
520 |
[...] |
| 521 |
====>> Installing local Pkg repository to /usr/local/etc/pkg/repos |
521 |
====>> Installing local Pkg repository to /usr/local/etc/pkg/repos |
| 522 |
====>> Leaving jail 114Ramd64-development-n running, mounted at /poudriere/data/.m/114Ramd64-development/ref for interactive run testing |
522 |
====>> Leaving jail 131Ramd64-development-n running, mounted at /poudriere/data/.m/131Ramd64-development/ref for interactive run testing |
| 523 |
====>> To enter jail: jexec 114Ramd64-development-n env -i TERM=$TERM /usr/bin/login -fp root |
523 |
====>> To enter jail: jexec 131Ramd64-development-n env -i TERM=$TERM /usr/bin/login -fp root |
| 524 |
====>> To stop jail: poudriere jail -k -j 114Ramd64 -p development |
524 |
====>> To stop jail: poudriere jail -k -j 131Ramd64 -p development |
| 525 |
# jexec 114Ramd64-development-n env -i TERM=$TERM /usr/bin/login -fp root |
525 |
# jexec 131Ramd64-development-n env -i TERM=$TERM /usr/bin/login -fp root |
| 526 |
# [do some stuff in the jail] |
526 |
# [do some stuff in the jail] |
| 527 |
# exit |
527 |
# exit |
| 528 |
# poudriere jail -k -j 114Ramd64 -p development |
528 |
# poudriere jail -k -j 131Ramd64 -p development |
| 529 |
====>> Umounting file systems |
529 |
====>> Umounting file systems |
| 530 |
.... |
530 |
.... |
|
Lines 563-579
For instance, testing package:www/firefox[] in a specific set named `devset`, ad
Link Here
|
| 563 |
[source,shell] |
563 |
[source,shell] |
| 564 |
.... |
564 |
.... |
| 565 |
# poudriere testport -j 114Ramd64 -p development -z devset -o www/firefox |
565 |
# poudriere testport -j 131Ramd64 -p development -z devset -o www/firefox |
| 566 |
.... |
566 |
.... |
| 567 |
This will look for the existence of these directories in this order: |
567 |
This will look for the existence of these directories in this order: |
| 568 |
* [.filename]#/usr/local/etc/poudriere.d/114Ramd64-development-devset-options# |
568 |
* [.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-devset-options# |
| 569 |
* [.filename]#/usr/local/etc/poudriere.d/114Ramd64-devset-options# |
569 |
* [.filename]#/usr/local/etc/poudriere.d/131Ramd64-devset-options# |
| 570 |
* [.filename]#/usr/local/etc/poudriere.d/114Ramd64-development-options# |
570 |
* [.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-options# |
| 571 |
* [.filename]#/usr/local/etc/poudriere.d/devset-options# |
571 |
* [.filename]#/usr/local/etc/poudriere.d/devset-options# |
| 572 |
* [.filename]#/usr/local/etc/poudriere.d/development-options# |
572 |
* [.filename]#/usr/local/etc/poudriere.d/development-options# |
| 573 |
* [.filename]#/usr/local/etc/poudriere.d/114Ramd64-options# |
573 |
* [.filename]#/usr/local/etc/poudriere.d/131Ramd64-options# |
| 574 |
* [.filename]#/usr/local/etc/poudriere.d/options# |
574 |
* [.filename]#/usr/local/etc/poudriere.d/options# |
| 575 |
From this list, Poudriere man:nullfs[5]-mounts the _first existing_ directory tree into the [.filename]#/var/db/ports# directory of the build jails. |
575 |
From this list, Poudriere man:nullfs[5]-mounts the _first existing_ directory tree into the [.filename]#/var/db/ports# directory of the build jails. |
|
Lines 606-612
Instead, Poudriere looks for existing files matching a name scheme derived from
Link Here
|
| 606 |
[source,shell] |
606 |
[source,shell] |
| 607 |
.... |
607 |
.... |
| 608 |
# poudriere testport -j 114Ramd64 -p development -z devset -o www/firefox |
608 |
# poudriere testport -j 131Ramd64 -p development -z devset -o www/firefox |
| 609 |
.... |
609 |
.... |
| 610 |
causes Poudriere to check for the existence of these files in this order: |
610 |
causes Poudriere to check for the existence of these files in this order: |
|
Lines 614-627
causes Poudriere to check for the existence of these files in this order:
Link Here
|
| 614 |
* [.filename]#/usr/local/etc/poudriere.d/make.conf# |
614 |
* [.filename]#/usr/local/etc/poudriere.d/make.conf# |
| 615 |
* [.filename]#/usr/local/etc/poudriere.d/devset-make.conf# |
615 |
* [.filename]#/usr/local/etc/poudriere.d/devset-make.conf# |
| 616 |
* [.filename]#/usr/local/etc/poudriere.d/development-make.conf# |
616 |
* [.filename]#/usr/local/etc/poudriere.d/development-make.conf# |
| 617 |
* [.filename]#/usr/local/etc/poudriere.d/114Ramd64-make.conf# |
617 |
* [.filename]#/usr/local/etc/poudriere.d/131Ramd64-make.conf# |
| 618 |
* [.filename]#/usr/local/etc/poudriere.d/114Ramd64-development-make.conf# |
618 |
* [.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-make.conf# |
| 619 |
* [.filename]#/usr/local/etc/poudriere.d/114Ramd64-devset-make.conf# |
619 |
* [.filename]#/usr/local/etc/poudriere.d/131Ramd64-devset-make.conf# |
| 620 |
* [.filename]#/usr/local/etc/poudriere.d/114Ramd64-development-devset-make.conf# |
620 |
* [.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-devset-make.conf# |
| 621 |
Unlike with sets, all of the found files will be appended, _in that order_, into one [.filename]#make.conf# inside the build jails. |
621 |
Unlike with sets, all of the found files will be appended, _in that order_, into one [.filename]#make.conf# inside the build jails. |
| 622 |
It is hence possible to have general make variables, intended to affect all builds in [.filename]#/usr/local/etc/poudriere.d/make.conf#. |
622 |
It is hence possible to have general make variables, intended to affect all builds in [.filename]#/usr/local/etc/poudriere.d/make.conf#. |
| 623 |
Special variables, intended to affect only certain jails or sets can be set in specialised [.filename]#make.conf# files, such as [.filename]#/usr/local/etc/poudriere.d/114Ramd64-development-devset-make.conf#. |
623 |
Special variables, intended to affect only certain jails or sets can be set in specialised [.filename]#make.conf# files, such as [.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-devset-make.conf#. |
| 624 |
[[testing-poudriere-sets-perl]] |
624 |
[[testing-poudriere-sets-perl]] |
| 625 |
.Using [.filename]#make.conf# to Change Default Perl |
625 |
.Using [.filename]#make.conf# to Change Default Perl |