Page 1 of 6

Automated Build

Posted: Wed Dec 11, 2013 10:24 pm
by indolering
I would really like to see a better build system for the various Namecoin projects (things are rarely compileed for linux, win32, and OS X at the same time, I've had even the 32-bit Linux binaries fail on me, etc). I'm willing to provide OS X, Linux, and Windows build machines/slaves if someone is willing to setup the build infrastructure...

Does anyone know of any services which can automated distributin to the major package managers (RPM/Fedora/CentOS, dpkg/Debian/Ubuntu, MacPorts/Homebrew/OS X, etc)?

Re: Automated Build

Posted: Thu Dec 12, 2013 1:38 am
by moa
Good initiative.

First we would need autotools implemented and then there are various ways to build the different OS packages ...

Re: Automated Build

Posted: Thu Dec 12, 2013 3:10 pm
by pmc
indolering wrote:Does anyone know of any services which can automated distributin to the major package managers (RPM/Fedora/CentOS, dpkg/Debian/Ubuntu, MacPorts/Homebrew/OS X, etc)?
Check the open build service (see my signature). It supports various linux distros. Mac&Windows will probably be more difficult.

Re: Automated Build

Posted: Thu Dec 12, 2013 6:15 pm
by indolering
pmc wrote:Check the open build service (see my signature). It supports various linux distros. Mac&Windows will probably be more difficult.
I was just looking into that and this is exactly what we need. Can you get the packages included in the Ubuntu, Fedora, and CentOS distros? It would make setting up Namecoin much, much easier!

Mac and Windows aren't as big of a deal. Having something in Macports would be a cherry but users on either platform are primarily going to want GUIs.

Re: Automated Build

Posted: Thu Dec 12, 2013 10:25 pm
by biolizard89
Time for a stupid question, can something like Travis CI be used for releasing builds to the public, or are the builds in that system only usable for automated testing?

Re: Automated Build

Posted: Thu Dec 12, 2013 10:47 pm
by indolering
biolizard89 wrote:Time for a stupid question, can something like Travis CI be used for releasing builds to the public, or are the builds in that system only usable for automated testing?
I think the reason we don't have a better build system is because everyone was thinking these questions are stupid. From what I can tell, Travis CI seems to have everything needed to build namcoind including for OS X. We might also want to check out BuildHive which would give us a full-blown Jenkins install as well.

Re: Automated Build

Posted: Thu Dec 12, 2013 11:13 pm
by biolizard89
indolering wrote:I think the reason we don't have a better build system is because everyone was thinking these questions are stupid. From what I can tell, Travis CI seems to have everything needed to build namcoind including for OS X. We might also want to check out BuildHive which would give us a full-blown Jenkins install as well.
This definitely isn't my area of expertise, but yeah, some kind of continuous integration would be really nice to have for the various Namecoin projects. That said, maybe it should become my area of expertise? (I'm sure such skills are a plus to have when job-hunting....)

Anyone have suggestions on which service would be best, and why?

Re: Automated Build

Posted: Fri Dec 13, 2013 12:05 am
by indolering
biolizard89 wrote: This definitely isn't my area of expertise, but yeah, some kind of continuous integration would be really nice to have for the various Namecoin projects. That said, maybe it should become my area of expertise? (I'm sure such skills are a plus to have when job-hunting....)
Well, I certainly agree with Joel Spolsky's essay on the topic,
Can you make a build in one step?
By this I mean: how many steps does it take to make a shipping build from the latest source snapshot? On good teams, there's a single script you can run that does a full checkout from scratch, rebuilds every line of code, makes the EXEs, in all their various versions, languages, and #ifdef combinations, creates the installation package, and creates the final media -- CDROM layout, download website, whatever.

If the process takes any more than one step, it is prone to errors. And when you get closer to shipping, you want to have a very fast cycle of fixing the "last" bug, making the final EXEs, etc. If it takes 20 steps to compile the code, run the installation builder, etc., you're going to go crazy and you're going to make silly mistakes.
From a related article.

I seriously think that the build step is the single most crucial component of proper software development. Then again, I'm a terrible programmer and I can't write much code without introducing random bugs : )

Re: Automated Build

Posted: Fri Dec 13, 2013 12:30 am
by biolizard89
Those are good articles indolering, thanks for sharing.

Re: Automated Build

Posted: Fri Dec 13, 2013 9:10 am
by pmc
indolering wrote:
pmc wrote:Check the open build service (see my signature). It supports various linux distros. Mac&Windows will probably be more difficult.
Can you get the packages included in the Ubuntu, Fedora, and CentOS distros? It would make setting up Namecoin much, much easier!
Fedora and Ubuntu have been on my TODO list or a while... :-/
The problem with fedora is missing ECC support in openssl, and the ubuntu repo on OBS is missing some required libraries. I'll look into this.
I've never tried CentOS, but I suppose it'll be easily integrated once Fedora is working.