mirror of
https://github.com/Relintai/scons_gd.git
synced 2025-02-14 17:00:20 +01:00
190 lines
5.2 KiB
XML
190 lines
5.2 KiB
XML
<?xml version='1.0'?>
|
|
<!DOCTYPE sconsdoc [
|
|
<!ENTITY % scons SYSTEM "../scons.mod">
|
|
%scons;
|
|
]>
|
|
|
|
<chapter id="chap-preface"
|
|
xmlns="http://www.scons.org/dbxsd/v1.0"
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
|
|
<title>Preface</title>
|
|
|
|
<!--
|
|
|
|
__COPYRIGHT__
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining
|
|
a copy of this software and associated documentation files (the
|
|
"Software"), to deal in the Software without restriction, including
|
|
without limitation the rights to use, copy, modify, merge, publish,
|
|
distribute, sublicense, and/or sell copies of the Software, and to
|
|
permit persons to whom the Software is furnished to do so, subject to
|
|
the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included
|
|
in all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
|
|
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
|
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
-->
|
|
|
|
<para>
|
|
|
|
This document assumes that you already know how &SCons;
|
|
and that you want to learn how to work on the code.
|
|
|
|
</para>
|
|
|
|
<section>
|
|
<title>&SCons; Principles</title>
|
|
|
|
<para>
|
|
|
|
There are a few overriding principles
|
|
we try to live up to in designing and implementing &SCons;:
|
|
|
|
</para>
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>Correctness</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
|
|
First and foremost,
|
|
by default, &SCons; guarantees a correct build
|
|
even if it means sacrificing performance a little.
|
|
We strive to guarantee the build is correct
|
|
regardless of how the software being built is structured,
|
|
how it may have been written,
|
|
or how unusual the tools are that build it.
|
|
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>Performance</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
|
|
Given that the build is correct,
|
|
we try to make &SCons; build software
|
|
as quickly as possible.
|
|
In particular, wherever we may have needed to slow
|
|
down the default &SCons; behavior to guarantee a correct build,
|
|
we also try to make it easy to speed up &SCons;
|
|
through optimization options that let you trade off
|
|
guaranteed correctness in all end cases for
|
|
a speedier build in the usual cases.
|
|
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>Convenience</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
|
|
&SCons; tries to do as much for you out of the box as reasonable,
|
|
including detecting the right tools on your system
|
|
and using them correctly to build the software.
|
|
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
<para>
|
|
|
|
In a nutshell, we try hard to make &SCons; just
|
|
"do the right thing" and build software correctly,
|
|
with a minimum of hassles.
|
|
|
|
</para>
|
|
|
|
</section>
|
|
|
|
<section>
|
|
<title>Acknowledgements</title>
|
|
|
|
<para>
|
|
|
|
&SCons; would not exist without a lot of help
|
|
from a lot of people,
|
|
many of whom may not even be aware
|
|
that they helped or served as inspiration.
|
|
So in no particular order,
|
|
and at the risk of leaving out someone:
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
First and foremost,
|
|
&SCons; owes a tremendous debt to Bob Sidebotham,
|
|
the original author of the classic Perl-based &Cons; tool
|
|
which Bob first released to the world back around 1996.
|
|
Bob's work on Cons classic provided the underlying architecture
|
|
and model of specifying a build configuration
|
|
using a real scripting language.
|
|
My real-world experience working on Cons
|
|
informed many of the design decisions in SCons,
|
|
including the improved parallel build support,
|
|
making Builder objects easily definable by users,
|
|
and separating the build engine from the wrapping interface.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Greg Wilson was instrumental in getting
|
|
&SCons; started as a real project
|
|
when he initiated the Software Carpentry design
|
|
competition in February 2000.
|
|
Without that nudge,
|
|
marrying the advantages of the Cons classic
|
|
architecture with the readability of Python
|
|
might have just stayed no more than a nice idea.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Thanks to Peter Miller
|
|
for his splendid change management system, &Aegis;,
|
|
which has provided the &SCons; project
|
|
with a robust development methodology from day one,
|
|
and which showed me how you could
|
|
integrate incremental regression tests into
|
|
a practical development cycle
|
|
(years before eXtreme Programming arrived on the scene).
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
And last, thanks to Guido van Rossum
|
|
for his elegant scripting language,
|
|
which is the basis not only for the &SCons; implementation,
|
|
but for the interface itself.
|
|
|
|
</para>
|
|
|
|
</section>
|
|
|
|
</chapter>
|