Commit graph

36 commits

Author SHA1 Message Date
4131602593 Upgrade: disable doxygen builder (WIP)
BuilderDoxygen and BuilderGCH are external plug-ins,
not developed in this project and probably unmaintained.

TODO: decide how to fix or replace them...
2025-03-16 16:48:14 +01:00
406275abbe Upgrade: adapt to use Scons 4.x which uses Python 3
The build system Scons switched from using Python 2.7 to using
Python 3.x, so the build breaks on, for example, Debian Bullseye.

As a first step use `ato3` to convert Python scripts from 2 to 3.
2025-03-16 16:38:07 +01:00
806db414dd Copyright: clarify and simplify the file headers
* Lumiera source code always was copyrighted by individual contributors
 * there is no entity "Lumiera.org" which holds any copyrights
 * Lumiera source code is provided under the GPL Version 2+

== Explanations ==
Lumiera as a whole is distributed under Copyleft, GNU General Public License Version 2 or above.
For this to become legally effective, the ''File COPYING in the root directory is sufficient.''

The licensing header in each file is not strictly necessary, yet considered good practice;
attaching a licence notice increases the likeliness that this information is retained
in case someone extracts individual code files. However, it is not by the presence of some
text, that legally binding licensing terms become effective; rather the fact matters that a
given piece of code was provably copyrighted and published under a license. Even reformatting
the code, renaming some variables or deleting parts of the code will not alter this legal
situation, but rather creates a derivative work, which is likewise covered by the GPL!

The most relevant information in the file header is the notice regarding the
time of the first individual copyright claim. By virtue of this initial copyright,
the first author is entitled to choose the terms of licensing. All further
modifications are permitted and covered by the License. The specific wording
or format of the copyright header is not legally relevant, as long as the
intention to publish under the GPL remains clear. The extended wording was
based on a recommendation by the FSF. It can be shortened, because the full terms
of the license are provided alongside the distribution, in the file COPYING.
2024-11-17 23:42:55 +01:00
8d6cb19e3f Global-Layer-Renaming: fix handling of GuiResources in the build
the new structure causes them now to be installed into $TARGET/stage
which is simply not what I want. I still consider $TARGET/gui the better choice,
since an administrator or packager is not aware of our layer namings.

The existing solution was half baked anyway, it did not really replicate the source tree.
On the other hand, I want to retain the location of the CSS files within the GUI tree,
since I consider it a good practice, to keep "code-like" resources with the actual code,
and not far away in some arcane "data" directory.

No I've noticed, that the env.GuiResource() function is only used once, for this very task.
So, for the time being, we can keep it simple and deditaced to that task, i.e
we pick up all CSS files we find and install it into a single target directory.

NOTE: this issue has brought to my attention two further, completely unrelated issues

 * Ticket #1192 (Lumiera hangs on failed GUI start)
 * The ProcDispatcher does an idle wait, due to an error in timed-wait implementation
2018-11-16 18:18:33 +01:00
7a9a378a4b workaround for bug in binutils > 2.23 (closes TICKET #965) 2015-08-16 01:16:20 +02:00
c14bb61e6a fix for resolution of transitive dependencies between "Lumiera modules"
This is a somewhat intricate problem. As long as we linked with --no-as-needed,
these problems could not manifest themselves, since all dependencies are spotted
correctly by SCons and thus added as direct children of the executable.

But when we switch to --as-needed linking, the linker will omit some of
the dependencies given from the build system, when the code to be linked
doesn't call directly into these dependencies. But of course dynamic modules
may depend on each other, and indeed, the Lumiera libs do so. Thus
the linker may omit the dependency to liblumierasupport, and just add
a dependency to, say liblumierabackend. But the backend in turn
depends on the support library.

Now the problem is, that when resolving several steps deep into such
a dependency chain, our special relative path resolution scheme fails.
The fix is to give each lumiera module itself another relative path
resolution spec, which overrides at that point the root spec given
for the executable. Thus, we define

- for the executable: "search at $ORIGIN/modules"
- for the modules:    "search at $ORIGIN/../modules"

This accounts for the fact, that a module, which is the Origin
for a transitive resolution step, already sits in a subdirectory
below the executable; thus step one level up and devle down into
the hard wired modules directory. Alternatively, we could also
use just "search at $ORIGIN" (i.e. in the same directory).
But assuming that in future we'll roll several core plugins,
which also count as "Lumiera modules", the scheme defined here
is more flexible, since it allows to place those core plugins
into sibling directories.
2014-10-01 00:21:47 +02:00
c7d6ab423f SCons: ability to define additional libraries in a flexible way 2013-11-03 00:06:59 +01:00
56ac1afe18 move Icon building down into separate SConscript 2012-01-11 07:05:01 +01:00
27db94a64c adjust code / indentation style
no functional change
2012-01-11 07:05:01 +01:00
4d466a2c2e reorganise the initial setup calls 2012-01-11 07:05:00 +01:00
117851a94a get rid of the additional scripts dir in pythonpath 2012-01-11 07:05:00 +01:00
08d330310f cleanup unnecessary builder function and flags in SCons build 2011-12-03 05:46:36 +01:00
aef929b3d9 better install the setup.ini direcly into $ORIGIN
seems to be the most obvious location to install it
2011-02-14 23:54:31 +01:00
80461c9b76 SCons: try to force installation of all generated icons
Not sure if this works; problem is that the icons
generated from SVG are just dumped into the target
folder, but we miss to generate the respective
installation targets
2011-02-07 11:35:44 +01:00
ff0ae1527a Fix build: the LUMIERA_PLUGIN didn't get through to the object compilation 2011-02-06 15:12:13 +01:00
d9f90c2c04 SCons: finish reworking buildsystem to rely on custom builders.
All target paths and install targets now defined automatically,
most of the buildscript just using plain sourcefile names
2011-01-30 22:12:55 +01:00
9cb03c7015 Fix installation triggered already by build target 2011-01-30 19:43:51 +01:00
daef6c7676 SCons: remove unnecessary indirections $SRCDIR, $MODULES, $ICONDIR etc
these don't create real flexibility and make definitions less readable
2011-01-30 19:20:02 +01:00
abf1bc776b SCons: remove all explicit target and install specifications
now superfluous, because our custom builder handles that automatically
2011-01-30 18:56:51 +01:00
609873d90b switch to use the new (better) builder implementation
especially this means to use the common well-known names again,
like "Program" "SharedLibrary". The customisation now happens
invisible in LumieraEnvironment.
2011-01-30 17:00:15 +01:00
ab481a80b8 better implementation of Lumiera custom SCons builders, wrapping the predefined builders 2011-01-30 16:47:03 +01:00
014c22b40a SCons: rework build directory configuration. All customisations to LuimieraEnvironment 2011-01-30 15:27:21 +01:00
9e56434c7e SCons: start concentrating all custom builders into LumieraEnvironment 2011-01-29 23:09:02 +01:00
bc22ec7faa Install: first preliminary working installation setup
the installed lumiera exe can even be started...
...well with a bit of cheating: you need to cd into the lib/lumiera
because the PLUGINPATH problem isn't solved yet
2011-01-29 16:45:22 +01:00
2bcc8d9ae3 SCons: build loadable modules immediately to the target destination 2011-01-29 02:33:13 +01:00
35953b335b SCons: rearrange output directory to target/modules 2011-01-29 02:06:21 +01:00
764a38abe6 SCons: experimental support for some library lookup concerns
- setting -rpath with $ORIGIN  to build a relocatable package
 - fix missing DT_SONAME (likely just a problem of very old SCons version)
2011-01-28 23:31:00 +01:00
d10380d124 SCons: dropping pre 1.0 compatibility
note: current SCons development is targetting 2.0,
current stable is 1.3, which is included in Squeeze
even Debian/Lenny includes 1.0.
2010-05-21 01:59:26 +02:00
Michael Ploujnikov
9f76cbf3e9 scons: propagate PKG_CONFIG_PATH when checking for library
fix pkg-config problem with on Fedora12, when nobug using a lib
installed in non-standard paths
2010-01-18 07:14:55 +01:00
34d0c6905e SCons: now require either a custom 'gdl-lum' or GDL >= 2.27.1 2009-04-20 01:58:34 +02:00
5ee6d375c0 SCons: fix the compatibility switch; the new code path should also be used for scons 0.97 2009-01-20 02:38:13 +01:00
Joel Holdsworth
6d8f598312 Fixed a bug when SCons.__version__ == "0.97.0d20071203" 2009-01-19 19:33:13 +00:00
0ece037f91 make build work again with SCons 0.96
Added a conditional switch to use the pre-0.98-fix only for the old SCons versions
2008-08-21 01:24:46 +02:00
944b7c4dd4 preliminary fix for the SCons build for Debian/testing
WARNING: breakes build on Debian/stable
Explanation: I tried to provide a backported implementtation of
features introduced with SCons 1.0 (until we can require SCons 1.0 officially)
Unfortionately, some internal APIs changed quite large in 0.97
Have to build in some conditional code, so it works with SCons 0.96 again)
2008-08-20 15:50:17 +01:00
878ce2319b integrated SVG Icon rendering into the SCons build 2008-08-19 05:03:29 +02:00
7a6b987a50 merge after integrating the GUI draft; now using multiple build environments and check via pkg-config 2008-07-11 05:35:48 +02:00