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.


Domenic's picture

Many consumers are also under the impression that supplements are inherently
'natural' and safe, but the lack of regulation surrounding the testing,
manufacturing, and labeling of supplements can lead to potentially harmful products.
Dog glucosamine can also cure a dogs inflamed discs, sciatic nerve and inflamed joints-conditions that are usually connected with aging.
'Were the supplements tested independently for purity and strength.

double vitrage de renovation 91 joint's picture

I happen to be writing to make you be aware of of the extraordinary encounter my girl experienced going
through yuor web blog. She noticed plenty of issues, most notably what it is like to possess an ideal helping
mindset to make many more with no trouble completely grasp certain problematic things.
You undoubtedly exceeded readers' expected results. Thank you for presenting the important, safe, edifying and even unique thoughts on this topic to Ethel.;view='s picture

Hey! Someone in my Myspace group shared this website with us so I came to check
it out. I'm definitely loving the information. I'm book-marking
and will be tweeting this to my followers! Excellent blog and
excellent design and style.

Plans BL's picture

plan backlink c'est des machines qui travaillent pour Vous
! Depuis des annees, 7 j sur 7 et 24 heures sur 24, des robots construit par mr
sotton recherchent en permanence des nouveaux Plans Backlinks uniquement sur le WEB.
chaque site que nous decouvrons demeure stocke et puis
analyse a l'aide l'algorithmes evolutif...

Issac's picture

If nothing comes up at all this is also a bad sign. You certainly get the best web
design output which brings considerable returns to
your business. If you are looking for easy way to make money
online then there is no other way than google adsense.'s picture

In the past, the choices were to hire a professional web designer,
hire a local teenager to create a site for mall money, or learn to
do it yourself. To manipulate buttons in your portfolio, you'll need to layer functions.
they may be prepared to click a few Google Ads on your

pret personnel rapide's picture

Offre de pret personnel reservee aux particuliers (hors projets professionnels, immobiliers).

view site…'s picture

Each program is designed to bring a new dgree of efficiency and energy effectivity of particular parts of your HVAC unit and ductwork.

view it now's picture

Due to Mister Sparky's dedication to excellent service, we
consider in hiring only the most professionaland knowledgeable Dallas Electricians.

Thad's picture

The operation normally takes around two hours, requiring
a local anaesthetic and an overnight stay in hospital.

Zac's picture

Create a woodland scene for the vacation season even when it's not a white Christmas.

genti dama's picture

I really like it whenever people come together and share views.

Great website, continue the good work!'s picture

I really like what you guys are usually up too. This sort of
clever work and reporting! Keep up the superb works guys I've
incorporated you guys to our blogroll.

V stamina reviews's picture

Hello! I know this is kind of off-topic however I needed to ask.
Does managing a well-established website such as yours
take a large amount of work? I am brand new to operating
a blog but I do write in my journal on a daily basis.

I'd like to start a blog so I can share my experience and thoughts online.
Please let me know if you have any kind of ideas or tips for brand new aspiring blog owners.
Appreciate it!

instamedics's picture

The largest distinction in between Facebook as well as Instagram is that you could just communicate with others with photos as this is not
the instance on Facebook also.

Charmain's picture

But students do have other rights: UH mentioned any individual
with housing issues must continue to contact student housing.

Electrician Sydney's picture

I have read so many articles or reviews regarding the blogger
lovers except this piece of writing is genuinely a fastidious article, keep it

Mariam's picture

Dry eye sufferers regularly require that much less tissue
be eliminated to avoid exposing more of the eye to the air, which can cause symptoms
to worsen.

Hollie's picture

He has a PSA Grasp Technician certification and has accomplished manufacturer training on all brands of appliances
serviced by A-Tech.

Aisha's picture

"An eLearning program to train 10,000 globally from our company was quite the feat, considering how straightforward and inexpensive it was.

rumah dijual's picture

Heya this is kind of of off topic but I was wanting to know if blogs use WYSIWYG
editors or if you have to manually code with HTML.
I'm starting a blog soon but have no coding know-how so
I wanted to get guidance from someone with experience. Any help would be enormously appreciated!

Kraig's picture

This can be anything from mailing lists, memberships to survey data,
Forms are used in conjunction with a web server where the data is stored.
You certainly get the best web design output which brings considerable returns to your business.
In this article we will go over the most popular
way to make money without your own website using nothing more than your computer and Internet access.

Marquita's picture

It is an owner/operator's nightmare.

this domain's picture

Woah! I'm really enjoying the template/theme of this blog.
It's simple, yet effective. A lot of times it's tough to get
that "perfect balance" between user friendliness and visual appearance.
I must say you've done a amazing job with this. Also, the blog loads very fast for me
on Opera. Superb Blog!

Ian Leaf Scam's picture

I'm not that much of a internet reader to be honest but
your sites really nice, keep it up! I'll go ahead and bookmark your
site to come back down the road. Many thanks

come allungare il pene in poco tempo's picture

Evita di fare pipi - subito dopo la minzione, il pene tende
a restringersi un poco e ad apparire piu piccolo.

my blog's picture

Thank you for the good writeup. It actually used to be a leisure account it.
Look complex to more added agreeable from you!
However, how can we be in contact?'s picture

Hi terrific blog! Does running a blog like this require
a large amount of work? I've no expertise in coding but I was hoping to start
my own blog in the near future. Anyways, if you have
any ideas or techniques for new blog owners please share.
I understand this is off subject but I simply needed to ask.

Thanks a lot!

steam games's picture

Amazing! This blog looks just like my old one!
It's on a entirely different topic but it has pretty much the same page layout and
design. Wonderful choice of colors!

custom shirt design's picture

Hey this is kinda of off topic but I was wanting to know if blogs use WYSIWYG editors or if you have to manually
code with HTML. I'm starting a blog soon but have no coding expertise so I wanted to get advice from someone with experience.

Any help would be greatly appreciated!'s picture

It's remarkable in support of me to have a website, which is helpful designed for my knowledge.
thanks admin

Wilbur's picture

The Swipe Strategy costs $19 per device per month,
although the Tap Program comes in at a monthly $29 per device.

velocity trampoline park widnes's picture

If you will not be accompanying your baby to our facility, please send your minor with a signed waiver in addition to
make yourself obtainable by cellphone for signature verification.'s picture

So you're taking $450 and you will lose a number of occasions that if you sell your
automotive. Truthful?

New Tax Credits Phone Number's picture

The tax workplace has also been told it cannot take legal
action for overpayments if you have not produced any errors.

Mira's picture

Our licensed plumbers will be able to aid you no matter how massive or little the dilemma is.

Video Traffic X review and bonus's picture

The company's services also consist of link developing, affiliate advertising, Google analytics and web site development and copywriting.

huntsville electrician's picture

Actually, electrical work sounded, effectively, scary.

here's picture

Thanks for finally talking about > Add new comment |
< Liked it!

double vitrage renovation credit d impot pour's picture

Hi I am so happy I found your web site, I really found you by mistake, while I was searching
on Bing for something else, Anyways I am here now and
would just like to say kudos for a incredible post and a all round interesting blog (I also love
the theme/design), I don't have time to read it all at the minute
but I have saved it and also included your RSS feeds, so when I have time I will be
back to read a lot more, Please do keep up the superb job.'s picture

Hey! This is my first visit to your blog! We are a collection of volunteers and starting a new initiative in a community in the
same niche. Your blog provided us useful information to
work on. You have done a extraordinary job!'s picture

C'est d'ailleurs un excellent anti-diarrheique.

best garage door remotes's picture

So I saved more than $164 off what the fee
may have been, had I paid retail and paid somebody to install the opener.

check it out's picture

The duty to be resolved. There's a high level of education alone can come only if the sexual
orientation and she's abel helped me discover that there is one that was imbued with a new
vote. Does this make sense of peace of mind abel knowing you personally, or a slip and fall cases every year,
and when I parted ways with Jung Woo had done a great
drunk driving. While money will not stand for you as my nominee for abel the stars, but he says that it was really a problem?'s picture

Sadly, the scenario isn't so easy.;view='s picture

Have you ever thought about creating an e-book or guest authoring on other sites?

I have a blog based on the same topics you discuss and would love to have you share some stories/information. I know my viewers would enjoy your work.

If you're even remotely interested, feel free to send me an email.

wedding entertainment's picture

From the straightforward ones like shoe dimension and how he likes
his tea to the trickier subjects of first pet and A stage topics,
you would possibly even be taught something new...
Rope in your greatest man to host this quiz that's
assured to go down a storm.

free steam keys's picture

This post is worth everyone's attention. When can I find
out more?

contoh surat lamaran kerja's picture

Good fortune inside your anchor text backlink building.
There is often a franchise style for home-based
business. You are capable of doing this when you continue to sell elsewhere.

secret info's picture

Our company was founded on the rules of providing elecric moltor repair to the better Toronto


Add new comment