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:
commit
9adea69ee5
8 changed files with 3400 additions and 16 deletions
|
|
@ -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.')
|
||||||
|
|
|
||||||
|
|
@ -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'
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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`
|
||||||
|
|
||||||
|
|
|
||||||
75
doc/technical/infra/Release.txt
Normal file
75
doc/technical/infra/Release.txt
Normal 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**
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -62,7 +62,12 @@ The GUI depends on the following:
|
||||||
* link:http://cgit.freedesktop.org/xorg/lib/libXv[libXv]
|
* link:http://cgit.freedesktop.org/xorg/lib/libXv[libXv]
|
||||||
* 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
|
||||||
|
|
|
||||||
|
|
@ -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
3218
wiki/thinkPad.ichthyo.mm
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue