Universal tinderbox


Tinderbox's main purpose would be as a developer tool to assist in FreeBSD port maintainers in getting various software packages available to FreeBSD users, but can it be used for more than that - yes. It is based on the scripts used by pointyhat to constantly compile ports to test for errors as well as create packages that are available to download through the various mirror sites. Which means it also gives you the ability to compile your own packages repository. If you want to make it do other things you would need to get into the scripts and adjust it to suit. Basically it is a set of scripts that sets up a clean system environment then compiles ports within it. That is a series of preset commands with some runtime options. There is no reason it can't be adjusted to run any automated task that you want to test within multiple clean systems.

So why would you want to build your own packages repository? Maybe you want your packages built with extra options turned on. Maybe you want to compile your ports with -O3 or CPUTYPE=corei7 to get a bit more performance. Or you support a range of servers and desktops that are not all the same OS versions and company policy prevents binary downloads from external sources being installed on your systems. Or you just want to build your own ports but want to know everything builds successfully before changing anything on your base system.

That last one comes in handy if you want to compile everything with clang. While effort is being made to move away from gcc and have everything built with clang, we aren't there yet. When you build your own ports in your base system various dependencies are built and installed before the port that needs them. This leads to newer libraries installed that may not work well with older versions of packages that use them and this mixed bag gets left that way when one port breaks. So it can be useful to know that everything compiles that is needed before anything in the base system gets changed. If you are using zfs then you could also use snapshots to rollback after a bad upgrade, but that's another story.

If you make changes to your ports tree to fix build issues then share the fixes with others by submitting a problem report. Chances are others would like to use the same fixes you made.

But tinderbox also lets you build against system versions that you don't have installed. How does that help you? Maybe you have an old 7.4 machine that you want to upgrade, you can build all the ports you want for that machine against FreeBSD 9.0 so they are all ready before you upgrade. It is often recommended that you recompile your ports after major system version updates. But then what if your upgrade goes bad and you want to go back to your old system? With tinderbox you could also build your ports against an older version and downgrade with confidence. While no-one would recommend you do that, it can give you peace of mind knowing that you have a way to fall back when changes don't work the way you want. If you want the option to fallback you may want to build both package versions before you upgrade.

In previous posts I have talked about setting up builds with a variety of system versions and configuring the environment options for each so I won't repeat that here. If you are wanting to build your own ports then you may want to expand the environment settings a bit. While you don't get the flexibility that you have with the /etc/make.conf you can add most of the options you would normally use there. The main limitation is you don't get conditional sections so anything you setup will be applied to every port you build. I previously showed you how to set the cputype used and you should be able to figure out how to add your own CFLAGS to the environment settings.

The recent options changes within the ports infrastructure (referred to as optionsng) does provide a way to set options for every port - tinderbox limitations prevent you using that within the environment settings for every port, but you can set some global options or turn on a few important options if that is all you want to do. Options set in the environment file will be applied to each port build, whether you choose to build with non-default options or not. If you want to configure options for a lot of ports then use the standard option config dialogs to set them up. My compileport script from the previous post allows you to use the -O option to use non-default options for each port.

So what are some options that you may want to add to your environment?

export PAPERSIZE=a4 export QT4_OPTIONS="CUPS QGTKSTYLE" export WITHOUT_JAVA=true export OPTIONS_SET="PGSQL SQLITE" export OPTIONS_UNSET="MYSQL JAVA" export PERL_VERSION=5.16.0

Well PAPERSIZE seems obvious. QT4_OPTIONS shows that any values with a space needs to be quoted, without the quotes only the first item is recognized. Within the environment file you can't use variable+=addvalue to set your variables gradually - you only get variable=value. The OPTIONS_SET and OPTIONS_UNSET provide a way to globally turn on or off common options. While a lot of options are unique to each port there is some consistency with naming that may also be expanded over time, with optionsng already adding some common ones like THREADS and DOCS to replace the NOPORTDOCS option that was previously available. To set an option only for a specific port use <uniquename>_SET. To get the ports uniquename use make -V UNIQUENAME eg -

cd /usr/ports/devel/py-gdata make -V UNIQUENAME py27-gdata cd /usr/ports/x11-toolkits/py-gtk2 make -V UNIQUENAME py-gtk2

While there is some consistency you can't always guess the ports uniquename from the portname. You may also want to look in /var/db/ports/<portname>/options for installed ports to see what values you have already used and what is available.

By default tinderbox isn't setup to store the port options you configure. You need to do that manually. To make it work you need to create a directory called options at the top of the tinderbox directory and inside that create a directory for each buildname you want options saved. As standard in unix the directory can be a link to another so you can use your existing options. To compile the ports with non-default options you need to build the ports with the -O option (or -o option to clear existing options and then set options)

So now all there is to do is create a build environment for your ports and start building. If you've been following along and have the base jails setup then -

cd /usr/local/tinderbox mkdir options cd options ln -s /var/db/ports 9-mypackages cd ../scripts ./tc createBuild -b 9-mypackages-amd64-clang -j 9.0-amd64 -p FreeBSD setenv OPTPORTLIST `pkg_info -aoq` ./compileport -O -B 9-mypackages -A amd64 -C clang

And if you are setting up your own packages to distribute through your network of FreeBSD machines you have a couple of options. To use them with the standard pkg_add you can either set PKG_PATH or PACKAGESITE to point to your packages. See man pkg_add for more details. If you use portmaster then you can set LOCAL_PACKAGEDIR to point to /usr/local/tinderbox/packages/9-mypackages-amd64-clang (or a common network mount) as well as PM_PACKAGES=first and PM_PACKAGES_LOCAL=pmp_local. Other package management tools should offer similar config options.


880 comments

motivational video's picture

WOW just what I was searching for. Came here by searching for personal injuries claims

cake tray forming machine's picture

Hello, I enjoy reading all of your article post. I wanted
to write a little comment to support you.

lose belly fat in tamil's picture

Greetings! Very helpful advice within this article!
It's the little changes which will make the biggest changes.

Thanks for sharing!

Bilnd Trust der film's picture

Greetings from Colorado! I'm bored at work so I decided to browse your site on my iphone during lunch break.
I love the information you present here and can't wait to take a look when I get home.
I'm shocked at how quick your blog loaded on my cell phone ..
I'm not even using WIFI, just 3G .. Anyhow, good blog!

komplett kostenlos's picture

Truly when someone doesn't know after that its
up to other visitors that they will help, so here it takes place.

youtu.be's picture

I wanted to thank you for this excellent read!! I certainly enjoyed every
bit of it. I have got you bookmarked to look at new things
you post...

lo que callamos las mujeres's picture

Informative article, totally what I needed.

Article About Buy Youtube Subscriber's picture

Video-sharing sites let you create "tags," which
are words that describe your video. At the end of
your videos you can motivate your viewers to click that link to your blog
as well. You shouldn't just record a video for the sake
of having one on your site; you record it because you want your audience to
know more about what you're offering in a less boring way than having to read through black and white text.

jones's picture

It is the best time to make a few plans for the longer term and it is time to be happy.
I've read this post and if I may just I want to suggest
you some fascinating things or advice. Perhaps you can write next articles relating to this article.
I want to learn even more things approximately it!

marketing tricks social media's picture

Good post. I learn something totally new and challenging
on blogs I stumbleupon every day. It's always interesting to read articles from other writers and
practice something from other web sites.

Italienische Band's picture

Great article! We will be linking to this particularly great article on our site.
Keep up the good writing.

Tamil Christian Songs's picture

Greetings! I know this is kinda off topic but I was wondering which blog platform are you using for this
site? I'm getting tired of Wordpress because I've had problems with hackers and I'm looking at alternatives for another platform.
I would be fantastic if you could point me in the direction of a good platform.

Arma 3 Helicopter Fails's picture

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

www.youtube.com's picture

Hi! Do you know if they make any plugins to protect against
hackers? I'm kinda paranoid about losing everything I've worked hard on. Any tips?

warheads's picture

Wonderful goods from you, man. I have keep in mind your stuff previous to and you are simply extremely wonderful.
I actually like what you've bought right here, certainly like what you are saying and the best way by which
you are saying it. You make it enjoyable and you continue to take care of to keep it sensible.

I cant wait to read far more from you. This is actually a tremendous site.

Tac dung cua yen sao doi voi phu nu's picture

At this moment I am going to do my breakfast, later
than having my breakfast coming yet again to read additional news.

Bergführer's picture

Thanks for sharing your thoughts. I really appreciate your efforts and I am waiting for your next write ups thank you
once again.

asbestos law suit's picture

Wonderful post! We are linking to this particularly great article on our site.
Keep up the great writing.

Handyortung's picture

Have you ever thought about creating an e-book or guest
authoring on other blogs? I have a blog based on the same topics you discuss
and would love to have you share some stories/information. I
know my subscribers would value your work. If you are even remotely interested, feel
free to shoot me an email.

vinyl-treppenstufen's picture

This is the perfect website for anybody who hopes to find out about this topic.

You realize a whole lot its almost hard to argue with you
(not that I personally will need to...HaHa). You certainly put a brand new spin on a subject
which has been written about for years. Excellent stuff, just wonderful!

michael's picture

It's very effortless to find out any topic on web as compared to books, as
I found this article at this web site.

Tax Lawyer Ca's picture

Get in touch with: 866-385-7441

For those who have an irs bank levy or an irs wage levy.
Release that irs levy using the support of a tax lawyer
who can get a release of tax lien via an offer in compromise with
the IRS.

Dentist Seattle's picture

I wanted to thank you for this great read!!
I absolutely enjoyed every little bit of it. I have you book marked to look at new
stuff you post...

https://imgur.com/gallery/wE5Cqcb's picture

It's best to then enter the activation code which you had obtained.
You should log within the Cell Strike account with
the intention to enjoy the VIP and Gold as you would like.

Auto Auction Portland's picture

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

edelstahl geländer's picture

Hmm it appears like your site ate my first comment (it was extremely long) so I guess I'll just sum it
up what I had written and say, I'm thoroughly enjoying your blog.
I as well am an aspiring blog writer but I'm still new to the whole thing.
Do you have any recommendations for first-time blog writers?

I'd definitely appreciate it.

Electrical Contractor's picture

I have read so many content concerning the blogger lovers but this post is in fact a nice paragraph,
keep it up.

cool's picture

Very shortly this web page will be famous amid all blogging users, due to it's nice posts

Que Caro Estoy Pagando's picture

Valuable info. Fortunate me I discovered your site by accident, and I'm stunned why this
twist of fate did not happened in advance! I bookmarked
it.

Auto Auction Portland's picture

I don't even know the way I stopped up here, however I thought this publish used to be great.

I do not understand who you are however definitely you are going to a famous
blogger when you are not already. Cheers!

https://youtu.be/'s picture

It's an awesome article in favor of all the web users; they will get advantage from it
I am sure.

youtube.com's picture

fantastic issues altogether, you just received a new reader.
What may you suggest about your put up that you made some
days ago? Any positive?

desire's picture

This piece of writing will help the internet visitors
for creating new webpage or even a blog from start to end.

Believe that it is possible by Pastor Davis Byars's picture

Hello! This is kind of off topic but I need some help from an established blog.
Is it tough to set up your own blog? I'm not very techincal but
I can figure things out pretty fast. I'm thinking about making my own but I'm not sure where
to begin. Do you have any ideas or suggestions?

Thanks

youtube.com's picture

With havin so much content and articles do you ever run into any problems of
plagorism or copyright infringement? My blog has a lot of unique content I've either created myself or outsourced but it seems a lot of
it is popping it up all over the web without my permission.
Do you know any ways to help stop content from being ripped off?
I'd definitely appreciate it.

Handyspionage's picture

What's up, every time i used to check webpage posts here in the early hours in the daylight, because i like to find out more and more.

Snow Tubing's picture

Thanks for finally writing about > Add new comment | Shaneware.biz < Liked it!

kayros's picture

I like the helpful info you provide in your articles.
I'll bookmark your weblog and check again here frequently.

I am quite certain I'll learn many new stuff right here! Best of luck for the next!

megatoad's picture

Every weekend i used to pay a quick visit this web page,
for the reason that i wish for enjoyment, as this this web page
conations genuinely good funny data too.

lo que callamos las mujeres's picture

Does your website have a contact page? I'm having a tough time locating it but, I'd like to send you
an email. I've got some recommendations for your blog you might be interested in hearing.
Either way, great website and I look forward to seeing it expand over time.

7 Ways unleash the Genius in you's picture

Keep on writing, great job!

Que Caro Estoy Pagando's picture

Nice post. I learn something new and challenging on sites I stumbleupon on a
daily basis. It will always be helpful to read
content from other authors and practice a little something from other sites.

www.uefaeurogermanysoccerjersey.com's picture

I love what you guys are up too. Such clever work and exposure!

Keep up the wonderful works guys I've incorporated you guys to
my own blogroll.

http://123blog.duadmin.isaev.info's picture

They pay off careful attention to consumer
comments to regularly boost their mystic network.

Visit my web page; http://123blog.duadmin.isaev.info

www.adin.isaev.info's picture

Samantha is blessed to work as a medium and, prior to relaxing to raise a household Samantha created for the Sunday Express.

my homepage: www.adin.isaev.info

Videoportal's picture

Excellent, what a blog it is! This website gives useful information to us,
keep it up.

vinylböden's picture

Keep on writing, great job!

tax a5torney's picture

Call: 866-385-7441

Should you have an irs bank levy or an irs wage levy.
Release that irs levy with all the aid of a tax lawyer
who can get a release of tax lien via an offer in compromise with the IRS.

Que Caro Estoy Pagando's picture

I was recommended this blog through my cousin. I am not sure whether
this put up is written by him as no one else understand such targeted
about my trouble. You are wonderful! Thanks!

Donald Trump's picture

Fantastic beat ! I would like to apprentice while you amend your web site, how can i subscribe for
a blog web site? The account helped me a acceptable deal.
I had been tiny bit acquainted of this your broadcast offered bright
clear idea

Pages

Add new comment