The Ada support has been removed from FreeBSD 13.1 ports because it was deprecated. Indeed, the gcc6-aux port was deprecated and expired on 2022-02-28. There is no indication about a replacement solution and using Ada for FreeBSD is a challenge but this is still possible. This article records a number of steps and commands that helped me setup a new Ada compiler based on GCC 12 on a fresh FreeBSD 13.1 installation.
Tag - FreeBSD
Ada development on FreeBSD 13.1
By Stephane Carrez2022-08-05 20:22:00
Upgrading FreeBSD for a GCC 4.9 Ada compiler
By Stephane Carrez2014-04-26 13:40:05
After the recent announcement of the GCC 4.9 Ada compiler availability on FreeBSD by John Marino, I decided to do the upgrade and give it some try.
After a quick investigation, I´ve performed the following two simple steps on my FreeBSD host:
sudo pkg update
sudo pkg upgrade
Among several upgrade notifications, I've noted the following messages. The gcc-aux
package corresponds to the GCC 4.9 compiler and the gnat-aux
package contains the GCC 4.6.4 compiler.
Upgrading gcc-aux: 20130411_3 -> 20140416
Upgrading gnat-aux: 20130412_1 -> 20130412_2
Upgrading aws: 3.1.0.0 -> 3.1.0.0_2
The GCC 4.9 Ada compiler is located in /usr/local/gcc-aux/bin
and the GCC 4.6.4 Ada compiler is located in /usr/local/bin
.
Once the upgrade was finished, I've rebuilt all my FreeBSD jenkins projects and... it's done.
It worked so well that I wasn't sure whether the right compiler was used. Looking at the generated ALI file there was the V "GNAT Lib v4.9"
tag that identifies the new compiler.
Next step is to perform a similar upgrade on NetBSD...
Installation of FreeBSD for a jenkins build node
By Stephane Carrez2013-12-31 14:43:19
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-4.4.0.0_1 zip-ada-45
pkg install aws-3.1.0.0
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
mysql_enable="YES"
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-6.8.0.7_3
Jenkins jobs
The jenkins master is now building 7 projects automatically for FreeBSD 10: FreeBSD Ada Jobs
Tags
- Facelet
- NetBSD
- framework
- Mysql
- generator
- files
- application
- gcc
- ReadyNAS
- Security
- binutils
- ELF
- JSF
- Java
- bacula
- Tutorial
- Apache
- COFF
- collaboration
- planning
- project
- upgrade
- AWA
- C
- EL
- J2EE
- UML
- php
- symfony
- Ethernet
- Ada
- FreeBSD
- Go
- KVM
- MDE
- Proxy
- STM32
- Servlet
- backup
- lvm
- multiprocessing
- web
- Bean
- Jenkins
- release
- OAuth
- ProjectBar
- REST
- Rewrite
- Sqlite
- Storage
- USB
- Ubuntu
- bison
- cache
- crash
- Linux
- firefox
- performance
- interview