Adventures in tinderbox 2

If you stumbled into this post first you may want to have a look over this previous post as we are building upon steps covered there.

So far we have got our world binaries built and these are the foundation of the environments we setup for testing our port builds. From here we create a tinderbox build. Within tinderbox a build refers to a combination of world binaries (the tinderbox jails we setup before) and a version of the ports files. It is probably a rare case but it would appear that you could setup a build using say netbsd pkgsrc system or similar, the most likely alternative to the official ports system would be an internal development branch of the ports source.

The first step is to setup the ports files to be used. A cvs checkout is shown in the docs and you could adjust the svn usage from yesterday if you have your own local svn repo (official ports are still in cvs at this point). The examples in the docs show a source checkout that is unique to your tinderbox setup. I think using the system installed ports will be enough for what I want and will bypass the confusion of three copies of the ports files. Personally I use portsnap to update my system ports tree and create or update a port there to test and develop it. Then I have a copy within my home folder that is an svn checkout from my redports account that I transfer changes to that I want to keep, and commit as desired from there. While my personal folder is just the ports I make changes to, I don't want a third copy just for test builds, so what I will use here is a user defined update method that will run portsnap anytime I want to update the ports tree. We have two options here, 1. create a portsTree with no update method leaving us to run portsnap manually as desired. 2. create a portsTree with a user update method. The first option is straight forward and acceptable for most but I want to look at option 2 here.

Reading the docs you may jump straight in and use a command like cd /usr/local/tinderbox/scripts ./tc createPortsTree -p FreeBSD -u USER -m /usr/ports and get errors and no ports tree setup. The docs don't help here so I went digging through the scripts and found the answer. When you create a portstree with a user defined update method it looks for the update script when it is first setup. The solution is simple. If we are creating a portstree called FreeBSD then we create a file in tinderbox/portstrees/FreeBSD and call it and for this example I want it to run portsnap so I use the following contents - #!/bin/sh portsnap fetch update Then run the createPortsTree command with the -u USER option. Simple and a good basis of any custom update you want to setup. You could even use this to run portsnap and then merge files from your personal ports repo automatically. This setup script is run with the command ./tc updatePortsTree

You may also want to share your local distfiles with tinderbox. Pretty easy and the one setup is shared across all portstree configs -

cd /usr/local/tinderbox/scripts ./tc configDistfile -c /usr/ports/distfiles

Now that we have our jails and portsTree setup it is time for the build. Remember a tinderbox build is a combination of a specific jail and portsTree and is straight forward -

cd /usr/local/tinderbox/scripts ./tc createBuild -b 10-CURRENT-clang -j 10-CURRENT -p FreeBSD -d "10-CURRENT building with clang"

The name I used there may raise a few questions but first lets consider what variations of builds we want to use.

The aim of using tinderbox is to test building under a variety of conditions, in this case primarily different system versions. To that end we started by creating 2 jails with different versions of world binaries, you may have extended that number and I encourage you to do so but I use two in these examples. From FreeBSD 9.0 we are moving away from a  dependency on gcc as the main compiler and now include clang within the base system. Being in the early transition of this is a bit awkward as not all ports build with the old gcc v4.2 that is included with base and not all ports build with clang either. Well ports changes need to be tested with each compiler so we may get a full ports build happening on any system install. One option we have is to specify what version of gcc is used to build our port. Easy till we get linking issues with something like boost installed with gcc42 and not linking with a gcc46 built port (that is my early guess and may not be the location of a solution). So anyway I am suggesting that a number of builds are setup to test building with clang as well as gcc. This will only apply to 9.0 and higher, 8.3 has just entered beta1 and doesn't appear to include clang. The other question you may have is that I only put clang in the name, how does it know to build with clang? It doesn't yet - that comes in a minute.

Well using the two jails we built yesterday lets setup the builds -

cd /usr/local/tinderbox/scripts ./tc createBuild -b 10-CURRENT-clang -j 10-CURRENT -p FreeBSD -d "10-CURRENT building with clang" ./tc createBuild -b 10-CURRENT-gcc -j 10-CURRENT -p FreeBSD -d "10-CURRENT building with gcc" ./tc createBuild -b 9-STABLE-clang -j 9-STABLE -p FreeBSD -d "9-STABLE building with clang" ./tc createBuild -b 9-STABLE-gcc -j 9-STABLE -p FreeBSD -d "9-STABLE building with gcc"

Now we have four builds setup to test our ports in. As I suggested before you should also consider having at least an 8-STABLE jail setup and maybe even a 7-STABLE one as well if not more. As clang is not included in 7 or 8 there is no need to setup two builds for each, I would still use gcc in the build name though.

At this point you will find a few directories have been created. The first you will probably see is tinderbox/{BUILDNAME} so if your following along you will have four there corresponding to each build you setup. The next ones are inside tinderbox/builds and have the same names as the four we just looked at. The dirs inside builds contain a Makefile with all the package  dependencies and although you may think make.0 and make.1 are makefiles they are in fact logs containing the log of the last compile done, each port compile is run in two phases, and a more than likely empty duds file. The top level dirs are where all the work is done. For each port you make, tinderbox will extract the tarball found in the corresponding jail build and mount the various points needed for portstrees/distfiles/devfs/procfs. From that you can work out that each build starts up in a unique environment (it uses chroot) completely isolated for your test make. Each environment is cleaned up after each test make and the log files will include files left behind if you get your pkg-plist incorrect.

Now to configuring the compiler to use. When you first test making your port and look at a log file you may notice that the timestamp at the start is all wrong. That will be a wrong timezone setting and gets us close to the compiler settings. First lets set the timezone, so edit the file tinderbox/scripts/etc/env/GLOBAL and add the following line (adjusted to match your timezone of course)

export TZ=Australia/Adelaide

You can see that it uses a bash style environment setting. Within the same folder we want to create a config file for each build we setup using the name build.{BUILDNAME} and have it contain the CC options that we wish to use. Before you go thinking about copying all your /etc/make.conf settings consider the purpose of this - testing against a minimum system config to ensure your port is as compatible as possible. Those with a custom edited make.conf need to handle their own port build conflicts with the options they want to use. So here all we want to do is set the compiler to use. To make this easy let's make a script, I will put this inside tinderbox/scripts and lets call it

#!/bin/sh cd /usr/local/tinderbox/scripts/etc/env for BNAME in `ls ../../../builds | grep clang` do if [ ! -e build.$BNAME ] then cat > build.$BNAME <<CCOPTIONS export CC=clang export CXX=clang++ export CPP=clang-cpp CCOPTIONS fi done for BNAME in `ls ../../../builds | grep gcc` do if [ ! -e build.$BNAME ] then cat > build.$BNAME <<CCOPTIONS export CC=gcc export CXX=g++ export CPP=cpp CCOPTIONS fi done

Pretty straight forward if you know some shell scripting, if it's a bit beyond what you know it simply gets a list of dirs from within builds and outputs three lines to a corresponding config file for each one. The script won't touch files that already exist, so delete them if you want a clean slate or adjust if you want to add to existing files. The first loop uses grep to get clang named builds the second gcc. Is it overkill specifying gcc for the gcc builds - yep - but it keeps things consistent and also gets the CC setting output to the log file to remove any confusion when looking over them later, or more to the point when you get someone else to look over them for some help.

Now your all setup to use tinderbox to test your ports building. While the docs say you can do an adhoc build with just the tinderbuild command I find that not to be the case, the two command you use are

cd /usr/local/tinderbox/scripts ./tc addPort -b 10-CURRENT-clang -d graphics/blender ./tc tinderbuild -nullfs -b 10-CURRENT-clang graphics/blender

The first time you build a port it may take a while - it will build each  dependency needed, basically running make package-recursive for your port. Next time it will just pkg_add each dependancy and build the port you ask it to. The -nullfs option is needed if you setup the nullfs mount for portstree as shown above (or maybe it is for distfiles?). This adds some more dirs for you as well.

tinderbox/packages/{BUILDNAME} will contain all the packages created by that build. You will find a folder for each category containing links to the corresponding package inside the All dir.

tinderbox/logs/{BUILDNAME} will contain log files of each port compiled for that build.

tinderbox/errors/{BUILDNAME} will contain copies of the log files that had errors - this is probably all your really interested in.

That's about all you need to get up and running with tinderbox. I think I will do one more post covering some housekeeping and other notes. To close off I'll show a script I use to automate running any number of ports inside every build you have configured, I save it in tinderbox/scripts and call it

#!/bin/sh ## auto build passed ports for every tinderbox build setup ## works on assumption that /usr/ports is used for tinderbox portstree ## to test that the portname is correct cd /usr/local/tinderbox/scripts if [ ! $# -gt 0 ] then echo "Usage: ${0##*/} [category/portname ...]" echo "Multiple ports can be listed - space separated list" exit 1 fi for TESTPORT in "$@" do if [ ! -e "/usr/ports/$TESTPORT" ] then echo "********************" echo " /usr/ports/$TESTPORT doesn't exist" echo "********************" else for BNAME in `ls ../builds` do echo "***** Building $TESTPORT" ./tc addPort -b $BNAME -d ${TESTPORT} ./tc tinderbuild -nullfs -b $BNAME ${TESTPORT} done fi done

So to make use of the script

cd /usr/local/tinderbox/scripts ./ graphics/blender graphics/luxrender ports-mgmt/tinderbox

and it will go through and compile each port with every tinderbox build you have setup.


red hoodie's picture

I was recommended this website by my cousin. I'm not sure whether this post is written by him
as nobody else know such detailed about my trouble.
You are incredible! Thanks!

Salt's picture

Excellent post. I am going through a few of these issues
as well..

celebrity cosmetic surgery before and after's picture

Breathtaking! That you don't come by data like this quickly and that
I am grateful! Maintain it up people!

Road To Survival Online Hack's picture

I think this is among the most vital info for me. And i'm glad reading your article.
But should remark on some general things, The website
style is wonderful, the articles is really nice : D.
Good job, cheers

sweetbeautyonline's picture

Thanks for sharing your thoughts on sweetbeautyonline.

FC Bayern Trikots's picture

FC Bayern Munchen wird allgemein als der FC Bayern oder FCB, FC
Bayern Munchen bezeichnet. Es ist ein deutscher Verein mit seiner physikalischen Grund in Munchen in Bayern. Bayern Munchen ist ein professioneller Fussballverein, der
in die erste Liga der deutschen Fussball-System spielt, in der Regel als Bundesliga bezeichnet.
Sie sind der erfolgreichste Verein in der Geschichte der Bundesliga und
haben bereits eine Rekordzahl von 25 nationalen Titeln zusammen mit 17 nationalen Cups
gewonnen. Lassen Sie uns einen kurzen Blick uber ein paar Bayern Munchen Fakten.


Bayern Munchen war wieder im Jahr 1900.
Elf Spieler gegrundet, mit Franz John nimmt die Hauptrolle, Einrichten des
beruhmten bayerischen Clubs. Der Club gewann
ihren ersten nationalen Meistertitel im Jahr 1932.
Allerdings war der Verein nicht ein Teil der Bundesliga bei
seiner Grundung im Jahr 1963 zuruck Sie genossen ihre grosste Errungenschaft in den 1970er Jahren. Sie gewannen den EM-Titel dreimal in Folge
von 1974 bis 1976 unter Hauptmannschaft Fussball-Legende
Franz Beckenbauer.

Sie haben auch erreicht Europacup / UEFA Champions League-Finale zehn Mal und gewann vor zwei Jahren ihren funften Titel als Teil
ihrer europaischen Hohen. Sie haben auch gewonnen UEFA-Pokal, UEFA Super Cup,
FIFA Klub-Weltmeisterschaft und der europaischen Pokalsieger einmal in jedem Wettbewerb, wahrend Nachbereitung Intercontinental
Cups zweimal. Seit der Grundung der Bundesliga hat
Bayern ihr Monopol auf die Festigkeit ihres Erfolges etabliert.
Sie haben bereits 25 Titel beansprucht, wahrend die Sicherung
7 aus den letzten 11 Titeln.

Home Boden, Jersey & Reichtum

Seit Mitte der 1990er Jahre hat Borussia Dortmund den traditionellen Lokalrivalen von Bayern Munchen entstanden. Heimspielstatte des Clubs ist in der Allianz Arena.
Die sie zuvor in Olympiastadion spielte fur 33 lange Jahre.
Das Trikot der Bayern ist rot und weiss und Wappen der Club verfugt uber eine Flagge von Bayern in weiss und
blau. Sie sind der reichste Klub in Deutschland und Rang drei in der Welt auch.
Laut einem Bericht, haufte sie 487,5 Mio. EU im Geschaftsjahr

los angeles's picture

Regulations in most jurisdictions exist in an effort to restrict the kind of dangers websites can take with their purchasers' money.
Nevertheless, since the websites don't have to pay curiosity on players' bankrolls even low-danger investments could be a significant
source of revenue.

sex's picture

Ademas de ello, se puede jugar en varias lenguas tales como frances ( ) e ingles ( ).
Gracias a esto, cualqwuier usuario tendra la oportunidaad de crear su pequeno grupo de amistades
con las que compartira grandes momentos de diversion en torno a una mesa de poker.

orange county genital warts's picture

I have been exploring for a little bit for any high-quality articles or blog posts on this
kind of space . Exploring in Yahoo I eventually stumbled upon this website.

Reading this information So i'm glad to exhibit that I have an incredibly just right uncanny feeling I discovered
just what I needed. I such a lot surely will make certain to do not fail to remember this site and provides it a look regularly.

health blog's picture

Excellent post. I used to be checking constantly this weblog and I'm impressed!
Extremely useful info particularly the ultimate part :) I deal
with such info a lot. I used to be seeking this particular info
for a very long time. Thanks and best of luck.

web de peliculas's picture

Genuinely no matter if someone doesn't be aware of then its up to other
visitors that they will help, so here it takes place.

battle camp hack's picture

Readers can study all the major zombie attacks that have occurred since the
dawn of humanity in Max Brooks' follow-up, the graphic novel The Zombie Survival Guide: Recorded Attacks (2009).

This is actually tougher than it sounds, but still not impossible.
It was not an overnight process; Kemper rallied the support of the local government and rounded up his equipment before producing his first batch in April of 2009.

homenet bialystok opinie's picture

Almost people have or get each year a breach in Internet
security and confidentiality at one time or another.
If all this sounds like something from science
fiction, technology experts expect that inside the near-future Internet connection speeds will end up 400 times
faster compared to a fiber-optic connection, that is difficult to fathom.
Rather than skipping on that business, you'll be able to let a team
of experts go to work creating a web-based persona in your case, after which you can be helped
by the traffic that results.

boom beach hack tool's picture

Philip Anschutz's soccer fixation has seen him dropping ungodly
cash on the MLS for a decade, so there is no reason he
cannot plop 50 million down on a brilliant business opportunity
if he sees it. This market is tentatively still located at the amphitheater, 12165 Forest
Hill Blvd. The program didn't take long earlier Teens across the America from New York to help Los angeles had her boomboxes on the roads.

sillones's picture

We absolutely love your blog and find most of your post's to be what precisely I'm looking for.

Do you offer guest writers to write content available for you?
I wouldn't mind writing a post or elaborating on a few of
the subjects you write in relation to here.
Again, awesome site!

Clitramine Slim XO's picture

My partner and I absolutely love your blog and find nearly all of your post's
to be just what I'm looking for. Would you offer guest writers to write content available for you?
I wouldn't mind composing a post or elaborating on a lot of the subjects you write related to here.
Again, awesome weblog!

elite test 360 reviews's picture

I relish, cause I discovered just what I used to be taking a look for.
You've ended my 4 day lengthy hunt! God Bless
you man. Have a nice day. Bye

Derma Nova Creme's picture

This site definitely has all the information and facts I
wanted concerning this subject and didn't know who to ask.

m88's picture

I do not even know how I ended up here, but I thought this post was great.
I don't know who you are but certainly you're going to a famous blogger if
you aren't already ;) Cheers!

Garcinia Cambogia Direct's picture

hey there and thank you for your info - I have certainly
picked up anything new from right here. I did
however expertise some technical issues using this web site, since I
experienced to reload the site lots of times previous to I could
get it to load properly. I had been wondering if your hosting is OK?
Not that I'm complaining, but sluggish loading instances times will very frequently
affect your placement in google and can damage your high quality score if ads and
marketing with Adwords. Anyway I am adding this RSS to my e-mail and could look out for much more of
your respective exciting content. Make sure you update this again soon.'s picture

Muy chulo, me ha gustado mucho

Raspberry ketone Burn's picture

Hello! This post couldn't be written any better! Reading through this
post reminds me of my old room mate! He always kept chatting about this.
I will forward this write-up to him. Pretty sure he will have a good read.
Many thanks for sharing!

Garcinia Cambogia Direct's picture

hey there and thank you for your info - I have certainly
picked up anything new from right here. I did
however expertise some technical issues using this web site, since I
experienced to reload the site lots of times previous to I could
get it to load properly. I had been wondering if your hosting is OK?
Not that I'm complaining, but sluggish loading instances times will very frequently
affect your placement in google and can damage your high quality score if ads and
marketing with Adwords. Anyway I am adding this RSS to my e-mail and could look out for much more of
your respective exciting content. Make sure you update this again soon.

Cambogia xt's picture

Nice weblog here! Also your web site loads up very fast!
What host are you the use of? Can I am getting your associate link
in your host? I wish my web site loaded up as
fast as yours lol

Nouvelle Skin's picture

Hi, I do believe this is a great site. I stumbledupon it ;) I will return once again since I saved as
a favorite it. Money and freedom is the greatest way to change,
may you be rich and continue to help other people.

multivitamins for men -'s picture

Ensuring an adequate intake of key nutrients is important to promoting overall

nouvebelle review's picture

It's hard to come by well-informed people for this
topic, however, you sound like you know what you're talking about!


go's picture

I just could not go away your web site prior to suggesting
that I extremely loved the standard info an individual provide for your visitors?
Is gonna be back continuously in order to investigate cross-check new
posts's picture

I think everything wrote was very logical.
However, what about this? what if you typed a catchier title?
I am not saying your information is not solid., however what if you added something that grabbed a person's
attention? I mean Add new comment | is a little plain. You should glance
at Yahoo's front page and note how they write article titles to
get viewers to open the links. You might add a related video or a pic or two to get people excited about what you've written. Just my opinion, it would make your website a little livelier.

website marketing's picture

Excellent pieces. Keep writing such kind of information on your page.
Im really impressed by your blog.
Hi there, You've performed a fantastic job. I'll definitely digg
it and personally suggest to my friends. I'm sure they will
be benefited from this web site.

Sharyl's picture

Attractive component to content. I just stumbled upon your website and in accession capital
to assert that I acquire actually enjoyed account your
boog posts. Anyway Iwill be subscribing on yur feeds or
even I achievement yyou get right of entry to consistently fast.

concerta's picture

This standard law imposed by FDA makes generic drugs more reliable, safe
and effective. When you are happy, your will power will be
strong but when you are disappointed it will become weak.
Where a prescription is required, we will require the prescription to be faxed to us.

forskolin extract's picture

excellent post, very informative. I wonder why the opposite
experts of this sector do not understand this. You must continue your writing.
I am sure, you've a great readers' base already!

natural detox's picture

If you desire to obtain a good deal from this piece of writing
then you have to apply these methods to your won weblog.

Nature Cleanse's picture

Have you ever considered about adding a little bit more than just your articles?
I mean, what you say is valuable and all. However think about if you added some great graphics or videos
to give your posts more, "pop"! Your content is excellent but
with images and clips, this website could certainly be one of
the most beneficial in its field. Excellent blog!

blogonblogspot's picture

great issues altogether, you simply won a brand new reader.
What could you suggest about your publish that you just made a few days in the past?
Any sure?

moviestarplanet Hack's picture

Intimate photos from every stage of Lee's fascinating life is included
and this one is a must buy for every Lee fan and scholar.
The first scenario involves you as the celebrity character preparing to attend a movie
premier where paparazzi and the press will be present.
If it is steady, either the player is in vacation mode,
or he is building army for a battle and he has ceased production of valuables.

Gaming's picture

Hi there, this weekend is good in support of me, for the reason that this point in time i am
reading this enormous educational article here at my home.

Nulexa's picture

I every time spent my half an hour to read this weblog's articles or reviews all the
time along with a mug of coffee.

Dermology Cream's picture

First off I would like to say fantastic blog! I had a quick question in which I'd
like to ask if you do not mind. I was curious to know how you center yourself and clear your mind before writing.
I have had trouble clearing my thoughts in getting my thoughts out there.
I do take pleasure in writing however it just seems like the first 10 to 15 minutes are lost just trying to figure
out how to begin. Any recommendations or tips? Thanks!

jungle heat generator's picture

Collect ten gold bricks to unlock the special LEGO City. It's a fair assumption, but you're going to be pretty
surprised when little LEGO stormtroopers start blasting you to pieces.
To be honest, he's one of those actors that
just puts a smile on my face when I see him working and he was always one of my favorite characters in Star

Binary Boom review's picture

Please let me know if you're looking for a article writer for your blog.
You have some really great articles and I think I would be a good asset.
If you ever want to take some of the load off, I'd absolutely love to write
some content for your blog in exchange for a link back to mine.
Please blast me an e-mail if interested. Thanks!

hay day hack's picture

you stop channel surfing at Budweiser Clydesdale commercials.
It may be wrestling's off-season, but there's always something new going on -- coach hirings and firings, new programs, new recruits, and more.
By the time of the Gotch-Hackenschmidt 1911 rematch, more schools
-- including Lehigh, Penn State and University of
Iowa -- had launched their wrestling programs.

Garcinia Naturals Review's picture

If you wish for to take much from this article then you have
to apply such methods to your won web site.

8 Ball Pool Hack's picture

You are now ready to take gaming up a level when you implement the tips given in this
article. Be sure each game is age-appropriate, especially if
the game you're purchasing is not for you. Sadly, this convenience can quickly become very expensive.

Renew Ecig's picture

I'm not sure why but this site is loading extremely slow for me.
Is anyone else having this issue or is it a problem
on my end? I'll check back later and see if the problem still exists.'s picture

Toch eventjes wat hierover completeren. Is iets over
trapliften.'s picture

I visited multiple websites however the audio quality for audio songs existing at this
web page is in fact marvelous.'s picture

I visited multiple websites however the audio quality for audio songs existing at this
web page is in fact marvelous.

can you get lean on creatine's picture

First of all I would like to say superb blog!

I had a quick question which I'd like to ask if you don't mind.
I was interested to know how you center yourself and clear
your head prior to writing. I have had a hard time clearing my thoughts in getting my ideas out.

I truly do enjoy writing however it just seems like the first 10 to
15 minutes are wasted just trying to figure out how to begin.
Any recommendations or hints? Cheers!


Add new comment