Compiling and Installing
January 3, 2024 ยท View on GitHub
Dependencies
- Glib >= 2.30 - http://developer.gnome.org/glib/2.30/
- Gtk+3 >= 3.22 - http://developer.gnome.org/gtk3/3.22/
- VTE >= 2.91 - http://developer.gnome.org/vte/0.30/
- libConfuse - http://www.nongnu.org/confuse/
- libx11-dev - http://www.x.org/wiki/
On Ubuntu based system install dependencies with:
sudo apt-get install git dh-autoreconf autotools-dev debhelper \
libconfuse-dev libgtk-3-dev libpcre2-dev libvte-2.91-dev pkg-config
You possibly need other packages such as gettext, automake,
autoconf, autopoint, and X11 development libraries.
On Fedora:
# This may be outdated (see Ubuntu example above, for a more thorough list)
sudo yum install git automake libconfuse-devel vte3-devel gtk3-devel \
glib-devel gettext-devel
The dependencies section above is complete but the sample command may not be
complete, depending on your system you may need to install additional packages.
Please carefully read the output of the autogen.sh (see below) for more
information of what you need to install.
Compiling
Generally if you have installed the development packages (e.g. *-dev or
*-devel) of the dependencies above and the autotools suite then it should
be possible to compile with:
mkdir build
cd build
../autogen.sh --prefix=/usr
make --silent
Changing to build/ and calling autogen.sh relative from there makes sure
that we perform an out-of-tree build and all generated files are stored inside
build/. This way build artifacts will not clutter the source directory.
For debugging, we can use the --enable-maintainer-flags option, which enables
additional debug flags and runtime debug messages as well as more compile-time
warnings:
../autogen.sh --enable-maintainer-flags
Alternatively, you can enable these separately by adding
--debug-functions or --enable-debug to the autogen call:
../autogen.sh --enable-debug-functions --enable-debug
If you get the following error message, then you are missing the autopoint
binary which is part of the autotools suite. On Ubuntu the dh-autoreconf
package installs it along with automake, autoconf and autoreconf.
Can't exec "autopoint": No such file or directory at [\]
/usr/share/autoconf/Autom4te/FileUtils.pm line 345.
You do not need the --silent option, but I prefer to use it to reduce the
output a bit. If you experience any problem during build, then drop the
--silent option.
Installing
After you have compiled the package run the following command to install tilda to the prefix that you have chosen before:
sudo make install
If you don't want to install to the /usr prefix, choose some other prefix
when you run the autogen.sh script, such as /opt/tilda and add it to your
path.
Packaging for Debian
This section explains how to package Tilda for Debian and Debian derived distributions.
Preparation before building the package
In order to build a package which can be uploaded to some Debian based distribution the following steps are necessary. Replace '#' with the number of the current minor and patch release version.
-
Check out the latest stable branch (e.g. tilda-1-#) and add any changes or bugfixes which you want to include, then commit these changes. Tilda stable branches are named
tilda-<MAJOR>-<MINOR>and all patch level releases for the same minor release go into that branch. -
Change into the
po/folder, runmake update-poand commit any changed.pofiles in thepofolder. If this change is forgotten, then after runningmake distcheckbelow there may be uncommitted changed to thepofolder in the source tree. -
Update the
Changelogand commit it:git commit -m "Update the change log for 1.#.#" -
Update the version number in
configure.acand make a commit, the version number as commit message:git commit -m "1.#.#" -
Create a tarball from the build folder:
cd build/ make distcheckThis will give you a tarball in the build folder named
tilda-1.#.#, the tarball needs to be copied to the location where you are building the package and it needs to be renamed (or symlinked) astilda_1.#.#.orig.tar.gz. -
Checkout the packaging files for tilda and update the change log at
debian/changelogsuch that it contains an entry for the latest version of tilda. Note, thedebian/changelogshould not contain information about tilda specific changes but about changes related to the Debian packaging.
Building a package
With the above make distcheck command you get a tarball from which a Debian
package can be build. A Debian package consists of a separate source and binary
package. The following steps document the basic commands that are required to
build both the source package and the binary package, to verify that both are
correct and to upload the source package to mentors.debian.org.
I am using pbuilder to build the source and binary packages.
Please refer to the man pages pbuilder(8) on howto
setup the base image. I also use pdebuild as a convenient script to
run debuild inside the pbuilder environment (see pdebuild(1)).
The following process creates several files and packages in the folder from
where these commands are executed, its useful to perform these commands in a
separate folder such as tilda-releases:
-
mkdir tilda-releases; cd tilda-releases. -
Copy the release tarball to the current location and extract it:
tar -xf tilda_1.2.#.orig.tar.gz -
cd tilda-1.#.# -
Checkout the
tilda-debianrepository from Github and copy thedebian/folder totilda-1.#.#/. -
To build the source package you need to run debuild. You can use one of the following two methods to do this:
-
Run debuild inside a change root by using
pdebuild:sudo pdebuild --use-pdebuild-internal \ -- --basetgz ~/pbuilder/unstable-base.tgz -
Run
debuilddirectly from the current folder (e.g. fromtilda-1.#.#/)
-
-
If
debuildfinishes without a problem next runpbuilder, this will verify that the package is buildable (without warnings or errors) in a clean environment:sudo pbuilder --build --basetgz ~/pbuilder/unstable-base.tgz \ tilda_1.#.#-1.dsc -
Optionally run
lintian:lintian -I --show-overrides tilda_1.#.#-1_amd64.changes -
Run
debsignto sign the package with your PGP key:debsign tilda_1.#.#-1_amd64.changes -
If
pbuilderdoes not complain and you don not see any warnings inlintian, then upload the package to mentors:dput mentors tilda_1.#.#-1_amd64.changes
Notes on pbuilder
The commands above assume an up to date pbuilder image for debian unstable which can be created via:
mkdir ~/pbuilder; cd ~/pbuilder
sudo pbuilder create --basetgz unstable-base-test.tgz --distribution sid \
--mirror http://deb.debian.org/debian
The --mirror option is necessary when creating the image on downstream
distributions such as Ubuntu. In such a case pbuilder would use the Ubuntu
mirror and will complain that the repository has no unstable release.