From b1b89c168ea6f88d18198978a9bcf41194292939 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Mon, 2 Nov 2015 19:38:43 +0100 Subject: [PATCH 01/10] release prep: clean-up obsolete information --- .../{ExternalTreeDescription.txt => ETD.txt} | 2 +- doc/technical/build/Dependencies.txt | 10 ++-- doc/technical/build/LumieraDebianPackage.txt | 18 +++++-- doc/user/tutorials/DebianBuilding.txt | 33 ++++++++---- doc/user/tutorials/building.txt | 54 +++++++------------ doc/user/tutorials/contributing.txt | 25 ++++----- 6 files changed, 72 insertions(+), 70 deletions(-) rename doc/design/architecture/{ExternalTreeDescription.txt => ETD.txt} (99%) diff --git a/doc/design/architecture/ExternalTreeDescription.txt b/doc/design/architecture/ETD.txt similarity index 99% rename from doc/design/architecture/ExternalTreeDescription.txt rename to doc/design/architecture/ETD.txt index c71c85dc3..ecdaa23b3 100644 --- a/doc/design/architecture/ExternalTreeDescription.txt +++ b/doc/design/architecture/ETD.txt @@ -3,7 +3,7 @@ External Tree Description :Author: Ichthyostega :Date: Fall 2015 -//Menu: label ETD + **************** _to symbolically represent hierarchically structured elements, without actually implementing them._ diff --git a/doc/technical/build/Dependencies.txt b/doc/technical/build/Dependencies.txt index eade18bb7..f9d48494a 100644 --- a/doc/technical/build/Dependencies.txt +++ b/doc/technical/build/Dependencies.txt @@ -1,7 +1,7 @@ Dependencies ============ :Author: core-devs -:Date: 5/2015 +:Date: 11/2015 :toc: @@ -12,7 +12,7 @@ Lumiera shall scale with the provided Hardware, the more RAM and the more/faster CPU's you have the better. Nevertheless lower end 32bit machines are supported too. -Secondary targets will be other free operating systems which offer a decent Posix API. + +Secondary targets will be other free operating systems which offer a decent Posix API. Porting to other more or less similar platforms will be possible, if -- by coincidence -- Someone(TM) helps with porting. @@ -90,9 +90,11 @@ Libraries - 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 - - libgdl-3-0 or better through libgdlmm-3.0-2 -- the »Gnome Docking Library«footnote:[GDL isn't directly related to GNOME any more. + - libgdl-3 (3.12 or better) through libgdlmm-3 -- the »Gnome Docking Library«footnote:[GDL isn't directly related to GNOME any more. We contributed to the improvement of this library in the past. These improvements went upstream with GDL-2.27. At times, we used to ship our own GDL package. Right now, a recent upstream version - together with the corresponding *mm-bindings will do] + together with the corresponding *mm-bindings will do. We provide a debian package for the latter, + until they will be available in the official Debian/Ubuntu/Mint repos. But we don't have any + special requirements on these `gdlmm` bindings.] diff --git a/doc/technical/build/LumieraDebianPackage.txt b/doc/technical/build/LumieraDebianPackage.txt index a5f19c1c4..db29923e3 100644 --- a/doc/technical/build/LumieraDebianPackage.txt +++ b/doc/technical/build/LumieraDebianPackage.txt @@ -12,8 +12,8 @@ packages through our own link:http://Lumiera.org/debian[Debian Apt-Repository] ( TIP: readers new to Debian packages may want to have a look into our link:{ldoc}/user/tutorials/DebianBuilding.html[Debian build tutorial], - describing the commands for building and the structure of a Debian - (source) package in general + where we describe the commands for building and explain the structure + of a Debian (source) package in general Package build process @@ -44,7 +44,7 @@ Actually, this lookup process at application startup is performed in two phases transitive library dependencies, and finally shared objects, which are loaded at runtime through the `dlopen()` call.] Especially those libraries belonging first class to the Lumiera application are built - with a relative search path ('rpath' with $ORIGIN token). These libraries are placed + with a relative search path ('rpath' with `$ORIGIN` token). These libraries are placed into the +modules/+ subfolder - after successfully launching the executable, the second phase performs a lookup programmatically, @@ -69,7 +69,15 @@ Releases, Branches and Conventions Official releases are marked by a tag on the master branch. At that point, master should be in good shape, release documentation is polished; experimental features are removed or disabled. Usually, we'll also fork a *release branch* at that point, featuring bugfixes only. -From here we'll merge to the *debian branch* +From here we'll merge to the **debian branch**footnote:[the 'release' branch will be merged back at +times, while the 'debian' branch won't. This 'debian' branch is published through a separate +link:git://git.lumiera.org/debian/lumiera[debian/lumiera git repository] and not merged back, +since all tweaks here are strictly for debian packaging. There might be other packaging related +repositories in the future. Yet still, the 'debian' branch is based on the same common tree +and can in therory kept in the same git repository. Contrast this to the branch 'depot', which +is also published through our 'debian/lumiera' git repository. This latter branch corresponds +to a completely separate tree and holds the administrative part of our +link:http://Lumiera.org/debian[Debian package depot] (Repository) on Lumiera.org.] Typically the release will lead to the discovery of more or less serious bugs, which are fixed on the release branch and backported to master. The result is a sequence of point @@ -88,7 +96,7 @@ To (re)build the debian package -- here _RELEASE-TAG_ denotes the point in the Git history, which should become the reference source and be packaged into the *.orig.tar.gz. Usually, it's just -sufficient to use 'master' for that purpose. +sufficient to use branch 'release' for that purpose. Debian-Depot for installation via Apt diff --git a/doc/user/tutorials/DebianBuilding.txt b/doc/user/tutorials/DebianBuilding.txt index be21a8841..62f816329 100644 --- a/doc/user/tutorials/DebianBuilding.txt +++ b/doc/user/tutorials/DebianBuilding.txt @@ -5,7 +5,7 @@ building from source -- the »Debian Way« :toc: In case you're using a Debian-based system (e.g. Mint, Ubuntu...), there -is a simple alternative to the manaual compiling and installing of library +is a simple alternative to the manual compiling and installing of library dependencies. Instead of building Lumiera from source in the classical (hard) way, you might prefer *building from the Debian source packages*. @@ -14,7 +14,7 @@ Why -- what are the benefits? * rely on the Debian/Ubuntu package manager for sorting out the library and build dependencies * install Lumiera as a first-class package, like all the other software - you're using regularily. This way, the package manager ``knows'' about + you're using regularly. This way, the package manager ``knows'' about the library dependencies and can't mix up things due to a system upgrade. Under some circumstances, these very benefits might be a drawback, though. @@ -43,7 +43,7 @@ deb-src http://lumiera.org/debian/ jessie experimental + ---- sudo apt-get build-dep nobug-dev -sudo apt-get build-dep libgdl-lum-dev +sudo apt-get build-dep gdlmm-3 sudo apt-get build-dep lumiera ---- . *build* using the source package. @@ -56,10 +56,10 @@ apt-get source --compile nobug-dev prompted for signing with your GPG key. But because you're not going to upload the created binary packages anywhere, this step can be considered optional. - * installing the created package. + * install the created package. + Finally, you'll find several new +*.deb+ packages in the directory where you started -the build. You need to _install_ these packages then using the basic debian package +the build. You need to _install_ these packages then using the basic Debian package manager `dpkg` + ---- @@ -70,7 +70,7 @@ of course, the package names, versions and architecture will vary, depending on situation. * repeat those steps to work your way up to the +lumiera+ package; build and install - Nobug, maybe build and install libgdl-lum and finally build and install Lumiera + Nobug, maybe build and install the GDL mm-bindings and finally build and install Lumiera . clean up. + @@ -78,17 +78,17 @@ You can delete the source tree used for compiling. If you never intend to re-install the package, you could also delete the created package and source package components after installing it. But especially when trying out development versions it might be a good idea to stash those packages somewhere, as we're not keeping _every_ -package in the online Lumiera debian depot. While any package could be reproduced +package in the online Lumiera Debian depot. While any package could be reproduced exactly with a bit of Git knowledge, just keeping the `*.deb` might be more convenient. *That's it* -- you're done! Debian building is convenient, isn't it? -NOTE: What follows is a background information and configuration for advanced users. + +NOTE: What follows is a background information and configuration for advanced users. You can safely skip and ignore the remainder of this page if in doubt. + Required and recommended Debian packages ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - The Debian package manager stores for each package not only the required prerequisites, but also some additional _recommended_ packages: Software likely to make using the given package more convenient or improve the usage in some way. In addition, it also stores @@ -110,11 +110,22 @@ APT::Install-Recommends "false"; ^_Disclaimer:_ please be sure you understand the consequences...^ +Building packages from git +~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial describes the classic way of building a Debian package, which also is the +foundation for any shortcuts and convenience scripts. In practice, people maintaining +Debian packages happen to use various shortcuts and helper scripts to automate repetitive +tasks. One such helper especially worth mentioning is **git-buildpackage**. With a little bit +of configuration, this nifty script is able to create a full Debian package just form a +git checkout in a single shot. At Lumiera.org, we maintain all our Debian packages this +way, so the necessary configuration +debian/gbp.conf* is already in place. + + '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' The rest of this tutorial contains some more in-depth explanations for the curious -anatomy of a debian source package +anatomy of a Debian source package ---------------------------------- Debian source packages provide a standardised way of compiling software. These @@ -171,7 +182,7 @@ It is recommended to build with normal user permissions (not as root). Note, if several packages depend on each other, you need to give them all as list in a single command invocation. -After having prepared the sources thusly, you need to step into the root of the +After having prepared the sources this way, you need to step into the root of the source tree, if you want to build the whole package, or even want to tweak and modify parts. diff --git a/doc/user/tutorials/building.txt b/doc/user/tutorials/building.txt index c7550270f..c6544b3de 100644 --- a/doc/user/tutorials/building.txt +++ b/doc/user/tutorials/building.txt @@ -25,7 +25,7 @@ There are two distinct methods to build: - use Git to retrieve all source code and build the »classical way« -NOTE: just compiling Lumieara on a _Debian-based_ system (e.g. Mint, Ubuntu...) +NOTE: just compiling Lumiera on a _Debian-based_ system (e.g. Mint, Ubuntu...) is much simpler when using the Debian source package. See the separate link:DebianBuilding.html[tutorial page] for this footnote:[besides, there is a separate page with general @@ -46,10 +46,10 @@ authoritative information about the build dependencies is encoded into the link:{ldoc}/technical/build/SCons.html[build system]. Thus, when the build system aborts, indicating that a never version of some library is required, then usually the build system is right...] -More specifically, you'll need the GNU C/C++ compiler with C++14 support (Version >= 4.9) +More specifically, you'll need the GNU C/C\++ compiler with C++14 support (Version >= 4.9) in addition to the following tools and libraries: - * link:http://git-scm.com/[Git VCS] + * link:http://git-scm.com/[Git] (version management system) * link:http://www.scons.org/[SCons build system] * link:http://www.boost.org/[Boost libraries] * link:http://gmerlin.sourceforge.net/[GAVL library] @@ -60,7 +60,7 @@ The GUI depends on the following: * link:http://www.gtkmm.org/en/[gtkmm] * link:http://cgit.freedesktop.org/xorg/lib/libXv[libXv] - * link:https://wiki.gnome.org/LibRsvg[lib R SVG] + * link:https://wiki.gnome.org/LibRsvg[lib rSVG] * link:https://git.gnome.org/browse/gdl[lib GDL] @@ -76,7 +76,9 @@ libboost-dev libboost-program-options-dev libboost-regex-dev libboost-filesystem libgavl-dev libgtkmm-3.0-dev libgdl-3-dev librsvg2-dev libxv-dev ------------------------------------------------------------------------------------- -Optionally, you may also want to install the `gtk2-engines` package. +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) Build Directory @@ -121,8 +123,6 @@ git clone git://git.lumiera.org/debian/nobug This will create a (sub)directory called nobug that contains source code. + Compile and install NoBug with the following commands: -footnote:[this will try to install the NoBug library in `/usr/lib`, -so you will require root privileges to do so!] ------------------------------------------------------------ cd nobug autoreconf -i @@ -133,35 +133,21 @@ make sudo make install ------------------------------------------------------------ -GDL: building and installing -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +GDL-mm: building and installing +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -NOTE: 8/2015 the information in this paragraph is outdated! - We have switched to GTK-3 recently. Now we're able just to use the - official GDL from upstream (or your distribution). But we have also - switched to C++ bindings, and thus need a gdlmm installation, which - is not yet provided through the offial repositories on most distributions. - Thus, instead of shipping our own libGDL, now we're providing a DEB package - of gdlmm through our repository... - -The *GNOME Docking library* is sometimes available through your package manager, -but we provide a suitable custom package as well; the following shows how to -build the latter +The *GNOME Docking library* is available through your your package manager, +but we additionally need the C++ bindings. Since these haven't made it into the +standard repositories yet, we provide a suitable custom package here; +the following shows how to build the latter Version limitation:: - we contributed some improvements to GDL, which are only available in upstream - versions since 2.27. Moreover, the GDL development switched meanwhile to GNOME-3 - and GTK-3. Since we haven't upgraded GTK yet, we need to stick to a version prior - to this switch. If your distribution provides a 2.27 =< GDL =< 2.30, you're fine. - Otherwise we've created a special package, which doesn't interfere - with an existing (older) installation of GDL. + we rely on GTK-3 and thus need a compatible GDL-3. -Ubuntu note:: - you need to install the `intltool` package from the standard Ubuntu repository ------------------------------------------------------------ -git clone git://git.lumiera.org/debian/gdl -cd gdl +git clone git://git.lumiera.org/debian/gdlmm +cd gdlmm ./configure make sudo make install @@ -193,7 +179,7 @@ and you should get a list of the libraries, part of which should look like this: libgdl-lum.so.0 -> /usr/local/lib/libgdl-lum.so.0.0.0 ------------------------------------------------------------ -or similar. The same applies to 'libgdl-lum.so.0' if you needed to build it +or similar. The same applies to other custom libraries you needed to build explicitly for your system. If any of these libraries are not listed, you'll have to see why before you can continue. @@ -204,7 +190,7 @@ Building Lumiera Next, after having built and installed the external libraries, go into the _workspace directory_ and retrieve the Lumiera source code. Thereafter, build Lumiera by invoking the *scons* build -footnote:[more options for building with scons can be found via:`scons -h` ] +footnote:[more options for building with scons can be found via: `scons -h` ] ----------------- git clone git://git.lumiera.org/LUMIERA cd LUMIERA @@ -221,7 +207,7 @@ as a whole. Just invoke the +target/lumiera+ executable. The current working directory is not particularly relevant. After the build has finished successfully, you should be able to start Lumiera. -Currently, this will bring up the GUI, without any further functionality +Currently, this will bring up the GUI, _without any further functionality_ (!) You should see something like this: @@ -230,7 +216,7 @@ image:{l}/images/lumiera_gui_small.png[Current Lumiera GUI Screenshot] What's next? ------------ -If you're a coder, maybe you've found something to improve...? + +If you're a coder, maybe you have found something to improve...? + Contributing to Lumiera is easy, thanks to *Git* -> Tutorial link:contributing.html[Contributing to Lumiera coding] diff --git a/doc/user/tutorials/contributing.txt b/doc/user/tutorials/contributing.txt index 549707586..8eafb1910 100644 --- a/doc/user/tutorials/contributing.txt +++ b/doc/user/tutorials/contributing.txt @@ -5,9 +5,7 @@ Contributing to Lumiera :toc: -This document is aimed at helping newcomers to contribute quickly to the -project. - +This document is aimed at helping newcomers to contribute. + There are two major obstacles faced by people new to Lumiera: - _how_ can I contribute to Lumiera @@ -90,11 +88,11 @@ Packages normally available with your distribution:: for a Debian based system (including Mint, Ubuntu and similar flavours), you should be able to install the necessary dependencies with the command + ------------------------------------------------------------- +------------------------------------------------------------------------------------- sudo apt-get install build-essential scons git-core valgrind intltool \ libboost-dev libboost-program-options-dev libboost-regex-dev libboost-filesystem-dev \ -libgavl-dev libgtkmm-2.4-dev librsvg2-dev libxv-dev ------------------------------------------------------------- +libgavl-dev libgtkmm-3.0-dev libgdl-3-dev librsvg2-dev libxv-dev +------------------------------------------------------------------------------------- Packages not normally part of your distribution:: there are two packages most likely not available with your operating system distribution, so you'll need to obtain the source code for these packages @@ -111,14 +109,13 @@ mkdir build && cd build make sudo make install ------------------------------------------------------------ - - *GDL* -- a window docking library footnote:[GDL _is_ usually available - through the standard package manager, albeit in a GTK-3 based version; - since we haven't managed to port our GUI to GTK-3, we're sticking to a - rather ancient version of the Gnome Docking Library for now] + - **mm**-bindings for *GDL* -- a window docking library footnote:[GDL itself _is_ + available through the standard package manager, in a version compatible to GTK-3. + What is not yet available are the corresponding C++ bindings `gdlmm-3`] + ------------------------------------------------------------ -git clone git://git.lumiera.org/debian/gdl -cd gdl +git clone git://git.lumiera.org/debian/gdlmm +cd gdlmm ./configure make sudo make install @@ -239,11 +236,9 @@ 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. -- One immediate task that needs attention is to port the current GUI from - GTK2 to GTK 3. Especially, our custom style sheet needs to be ported - we urgently need conceptual (non-coding) contributions - * work out a coherent handling concept, in accordance with model and core + * work out a coherent UI handling concept, in accordance with model and core * we need a concept for key bindings and focus * we need a concept for integration with control surfaces * we need a concept for pen based handling From 52c828fb685c78db66940b186436732a0fd5b4e7 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Tue, 3 Nov 2015 03:06:24 +0100 Subject: [PATCH 02/10] post-release: add security relevant warning to standard build ...this is proposed by debian; lets see how this turns out We could also add -fstack-protector-strong, but I prefer to set this in the package definition --- admin/scons/Setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/scons/Setup.py b/admin/scons/Setup.py index 7a6f73976..0acda186b 100644 --- a/admin/scons/Setup.py +++ b/admin/scons/Setup.py @@ -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' ) From e80aed17f341b18142f95c6b88110c768a0d0df3 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Tue, 3 Nov 2015 05:04:06 +0100 Subject: [PATCH 03/10] workaround(#972): catch log and swallow errors on CSS loading This allows at least to bring the UI up, even if loading our custom theme and stylesheet fails. --- src/gui/window-manager.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/gui/window-manager.cpp b/src/gui/window-manager.cpp index 20898e46d..73c295546 100644 --- a/src/gui/window-manager.cpp +++ b/src/gui/window-manager.cpp @@ -64,8 +64,16 @@ namespace gui { { auto screen = Gdk::Screen::get_default(); auto css_provider = CssProvider::create(); - css_provider->load_from_path (lib::resolveModulePath (stylesheetName, resourceSerachPath_)); + try + { + css_provider->load_from_path (lib::resolveModulePath (stylesheetName, resourceSerachPath_)); /////////////////////////////////TICKET #953 should detect and notify CSS parsing errors. CssProvider offers a signal for this purpose + /////////////////////////////////TICKET #953 ...seems to be supported properly starting with gtkmm 3.18 (Debian/Jessie has 3.14) + } + catch(Glib::Error const& failure) + { + WARN(gui, "Failure while loading stylesheet '%s': %s", cStr(stylesheetName), cStr(failure.what())); + } StyleContext::add_provider_for_screen (screen, css_provider, GTK_STYLE_PROVIDER_PRIORITY_USER); From 80ea3b72c971e6fac5221bf1ac7c04fb83cab5fa Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Thu, 5 Nov 2015 03:26:05 +0100 Subject: [PATCH 04/10] DOC: mention we could use help for porting the stylesheet ...something a beginner could do --- doc/user/tutorials/contributing.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/user/tutorials/contributing.txt b/doc/user/tutorials/contributing.txt index 8eafb1910..a5f684180 100644 --- a/doc/user/tutorials/contributing.txt +++ b/doc/user/tutorials/contributing.txt @@ -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 From e1f7165208215fab7e6c50c0725597852721a00e Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Thu, 5 Nov 2015 03:27:55 +0100 Subject: [PATCH 05/10] DOC: instructions for building/backporting on Mint 17.2 (Rafaela) this is a bit trickty, since we need to install gcc-4.9 from a PPA. Mint only provides the libstdc++ 4.8, which is known to break when compiling in C++14 mode --- doc/technical/howto/backporting.txt | 82 ++++++++++++++++++++++++++++- doc/user/tutorials/building.txt | 5 ++ 2 files changed, 86 insertions(+), 1 deletion(-) diff --git a/doc/technical/howto/backporting.txt b/doc/technical/howto/backporting.txt index 6c14eeb65..3cf877582 100644 --- a/doc/technical/howto/backporting.txt +++ b/doc/technical/howto/backporting.txt @@ -1,6 +1,7 @@ Backporting to older platforms ============================== -:Date: 8/2015 +:Date: 11/2015 +:toc: GCC-4.9 ------- @@ -59,4 +60,83 @@ 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 + +patch -p1 << EOF +--- lumiera-0.pre.03.orig/admin/scons/Platform.py ++++ lumiera-0.pre.03/admin/scons/Platform.py +@@ -120,7 +120,7 @@ def configure(env): + if not conf.CheckPkgConfig('cairomm-1.0', 0.6): + problems.append('Unable to configure Cairo--') + +- verGDL = '3.12' ++ verGDL = '3.8' # NOTE: lowered requriements here (was originally '3.12') + verGDLmm = '3.7.3' + urlGDLmm = 'http://ftp.gnome.org/pub/GNOME/sources/gdlmm/' + urlGDLmmDEB = 'http://lumiera.org/debian/' +EOF + +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` diff --git a/doc/user/tutorials/building.txt b/doc/user/tutorials/building.txt index c6544b3de..4f952f2c2 100644 --- a/doc/user/tutorials/building.txt +++ b/doc/user/tutorials/building.txt @@ -79,6 +79,11 @@ 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 note:: + 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... + Build Directory From d6d8ddd5360e434db62db4633b777b45854b96ed Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sun, 15 Nov 2015 07:10:45 +0100 Subject: [PATCH 06/10] DOC: remove hotfix patch from backporting/Mint howto this patch is no longer required; we lowered the version dependencies in the package proper --- doc/technical/howto/backporting.txt | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/doc/technical/howto/backporting.txt b/doc/technical/howto/backporting.txt index 3cf877582..65a19549a 100644 --- a/doc/technical/howto/backporting.txt +++ b/doc/technical/howto/backporting.txt @@ -116,20 +116,6 @@ dpkg-buildpackage git clone git://git.lumiera.org/LUMIERA cd LUMIERA -patch -p1 << EOF ---- lumiera-0.pre.03.orig/admin/scons/Platform.py -+++ lumiera-0.pre.03/admin/scons/Platform.py -@@ -120,7 +120,7 @@ def configure(env): - if not conf.CheckPkgConfig('cairomm-1.0', 0.6): - problems.append('Unable to configure Cairo--') - -- verGDL = '3.12' -+ verGDL = '3.8' # NOTE: lowered requriements here (was originally '3.12') - verGDLmm = '3.7.3' - urlGDLmm = 'http://ftp.gnome.org/pub/GNOME/sources/gdlmm/' - urlGDLmmDEB = 'http://lumiera.org/debian/' -EOF - scons CC=gcc-4.9 CXX=g++-4.9 ---- + From c5e96efed84ec1c1784942c7ea71714a8d8e68f9 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Fri, 20 Nov 2015 02:36:34 +0100 Subject: [PATCH 07/10] fix compilation problem with gcc-5 ..while we should note at this point that the whole techique of hijacking std::hash is superfluous now, since the standard libray does no longer define a static assertion which defeats SFINAE --- src/lib/hash-standard.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/hash-standard.hpp b/src/lib/hash-standard.hpp index af022da7d..bb307aed1 100644 --- a/src/lib/hash-standard.hpp +++ b/src/lib/hash-standard.hpp @@ -72,6 +72,7 @@ #include +#include #include From ba48aa306a45f2a0394e50944da603d197cc3f85 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Fri, 20 Nov 2015 04:31:29 +0100 Subject: [PATCH 08/10] fix missing header include in test This omission was spotted when compiling with GCC-5 on Ubuntu/wily --- tests/library/test/test-helper-demangling-test.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/library/test/test-helper-demangling-test.cpp b/tests/library/test/test-helper-demangling-test.cpp index c158d1cee..6bee8c2a3 100644 --- a/tests/library/test/test-helper-demangling-test.cpp +++ b/tests/library/test/test-helper-demangling-test.cpp @@ -25,6 +25,7 @@ #include "lib/test/test-helper.hpp" #include +#include using std::string; using std::cout; From 96a4704738d3e21da1102fb92bc791fcae3ee31d Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Fri, 20 Nov 2015 05:34:11 +0100 Subject: [PATCH 09/10] DOC: some problems when building with GCC-5 --- doc/user/tutorials/building.txt | 16 +- wiki/thinkPad.ichthyo.mm | 280 +++++++++++++++++++++++++++----- 2 files changed, 249 insertions(+), 47 deletions(-) diff --git a/doc/user/tutorials/building.txt b/doc/user/tutorials/building.txt index 4f952f2c2..15e418d7b 100644 --- a/doc/user/tutorials/building.txt +++ b/doc/user/tutorials/building.txt @@ -62,7 +62,12 @@ The GUI depends on the following: * link:http://cgit.freedesktop.org/xorg/lib/libXv[libXv] * 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,11 +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 note:: - We really need the gcc-4.9, so building on these platforms is a bit tricky. See our +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 diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 492b03791..fdfca65cd 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -2669,8 +2669,7 @@ nochmal gegenchecken

- - + @@ -2689,8 +2688,7 @@ Ich meine also: zu Beginn vom Build sollte das Buildsystem einmal eine Infozeile ausgeben

- - + @@ -2702,13 +2700,55 @@ ...denn die stören jeweils beim erzeugen eines Hotfix/Patch im Paketbau per dpkg --commit

+
+
+ + + + + + + + + + + + + + + +

+ deprecated: auto_ptr +

+ +
+ +
+ + + + + + +

+ Tests mit TypeIDs scheitern +

+
+ +
+ +
+ + - - + + + + @@ -2718,7 +2758,8 @@ Doku durchkämmen nach Müll

-
+ + @@ -2764,7 +2805,7 @@
- + @@ -2774,7 +2815,8 @@ knappe Kennzeichnung des Releases in den Kommentar

-
+ + @@ -2782,7 +2824,7 @@ - + @@ -2801,7 +2843,8 @@ denn wir wollen keine DEB-Info im Master haben!

-
+ + @@ -2812,7 +2855,7 @@ - + @@ -2825,7 +2868,8 @@ die unmittelbaren Release-Dokumente durchgehen

-
+ + @@ -2839,7 +2883,7 @@ - + @@ -2852,7 +2896,8 @@ Sollte konfliktfrei sein

-
+ +
@@ -2875,7 +2920,7 @@
- + @@ -2885,12 +2930,16 @@ ...das heißt bauen und hochladen

-
+ + - + - + + + + @@ -2900,8 +2949,7 @@ Referenz: Debian/Jessie (stable) : i386 and x86_64

- -
+ @@ -2915,26 +2963,152 @@ Probleme mit der Compile-Reihenfolge  #973

- - +
- + + + + + - - - + + + + + + + + + + + +

+ ...führt sowohl eine README, alsauch ein Verzeichnis /usr/share/doc/lumiera/html auf, das (noch) nicht existiert +

+

+ unter Debian/Jessie wird das ignoriert +

+ +
+
+ + + + + + +

+ stelle fest: Fehler auf Trusty, +

+

+ nur Warnung auf Mint +

+ +
+ + + + + +

+ das heißt, daß ich versuchen kann, das Problem erst mal "unter den Teppich zu kehren" +

+

+ Die Wahrscheinlichkeit, daß irgend jemand Lumiera unter Ubuntu/Trusty installieren möchte, erscheint mir akademisch +

+ +
+ +
+
+
+ - + + + + + + + + +

+ bauen mit gcc-5 scheitert +

+ +
+ +
+ + + + + + + + + +

+ in lib/hash-standard.hpp +

+ +
+
+ + + + + + +

+ mit gcc-5 gebaute Tests scheitern +

+ + +
+ +
+ + + + + + +

+ bauen mit gcc-4.9 nicht möglich +

+ + +
+ + + + + +

+ es gibt Probleme beim Linken mit den Boost-Libraries, die auf Ubuntu/wily mit gcc-5 gebaut sind. +

+ + +
+ +
+ + + + + + @@ -2945,26 +3119,16 @@

- +
- - - - - - - -

- totmachen: Debian/Wheezy (stable) : i386 and x86_64 deprecated: to be discontinued -

- -
- + + + + - @@ -3009,6 +3173,36 @@ + + + + + + + + +

+ Ticket #722 +

+ +
+
+ + + + + + +

+ seit gcc-4.8 ist kein static_assert mehr in der STDlib +

+ +
+
+ + + + From 60b6267eac8dc1ebad76e3cec69f98fc7d66e3f5 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Fri, 20 Nov 2015 06:12:59 +0100 Subject: [PATCH 10/10] DOC: after release 0.pre.03 -- checklist with steps for release preparation --- doc/technical/infra/Release.txt | 75 +++++++++++++++++++++++++++++++++ wiki/thinkPad.ichthyo.mm | 68 +++++++++++++----------------- 2 files changed, 104 insertions(+), 39 deletions(-) create mode 100644 doc/technical/infra/Release.txt diff --git a/doc/technical/infra/Release.txt b/doc/technical/infra/Release.txt new file mode 100644 index 000000000..2b884fe8c --- /dev/null +++ b/doc/technical/infra/Release.txt @@ -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** + + diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index fdfca65cd..226343cd2 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -2190,9 +2190,10 @@
- + - + + @@ -2584,7 +2585,7 @@ - + @@ -2595,10 +2596,10 @@

- +
- - + + @@ -2614,7 +2615,7 @@ - + @@ -2625,13 +2626,14 @@

+ - + @@ -2655,25 +2657,7 @@ - - - - - - - -

- Plattform-Abhängigkeiten -

-

- nochmal gegenchecken -

- -
- -
-
- + @@ -2704,7 +2688,7 @@ - + @@ -2746,8 +2730,8 @@ - - + + @@ -2824,7 +2808,7 @@ - + @@ -2853,9 +2837,11 @@ - + + - + + @@ -2901,7 +2887,7 @@ - + @@ -2920,7 +2906,7 @@ - + @@ -3121,8 +3107,11 @@ - - + + + + + @@ -3130,8 +3119,9 @@ - + + @@ -3222,7 +3212,7 @@ - +