[Scons-dev] SCons performance investigations

Jason Kenny dragon512 at live.com
Thu Jul 27 16:04:21 EDT 2017


>>* Revamp platform/toolchain - Right now it's left to the user to implement logic to say, if I have these 3 tools, then use all of them, otherwise use these tools.  Think mingw vs msvc on win32 for example

I have something for this in Parts. It could be improved on however.


>>* Add support for components - For example a library can specify what include paths, defines, libraries, compiler flags would be used by programs (or components) which use itself.  Parts provides some of this I beleive.  I would want this as an available API, but not mandatory to use SCons

I agree. I do think I have something here. It is very useful. My view is that this should be an optional thing.

* Handle pulling components from repos.. cmake,gradle, etc can do this, I think it's pretty darn useful especially where you may have a project with many repos and you focus on just one.

I think there are two ways to view this.


  1.  I have in Parts VCS objects that allow checking out “components” form different locations. Given they use Parts it is easy to build the code. However the reality of this is that the code is using a different build system. One item I always had to do in Parts was to make a “part(…)” call have some notion of a build type. So I could checkout some component and call the build system they used to get the code to build. I had viewed this as a library feature in which one could define a repo of wrapper parts that would allow a user to get the code, or maybe some package to build against based on the system and target you are building for.
  2.  Use some other system to do this. Conan seems to be the best option from what I have seen as they have most of this already working. It would be about integrating with the system better. They are big SCons fans, so I see it as win-win.

Autoconf… I am trying to improve my imple of the Settings object in Parts ( based on Greg Noels IAPAT notes). I am currently busy with other items, but have been trying to make progress at porting Apache Trafficserver to use SCons and Parts. Given this code uses the configure logic heavily, it is a great test case. I am trying to see if there is a better way we can define this logic in the Parts Setting object to do the configure stuff without the “coding” issues that can cause slow down or utter maintainer nightmares or updating it or understanding it.

Jason

From: Scons-dev [mailto:scons-dev-bounces at scons.org] On Behalf Of Bill Deegan
Sent: Thursday, July 27, 2017 10:57 AM
To: SCons developer list <scons-dev at scons.org>
Subject: Re: [Scons-dev] SCons performance investigations

Russel,
You're forgetting (I think) that SCons does implement (some) of AutoConf/AutoMake's functionality.  Could it be better/more complete? Of course. Is it usable (and used)? very much so.
Here's how I see the next two releases:
3.0 - PY2/3 compat, VS 2017, some minor performance improvements.
Post 3.0 - Migrate to GitHub
3.1 - Focus on performance. I think (per the email/wiki page), there's lots of opportunities to speed up SCons, without losing it's SCons'ness..  (If we swap out sconsign implementations we will need to have the version string be 4.0 as we're breaking compatibility)
Of course everything depends on how much time/effort the community (and myself) are able to provide towards improving SCons.
Things I'd really like to see happen in the not too distant future:
* Revamp platform/toolchain - Right now it's left to the user to implement logic to say, if I have these 3 tools, then use all of them, otherwise use these tools.  Think mingw vs msvc on win32 for example
* Add support for components - For example a library can specify what include paths, defines, libraries, compiler flags would be used by programs (or components) which use itself.  Parts provides some of this I beleive.  I would want this as an available API, but not mandatory to use SCons
* Handle pulling components from repos.. cmake,gradle, etc can do this, I think it's pretty darn useful especially where you may have a project with many repos and you focus on just one.
* Taskmaster improvements (see the need for speed wiki page, and also comments by Jason about Greg Noel's TaskmasterNG which Greg (who's long since left the project worked on, but never contributed, or shared sources with anyone).
Most of these bullets are in the nice to have.
I think improving performance is in the must have as it's the top complaint I hear about SCons.
-Bill

On Thu, Jul 27, 2017 at 4:22 AM, Russel Winder <russel at winder.org.uk<mailto:russel at winder.org.uk>> wrote:
On Tue, 2017-07-25 at 20:07 +0000, Jason Kenny wrote:
> > >
[…]
> Scons, make, ninja, msbuild are items to compare. The idea of comparing
> CMake, Meson or autotools to SCons in incorrect. There is a big difference
> in a "generator" and a build system and a build manager (ie stuff like
> buildbot). I keep hearing how CMake is taking off and everyone is moving to
> it.... which is really saying it is better cross platform build file
> generator than automake.

SCons slightly bridges the gap between Make, Ninja, Tup on the one hand and
CMake and Meson on the other – I have no experience of all the Windows stuff.

Certainly CMake, and Meson, are getting increased traction in the native build
space, though Autotools and Make have a huge "install base". There is also
Bazel, Gradle, a whole host of build systems. I notice an increasing number of
people complaining about the CMake specification language. Meson implements a
DSL on Python rather than using Python which is sometimes annoying – but you
can hack and execute code if need be.

SCons is caught in the middle a bit having started purely as a Make
replacement and not keeping up with Ninja and Tup in build performance and not
keeping up with Autotools, Meson, Reggae, and CMake of being meta build
systems. We should also not ignore all the language specific package handling
and build systems such as Cargo, Dub, and Gradle.

I guess the core question is "Where is SCons going?"

Currently for me SCons is the tool for the cases where there isn't another. So
for the moment I use SCons always for XeLaTeX builds and sometimes for D
builds, otherwise I am no longer using SCons because there is now a better or
more appropriate tool for each code base.

One of the biggest hurdles is CLion requiring CMake for C++ projects.

Another issue is of course the inertia behind people sticking with Make and
Autotools.

[…]

--
Russel.
=============================================================================
Dr Russel Winder      t: +44 20 7585 2200<tel:%2B44%2020%207585%202200>   voip: sip:russel.winder at ekiga.net<mailto:sip%3Arussel.winder at ekiga.net>
41 Buckmaster Road    m: +44 7770 465 077<tel:%2B44%207770%20465%20077>   xmpp: russel at winder.org.uk<mailto:russel at winder.org.uk>
London SW11 1EN, UK   w: www.russel.org.uk<http://www.russel.org.uk>  skype: russel_winder
_______________________________________________
Scons-dev mailing list
Scons-dev at scons.org<mailto:Scons-dev at scons.org>
https://pairlist2.pair.net/mailman/listinfo/scons-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist2.pair.net/pipermail/scons-dev/attachments/20170727/879ff8dd/attachment-0001.html>


More information about the Scons-dev mailing list