Java 2 Ada

Installation of FreeBSD for a jenkins build node

By stephane.carrez

A few days ago, I did a fresh installation of my Jenkins build environment for my Ada projects (this was necessary after a disk crash on my OVH server). I took this opportunity to setup a FreeBSD build node. This article is probably incomplete but tends to collect a number of tips for the installation.

Virtual machine setup

The FreeBSD build node is running within a QEMU virtual machine. The choice of the host turns out to be important since not all versions of QEMU are able to run a FreeBSD/NetBSD or OpenBSD system. There is a bug in QEMU PCI emulation that prevents the NetBSD network driver to recognize the emulated network cards (See qemu-kvm 1.0 breaks openbsd, netbsd, freebsd). Ubuntu 12.04 and 12.10 provide a version of Qemu that has the problem. This is solved in Ubuntu 13.04, so this is the host linux distribution that I've installed.

For the virtual machine disk, I've setup some LVM partition on the host as follows:

sudo lvcreate -Z n -L 20G -n freebsd vg01

this creates a disk volume of 20G and label it freebsd.

The next step is to download the FreeBSD Installation CD (I've installed the FreeBSD-10.0-RC2). To manage the virtual machines, one can use the virsh command but the virt-manager graphical front-end provides an easier setup.

sudo virt-manager

The virtual machine is configured with:

    CPU: x86_64
    • Memory: 1048576
    • Disk type: raw, source: /dev/vg01/freebsd
    • Network card model: e1000
    • Boot on the CD image

    After the virtual machine starts, the FreeBSD installation proceeds (it was so simple that I took no screenshot at all).

    Post installation

    After the FreeBSD system is installed, it is almost ready to be used. Some additional packages are added by using the pkg install command (which is very close to the Debian apt-get command).

    pkg install jed
    pkg install sudo bash tcpdump

    By default the /proc is not setup and some application like the OpenJDK need to access it. Edit the file /etc/fstab and add the following lines:

    fdesc   /dev/fd         fdescfs         rw      0       0
    proc    /proc           procfs          rw      0       0

    and mount the new partitions with:

    mount -a

    GNAT installation

    The FreeBSD repository provides some packages for Ada development. They are easily installed as follows:

    pkg install gmake
    pkg install gnat-aux-20130412_1 gprbuild-20120510
    pkg install xmlada- zip-ada-45
    pkg install aws-
    pkg install gdb-7.6.1_1

    After the installation, change the path and setup the ADA_PROJECT_PATH variables to be able to use gnatmake:

    export PATH=/usr/local/gcc-aux/bin:$PATH
    export ADA_PROJECT_PATH=/usr/local/lib/gnat

    Jenkins slave node installation

    Jenkins uses a Java application that runs on each build node. It is necessary to install some Java JRE. To use subversion on the build node, we must make sure to install some 1.6 version since the 1.8 and 1.7 version have incompatibilities with the Jenkins master. The following packages are necessary:

    pkg install openjdk6-jre-b28_7
    pkg install subversion-1.6.23_2

    Jenkins needs a user to connect to the build node. The user is created by the adduser command. The Jenkins user does not need any privilege.

    Jenkins master will use SSH to connect to the slave node. During the first connection, it installs the slave.jar file which manages the launch of remote builds on the slave. For the SSH connection, the password authentication is possible but I've setup a public key authentication that I've setup on the FreeBSD node by using ssh-copy-id.

    At this stage, the FreeBSD build node is ready to be added on the Jenkins master node (through the Jenkins UI Manage Jenkins/Manage Nodes).

    MySQL Installation

    The MySQL installation is necessary for some of my projects. This is easily done as follows:

    pkg install mysql55-server-5.5.35 mysql55-client-5.5.35

    Then add the following line to /etc/rc.conf


    and start the server manyally:

    /usr/local/etc/rc.d/mysql-server onestart

    The database tables are setup during the first start.

    Other packages

    Some packages that are necessary for some projets:

    pkg install autoconf-2.69 curl-7.33.0_1
    pkg install ImageMagick-nox11-

    Jenkins jobs

    The jenkins master is now building 7 projects automatically for FreeBSD 10: FreeBSD Ada Jobs

    Add a comment

    To add a comment, you must be connected. Login