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(CPPFLAGS = ' -DHAVE_PTHREAD')
conf.env.Append(CCFLAGS = ' -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. ' + problems.append('We expect the POSIX realtime extensions to be available through librt. ' +
'Unable to use clock_gettime()') '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).') 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].') problems.append('Did not find Gmerlin Audio Video Lib [http://gmerlin.sourceforge.net/gavl.html].')
else: else:
conf.env.mergeConf('gavl') conf.env.mergeConf('gavl')
@ -108,19 +108,22 @@ def configure(env):
if not conf.CheckPkgConfig('alsa', '1.0.23'): if not conf.CheckPkgConfig('alsa', '1.0.23'):
problems.append('Support for ALSA sound output is required') problems.append('Support for ALSA sound output is required')
if not conf.CheckPkgConfig('gtkmm-3.0', 3.0): if not conf.CheckPkgConfig('gtkmm-3.0', '3.10'):
problems.append('Unable to configure GTK--') problems.append('Unable to configure the mm-bindings for GTK-3')
if not conf.CheckPkgConfig('glibmm-2.4', '2.16'): if not conf.CheckPkgConfig('glibmm-2.4', '2.39'):
problems.append('Unable to configure Lib glib--') problems.append('Unable to configure the mm-bindings for Glib')
if not conf.CheckPkgConfig('gthread-2.0', '2.12.4'): if not conf.CheckPkgConfig('glib-2.0', '2.40'):
problems.append('Need gthread support lib for glib-- based thread handling.') 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--') 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' verGDLmm = '3.7.3'
urlGDLmm = 'http://ftp.gnome.org/pub/GNOME/sources/gdlmm/' urlGDLmm = 'http://ftp.gnome.org/pub/GNOME/sources/gdlmm/'
urlGDLmmDEB = 'http://lumiera.org/debian/' urlGDLmmDEB = 'http://lumiera.org/debian/'
@ -132,12 +135,14 @@ def configure(env):
'(either from GNOME %s or use the debian package from %s)' % '(either from GNOME %s or use the debian package from %s)' %
(verGDLmm, urlGDLmm, urlGDLmmDEB)) (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.') problems.append('Need rsvg Library for rendering icons.')
if not conf.CheckCHeader(['X11/Xutil.h', 'X11/Xlib.h'],'<>'): if not conf.CheckCHeader(['X11/Xutil.h', 'X11/Xlib.h'],'<>'):
problems.append('Xlib.h and Xutil.h required. Please install libx11-dev.') 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('xv') : problems.append('Need libXv...')
if not conf.CheckPkgConfig('x11') : problems.append('Need X-lib...') # for the xvdisplayer widget if not conf.CheckPkgConfig('x11') : problems.append('Need X-lib...') # for the xvdisplayer widget
if not conf.CheckPkgConfig('xext'): problems.append('Need libXext.') 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 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 , 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' , CXXFLAGS='-std=gnu++14 -Wno-enum-compare'
, CFLAGS='-std=gnu99' , 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 Platform
-------- --------
We develop and test on standard PC hardware, 32 and 64 bit. 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. Lumiera expects a `standard' desktop installation running a XServer.
Graphics:: Graphics::
@ -42,6 +42,12 @@ Special Hardware::
* Specs and APIs must be open. * Specs and APIs must be open.
* someone to do the actual interfacing and support needs to join the team * 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 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 * for the GUI: (*GTK-3*) gtkmm-3.0 gdlmm-3.0 glibmm-2.4 cairomm-1.0 xv
- libgtkmm-3.0-dev - libgtkmm-3.0-dev
- libcairomm-1.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` - 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 -- 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 - librsvg-2.0 and librsvg2-dev for rendering Icons

View file

@ -1,6 +1,7 @@
Backporting to older platforms Backporting to older platforms
============================== ==============================
:Date: 8/2015 :Date: 11/2015
:toc:
GCC-4.9 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://wiki.gnome.org/LibRsvg[lib rSVG]
* link:https://git.gnome.org/browse/gdl[lib GDL] * 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 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 _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:: Ubuntu note::
some people reported you need to install the `intltool` package from the standard 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) 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 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 - 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 implemented using the GTK toolkit. However, considerable more work needs to be
done on this present GUI. 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 - we urgently need conceptual (non-coding) contributions
* work out a coherent UI handling concept, in accordance with model and core * 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