post-release 03: combined build-fixes

The release-branch tracks the latest release with applicable bugfixes;
after completing the release process, all fixes are merged back to mainline.
This commit is contained in:
Fischlurch 2015-11-20 23:42:55 +01:00
commit 9adea69ee5
8 changed files with 3400 additions and 16 deletions

View file

@ -56,7 +56,7 @@ def configure(env):
conf.env.Append(CPPFLAGS = ' -DHAVE_PTHREAD')
conf.env.Append(CCFLAGS = ' -pthread')
if not conf.CheckLib(symbol='clock_gettime', library='rt'):
if not conf.CheckLib(symbol='clock_gettime', library='rt'): # note librt is usually installed with libc6
problems.append('We expect the POSIX realtime extensions to be available through librt. ' +
'Unable to use clock_gettime()')
@ -100,7 +100,7 @@ def configure(env):
problems.append('We need the boost regular expression lib (incl. binary lib for linking).')
if not conf.CheckPkgConfig('gavl', 1.0):
if not conf.CheckPkgConfig('gavl', '1.4'):
problems.append('Did not find Gmerlin Audio Video Lib [http://gmerlin.sourceforge.net/gavl.html].')
else:
conf.env.mergeConf('gavl')
@ -108,19 +108,22 @@ def configure(env):
if not conf.CheckPkgConfig('alsa', '1.0.23'):
problems.append('Support for ALSA sound output is required')
if not conf.CheckPkgConfig('gtkmm-3.0', 3.0):
problems.append('Unable to configure GTK--')
if not conf.CheckPkgConfig('gtkmm-3.0', '3.10'):
problems.append('Unable to configure the mm-bindings for GTK-3')
if not conf.CheckPkgConfig('glibmm-2.4', '2.16'):
problems.append('Unable to configure Lib glib--')
if not conf.CheckPkgConfig('glibmm-2.4', '2.39'):
problems.append('Unable to configure the mm-bindings for Glib')
if not conf.CheckPkgConfig('gthread-2.0', '2.12.4'):
problems.append('Need gthread support lib for glib-- based thread handling.')
if not conf.CheckPkgConfig('glib-2.0', '2.40'):
problems.append('Need a suitable Glib version.')
if not conf.CheckPkgConfig('cairomm-1.0', 0.6):
if not conf.CheckPkgConfig('gthread-2.0', '2.40'):
problems.append('Need gthread support lib for Glib based thread handling.')
if not conf.CheckPkgConfig('cairomm-1.0', '1.10'):
problems.append('Unable to configure Cairo--')
verGDL = '3.8' # NOTE: lowered requriements here (was originally '3.12')
verGDL = '3.8' # lowered requirements to allow building on Ubuntu/Trusty & Mint (was originally '3.12')
verGDLmm = '3.7.3'
urlGDLmm = 'http://ftp.gnome.org/pub/GNOME/sources/gdlmm/'
urlGDLmmDEB = 'http://lumiera.org/debian/'
@ -132,12 +135,14 @@ def configure(env):
'(either from GNOME %s or use the debian package from %s)' %
(verGDLmm, urlGDLmm, urlGDLmmDEB))
if not conf.CheckPkgConfig('librsvg-2.0', '2.18.1'):
if not conf.CheckPkgConfig('librsvg-2.0', '2.30'):
problems.append('Need rsvg Library for rendering icons.')
if not conf.CheckCHeader(['X11/Xutil.h', 'X11/Xlib.h'],'<>'):
problems.append('Xlib.h and Xutil.h required. Please install libx11-dev.')
# NOTE the following dependencies where for the video displayer widget.
# As of 11/2015 this is broken and disabled. Might be obsolete....
if not conf.CheckPkgConfig('xv') : problems.append('Need libXv...')
if not conf.CheckPkgConfig('x11') : problems.append('Need X-lib...') # for the xvdisplayer widget
if not conf.CheckPkgConfig('xext'): problems.append('Need libXext.')

View file

@ -73,7 +73,7 @@ def defineBuildEnvironment():
env.Replace( CPPPATH =["#src"] # used to find includes, "#" means always absolute to build-root
, CPPDEFINES=['LUMIERA_VERSION='+VERSION ] # note: it's a list to append further defines
, CCFLAGS='-Wall -Wextra'
, CCFLAGS='-Wall -Wextra -Wformat-security'
, CXXFLAGS='-std=gnu++14 -Wno-enum-compare'
, CFLAGS='-std=gnu99'
)

View file

@ -21,7 +21,7 @@ Having said that -- for the time being, the core team won't spend much effort on
Platform
--------
We develop and test on standard PC hardware, 32 and 64 bit.
It is intended to target other platforms running run GNU/Linux eventually.
It is intended to target other platforms running GNU/Linux eventually.
Lumiera expects a `standard' desktop installation running a XServer.
Graphics::
@ -42,6 +42,12 @@ Special Hardware::
* Specs and APIs must be open.
* someone to do the actual interfacing and support needs to join the team
Compatibility
~~~~~~~~~~~~~
We try to keep our depdendencies close to Debian/stable and the most recent Ubuntu LTS.
Whenever we need more recent libraries or other dependencies not available for our reference platform,
we care to provide custom Debian / Ubuntu packages as reference. This does not mean Lumiera is
limited to Devian flavours, it should work on any current Linux distribution.
Languages and Tools
-------------------
@ -86,7 +92,7 @@ Libraries
* for the GUI: (*GTK-3*) gtkmm-3.0 gdlmm-3.0 glibmm-2.4 cairomm-1.0 xv
- libgtkmm-3.0-dev
- libcairomm-1.0-dev
- libglibmm-2.4-dev, requiring at least glib2.0 and gthread-2.0
- libglibmm-2.4-dev, requiring at least glib2.0 (2.40 or better) and gthread-2.0
- libxv-dev footnote:[for the XV viewer widget `gui/output/xvdisplayer.cpp`
-- currently obsolete as of [yellow-background]#5/2015#][yellow-background]#TODO 5/2015# and X-lib
- librsvg-2.0 and librsvg2-dev for rendering Icons

View file

@ -1,6 +1,7 @@
Backporting to older platforms
==============================
:Date: 8/2015
:Date: 11/2015
:toc:
GCC-4.9
-------
@ -59,4 +60,69 @@ sudo update-alternatives --config gcc
----
Building on Mint 17.2 (Rafaela) -- gcc and Libstdc++ 4.9
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Since Mint is based on Ubuntu LTS, we're facing pretty much the same situation here.
But what makes matters yet more confusing is the fact, that Mint offers even a Clang-3.6
package, which is _unfortunately_ built to rely on the gcc-4.8 libraries; there is a known
header inclusion bug in these libraries, which kicks in as soon as we switch to C++14.
Thus it is _mandatory_ to install the gcc-4.9 from above mentioned Ubuntu-Toolchain PPA,
which is indeed linked against the 4.9 libraries. Stay away from Clang on Mint for now!
Transcript from a build session on a ``pristine'' Mint 17.2 installation:
* add the following to your `/etc/apt/sources.list`
+
----
deb http://lumiera.org/debian/ rafaela experimental
deb-src http://lumiera.org/debian/ rafaela experimental
----
* install _Ichthyo's_ DEB signing key
+
----
gpg --keyserver keyserver.ubuntu.com --recv A1DE94B2
gpg --export -a A1DE94B2 | sudo apt-key add -
----
* prepare build environment
+
----
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install build-essential gcc-4.9 g++-4.9 git-core
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 \
--slave /usr/bin/g++ g++ /usr/bin/g++-4.9
sudo apt-get build-dep lumiera
----
+
after that, your system is prepared for building Lumiera
* now build
* either by (re)compiling the debian package
+
----
apt-get source lumiera
cd lumiera
dpkg-buildpackage
----
* or check out the source and hack away...
+
----
git clone git://git.lumiera.org/LUMIERA
cd LUMIERA
scons CC=gcc-4.9 CXX=g++-4.9
----
+
...as usual, from this point on, the compiler setting will be remembered in the file
`optcache`, so no need to repeat it for subsequent `scons` invocations.
TIP: Just run `scons` for standard build or run the testsuite with `scons check`.
Use the switch `-j#` with # corresponding to the number of your cores.
Probably you'll need at least 2GB of memory on AMD64, to build with `-j6`

View file

@ -0,0 +1,75 @@
Release preparation
===================
:Author: Ichthyo
:Date: Nov 2015
we have nothing to show and don't provide public releases yet --
but we ought to rehearse and practice the release process.
This document contains some hints and a checklist of steps
to perform for a proper release.
Steps to perform for a release
------------------------------
. release prep: clean-up obsolete information
- Debian package descriptions
- Build-Tutorial
* building from source
* building the debian way
* contributing
- technical/build/Dependencies
. release prep: bump version number
- `admin/scons/Setup.py`
- `data/config/setup.ini`
- `doc/devel/Doxyfile`
- `doc/devel/Doxyfile.browse`
. perform a back-merge from the release branch. +
It is relevant not to loose any bugfixes. Especially verify
- that all ongoing fixes from DEBs and other build activities
are properly represented as patches and committed to the release branch
- that adjustments to platform dependencies are picked up adequately
. perform the *Release-commit*:
it should mention the kind of the release and the version number.
Typically, with this commit, you'll update some top level stuff in the
source tree, like
- `README`
- `AUTHORS`
* also in the ``about'' box in the GTK-UI
* see `setup.ini`
- check the `LICENSE` file and add new license
declarations and notes, clean obsolete info here.
. update the *release branch*: ``upgrade current release to ##.##'' +
Make sure the release branch now really reflects current master, maybe
with the omission of some stuff to be kept out of the packages.
Set the *release tag*
. packaging...
- merge release -> deb
- verify the package description
- have a look at manpages and similar packaging documents
- update `debian/control` to reflect current version dependencies
- have a look into `debian/rules` (e.g. build flags and similar)
. delivery
- use whatever infrastructure is available to build packages.
- verify packages can be installed on a pristine VM
- upload packages to debian depot or commit them to PPAs
- clean-up and discard obsoleted old distributions and packages
. close the **release ticket**

View file

@ -63,6 +63,11 @@ The GUI depends on the following:
* link:https://wiki.gnome.org/LibRsvg[lib rSVG]
* link:https://git.gnome.org/browse/gdl[lib GDL]
CAUTION: there are known problems with *GCC-5.x* as of 11/2015 +
on recent distributions (Ubuntu/wily, Debian/stretch) you might
encounter failing tests.footnote:[these problems aren't really serious;
basically we're sometimes checking mangled class/type names, and seemingly
the mangling behaviour of GCC has changed slightly. We're working on that...]
TIP: Generally speaking, when you want to build software, you'll need the
_development_ version of the packages that contain the headers and pre-built
@ -79,6 +84,14 @@ libgavl-dev libgtkmm-3.0-dev libgdl-3-dev librsvg2-dev libxv-dev
Ubuntu note::
some people reported you need to install the `intltool` package from the standard
Ubuntu repository (for this reason it is included in the above collection)
Mint-17.2 (Rafaela) and Ubuntu 12.LTS::
we really need the gcc-4.9, so building on these platforms is a bit tricky. See our
link:{ldoc}/technical/howto/backporting.html#_building_on_mint_17_2_rafaela_8201_8212_8201_gcc_and_libstdc_4_9[»Backporting«]
page for detailed info...
GCC-5.0::
we're aware of some changes in mangled names (or type-IDs), which cause some tests to fail.
Other than that, compilation worked for us.
Build Directory

View file

@ -236,6 +236,7 @@ fact, many user interfaces should be possible.
- The initial GUI on which considerable work has already been done has been
implemented using the GTK toolkit. However, considerable more work needs to be
done on this present GUI.
- the stylesheet has been roughly ported to GTK-3, but needs a lot more polishing
- we urgently need conceptual (non-coding) contributions
* work out a coherent UI handling concept, in accordance with model and core

3218
wiki/thinkPad.ichthyo.mm Normal file

File diff suppressed because it is too large Load diff