Scons? http://www.scons.org/doc/production/HTML/scons-user.html
_______________________________________________
Python-ideas mailing list
Python...@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/
The subject line mentions "Part 2". Is there a link to "Part 1"? What is the rationale for changing?
Make, autoconf, and automake are already widely ported/portable.
What are the criteria for evaluating alternatives?
On Fri, Mar 13, 2015 at 12:40 PM, Ryan Gonzalez <rym...@gmail.com> wrote:That written in Python, so Python would require Python to build which would require Python to build which would require...
Well, you can't buid a C compiler without a C compiler either (or SOME compiler). And given that you should be able to do cross-compilation for platforms that don't currently have a python build, I'm not sure that's a killer.It it so wrong that python eats its own dog food in this manner?
---CHB
Christopher Barker, Ph.D.
Oceanographer
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris....@noaa.gov
On Mar 13, 2015 2:41 PM, "Ryan Gonzalez" <rym...@gmail.com> wrote:
>
> That written in Python, so Python would require Python to build which would require Python to build which would require...
>
> Besides, SCons sucks. If I were using a build system written in Python, I'd use fbuild or Waf.
Apparently, Waf started as a fork of SCons. [1][2]
[1] http://stackoverflow.com/questions/12569463/choosing-between-scons-and-waf-in-large-projects
[2] http://www.scons.org/wiki/SconsVsOtherBuildTools#Waf
I don't know anything about fbuild; others might.
A feature/alternative matrix could be helpful (in addition to a preliminary implementation) for making a cogent argument (in PEP form [3][4]). This is possible in RST with table or list-table syntax.
[3] https://www.python.org/dev/peps/pep-0001/#pep-formats-and-templates
[4] https://www.python.org/dev/peps/pep-0009/
On Mar 13, 2015 2:41 PM, "Ryan Gonzalez" <rym...@gmail.com> wrote:
>
> That written in Python, so Python would require Python to build which would require Python to build which would require...
>
> Besides, SCons sucks. If I were using a build system written in Python, I'd use fbuild or Waf.Apparently, Waf started as a fork of SCons. [1][2]
[1] http://stackoverflow.com/questions/12569463/choosing-between-scons-and-waf-in-large-projects
[2] http://www.scons.org/wiki/SconsVsOtherBuildTools#Waf
I don't know anything about fbuild; others might.
A feature/alternative matrix could be helpful (in addition to a preliminary implementation) for making a cogent argument (in PEP form [3][4]). This is possible in RST with table or list-table syntax.
[3] https://www.python.org/dev/peps/pep-0001/#pep-formats-and-templates
[4] https://www.python.org/dev/peps/pep-0009/
That written in Python, so Python would require Python to build which would require Python to build which would require...
On 14 Mar 2015 09:44, "Chris Barker" <chris....@noaa.gov> wrote:
>
> On Fri, Mar 13, 2015 at 12:40 PM, Ryan Gonzalez <rym...@gmail.com> wrote:
>>
>> That written in Python, so Python would require Python to build which would require Python to build which would require...
>
>
> Well, you can't buid a C compiler without a C compiler either (or SOME compiler). And given that you should be able to do cross-compilation for platforms that don't currently have a python build, I'm not sure that's a killer.
>
> It it so wrong that python eats its own dog food in this manner?
Wrong, no. harder yes. C compilers have mature cross compiler build chains including stage aware test suites and the like. When a tool is it's own build dependency bootstrapping it on a new platform gains a hard requirement on cross compiling rather than it being a thing for special cases like platforms that cannot compile the tool. This makes the life of distribution maintainers harder too, since cross arch platform bootstrapping becomes even more manual.
Rob
"Autotools has reached the Chandrasekhar mass limit of software and
become a black hole of suck that consumes endless hours of bright
peoples’ time without any good result. It is well past time for it to
die." (c) "Autotools must die", ESR. http://esr.ibiblio.org/?p=1877
I couldn't sum up this better. It looks even worse from Windows machine.
> What are the criteria for evaluating alternatives?
Python 3 support and beautiful output to console? =)
>> That written in Python, so Python would require Python to build which
>> would require Python to build which would require...
Will this affect the commands required to build Python from source, or
is all this just for actual development?
someone
who has little knowledge of Python's internals, and just wants to
build the latest version (either from hg or from a source tarball).
But in the second case, it'd be much safer to minimize the
requirements. If you can untar the source and just "./configure; make;
sudo make install" your way to having the latest Python, that's a LOT
easier than I've just been doing trying to get my Dad onto a newer
Mozilla Thunderbird. (I don't understand what it's doing all along
there, but it pulls a whole bunch of separate repositories when I say
update, and there's a separate bootstrap step, and ... I dunno.)
On Tue, Mar 17, 2015 at 3:27 AM, Chris Barker <chris....@noaa.gov> wrote:
>> someone
>> who has little knowledge of Python's internals, and just wants to
>> build the latest version (either from hg or from a source tarball).
>
>
> That's the assumption I'm following -- the user wants the latest version --
> so probably already has easy access to an older version with which to run
> the build tools...
The tricky part here is defining the oldest supported version. "To
build Python X.Y, you must already have Python ??? or later installed"
- how do you pick the minimum? The older that minimum, the more warped
the build code has to be (especially if you want to support 2.x as
well as 3.x - imagine trying to make it possible to use the system
Python on RHEL, as well as any 3.[1-4]), but go too far the other way
and you end up with a multi-step build process ("first build Python
3.4, then use that to build Python 3.7") which is just going to be a
pain.
>> But in the second case, it'd be much safer to minimize the
>> requirements. If you can untar the source and just "./configure; make;
>> sudo make install" your way to having the latest Python, that's a LOT
>> easier than I've just been doing trying to get my Dad onto a newer
>> Mozilla Thunderbird. (I don't understand what it's doing all along
>> there, but it pulls a whole bunch of separate repositories when I say
>> update, and there's a separate bootstrap step, and ... I dunno.)
>
>
> requiring _some_, not very recent, python is not exactly
>
> """a whole bunch of separate repositories when I say update, and there's a
> separate bootstrap step"""
>
> If there is an already build python (like OS-X, any general purpose linux
> distro, Windows if you don't mind point and clicking the python.org
> installer, etc, then it's not really a "bootstrap".
No, that's not what I'm talking about. I'm talking about trying to
build Thunderbird and having to do a bunch of steps where I run this
program, then run that, then let it chug its way through stuff, and
then eventually it'll start building. Without detailed knowledge of
the build internals I have no way of knowing what steps I can skip, so
every time I want to test the build again, I have to go through them
all. It took three parts of forever to figure out what was going on.
I much prefer projects that ship with the standard "./configure; make"
pattern. I don't care if the configure script is built by some arcane
incantation, as long as it's checked into source control (or at very
least is in the downloadable source tarball for any particular
version). If I want to build your program, I don't want to have to
hunt down your notes file, read it through in detail, and jump through
a dozen hoops; I just want to point my compiler at your source, and
then go make myself a hot chocolate while it does its work.
ChrisA
_______________________________________________
Python-ideas mailing list
Python...@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/
The tricky part here is defining the oldest supported version. "To
build Python X.Y, you must already have Python ??? or later installed"
- how do you pick the minimum? The older that minimum, the more warped
the build code has to be
> If there is an already build python (like OS-X, any general purpose linux
> distro, Windows if you don't mind point and clicking the python.org
> installer, etc, then it's not really a "bootstrap".
No, that's not what I'm talking about. I'm talking about trying to
build Thunderbird and having to do a bunch of steps where I run this
program, then run that, then let it chug its way through stuff, and
then eventually it'll start building.
---CHB
Christopher Barker, Ph.D.
Oceanographer
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris....@noaa.gov
_______________________________________________
Python-ideas mailing list
Python...@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________
Ryan Gonzalez <rymg19@...> writes:
> I hate most tools that ship with configure scripts because 70% of the time
some stupid test does some stupid thing wrong and gives the worst errors,
29% of the time the configure system doesn't pick up my options correctly,
and 1% of the time it actually *works*.
That's just not true. Also, the small build issue that triggered
this thread is already tracked here:
http://bugs.python.org/issue22625
It seems more productive to me to fix that rather than rewrite the
build system. Users don't have an unlimited tolerance for pointless
churn.
Stefan Krah
_______________________________________________
Python-ideas mailing list
Python...@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/
"Autotools has reached the Chandrasekhar mass limit of software and
become a black hole of suck that consumes endless hours of bright
peoples’ time without any good result. It is well past time for it to
die." (c) "Autotools must die", ESR. http://esr.ibiblio.org/?p=1877
I couldn't sum up this better. It looks even worse from Windows machine.
On 16/03/2015 19:24, Ryan Gonzalez wrote:
On Mon, Mar 16, 2015 at 1:33 PM, Stefan Krah
<ste...@bytereef.org
<mailto:ste...@bytereef.org>> wrote:
Ryan Gonzalez <rymg19@...> writes:
> I hate most tools that ship with configure scripts because 70% of the time
some stupid test does some stupid thing wrong and gives the worst
errors,
29% of the time the configure system doesn't pick up my options
correctly,
and 1% of the time it actually *works*.
That's just not true. Also, the small build issue that triggered
this thread is already tracked here:
http://bugs.python.org/issue22625
You've evidently had better luck than I usually have.
Luck doesn't enter in to it. More likely a bad workan always blames his tools?
It seems more productive to me to fix that rather than rewrite the
build system. Users don't have an unlimited tolerance for pointless
churn.
Lots and lots of projects have moved from autotools to about everything
else.
It's slow, annoying, and generates huge files (the 5k-line configure.ac
<http://configure.ac> generates a 17k-line configure script). And
largely pointless, since nowadays few like it anymore.
Perhaps everybody should move to MSVC, that way at least everything would be consistent :)
--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.
Mark Lawrence
_______________________________________________
Python-ideas mailing list
Python...@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/
On Mon, Mar 16, 2015 at 6:24 AM, anatoly techtonik <tech...@gmail.com> wrote:"Autotools has reached the Chandrasekhar mass limit of software and
become a black hole of suck that consumes endless hours of bright
peoples’ time without any good result. It is well past time for it to
die." (c) "Autotools must die", ESR. http://esr.ibiblio.org/?p=1877
I couldn't sum up this better. It looks even worse from Windows machine.Is it even used for building Python on Windows (for the "normal" python.org builds)?
But to miss-paraphrase Winston Churchill [1]:"Autotools is the worst build system except for all the others."Is there really something better out there?
[1] http://www.goodreads.com/quotes/267224-democracy-is-the-worst-form-of-government-except-for-all-CHB--
Christopher Barker, Ph.D.
Oceanographer
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris....@noaa.gov
_______________________________________________
Python-ideas mailing list
Python...@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/
it would be a monumental undertaking to try to migrate the current
build system to something substantially different. It's fine to let off
steam about frustrations with build systems but talking about it here is
not gonna cause it to change. And it won't change unless someone (or,
more likely, some big company) is willing to invest an enormous effort
in people time and machine resources to do so. Stefan's suggestion is
much more practical.
Most due let you do that easily. For instance, fbuild lets you just trap the raised error and move on.
On Mon, Mar 16, 2015 at 3:45 PM, Ned Deily
This doesn't seem to me to be a winner takes all proposition -- there is
no reason someone couldn't set up a new build system for Python, get it
all working nicely on their platform(s) of choice, persuade others how
wonderful it is, get contributions, etc.
This sounds really simple to me so when do you start work on it?
Ryan Gonzalez writes:
> I have used fbuild a LOT
Actually, I suspect that in the relevant sense, you haven't used it a
lot. Have you used it for a single program on
1. more than 3 CPUs, AND
2. on each CPU, more than one (and preferably more than two) OSes, AND
3. for each CPU-OS combination, more than two different configurations
of the program being built, AND
4. for each CPU-OS-configuration combination, at least 3 versions of
the program source (preferably spanning a major version bump)?
The number of programs/versions you have built on a single (or small
selection of) CPU-OS combinations is irrelevant to the discussion.
The problem autotools helps to solve better than any other system I
know of is bootstrapping on a new system. It's also quite good at
handling foibles (== regressions) across version bumps of the source
program.
I agree it's suboptimal (at best :-) to have a PyPI module that
depends on the autotools. I've found it to be a real PITA for Windows
users who want to develop certain Emacs Lisp applications, for
example, which is a similar kind of development environment to Python.
But for bootstrapping Python itself, what else is there, really?
Every time I've seen a project move to something like SCons, I've also
seen their port rate to new platforms decrease dramatically. (Hard to
interpret that trend, though -- if a project has the free cycles to
change build systems, maybe they have ported to almost all of the
plausible platforms already.) Autotools alternatives just have way
fewer modules for dealing with new and/or old ;-) platforms.
Bright! Shiny! New! system use crufty old system :-(
+ => +
missing library :-( library
Caveat: Autotools is the only build system (well, Imake -- now you
know how old I am!) I have substantial experience with. But I've
heard stories from colleagues about the limitations of Scons and
cmake in this respect, and I find it hard to believe that there are
systems out there with the accumulated knowledge of platforms that has
been assembled in Autotools over the decades.
On Mar 16, 2015, at 12:19 PM, Ryan Gonzalez <rym...@gmail.com> wrote:Most due let you do that easily. For instance, fbuild lets you just trap the raised error and move on.How does trapping an error and moving on give you a user-configurable option to select which OpenSSL to use, whether he wants a fat i386/x86_64 build or just x86_64, whether he wants a framework bundle or a traditional layout...? (These are the first three flags that Homebrew passes to Python's configure aside from the install prefix, which I'd hope everything can handle.)
There was some success with MinGW toolchain, but I am not tracking if it was
integrated into official source. The FUD was that compiled extensions are not
compatible between MSVC builds and MinGW builds, but I could not confirm
that. If I understand correctly, the incompatibility is only for C++ programs,
because of strange SEH strategy and proprietary name mangling.
> But to miss-paraphrase Winston Churchill [1]:
>
> "Autotools is the worst build system except for all the others."
>
> Is there really something better out there?
A lot of attempts are made, but reviewing them requires a lot of
time and effort.
On Mon, Mar 16, 2015 at 11:33 PM, Ryan Gonzalez <rym...@gmail.com> wrote:
>>
>> But to miss-paraphrase Winston Churchill [1]:
>>
>> "Autotools is the worst build system except for all the others."
>>
>> Is there really something better out there?
>>
>
> Fbuild, Waf, Meson, GN, Boost.Build, Tundra, Bam, ...
Is there anything Javascriptey? Python needs to move to web. I heard
something about Grunt, which was replaced by Gulp, but no idea if they
really mature enough to include "system features detection" and "user
configured builds" (or work with C/C++ compilers at all).
On Tue, Mar 17, 2015 at 8:01 PM, Ryan Gonzalez <rym...@gmail.com> wrote:
> On Mon, Mar 16, 2015 at 9:27 PM, Stephen J. Turnbull <ste...@xemacs.org>
> wrote:
>>
>> Ryan Gonzalez writes:
>>
>> > I have used fbuild a LOT
>>
>> Actually, I suspect that in the relevant sense, you haven't used it a
>> lot. Have you used it for a single program on
>>
>> 1. more than 3 CPUs, AND
>> 2. on each CPU, more than one (and preferably more than two) OSes, AND
>> 3. for each CPU-OS combination, more than two different configurations
>> of the program being built, AND
>> 4. for each CPU-OS-configuration combination, at least 3 versions of
>> the program source (preferably spanning a major version bump)?
>>
>
> No...but I know that Felix uses it for iPhone, OSX, Linux, ... with
> separation of host and target and multiple configurations.
What or who is Felix?
> This is also SCons. Everybody loved it until they had to maintain it. :)
I know a blind girl, who made a voice synthesizer, which works on
Windows, Linux and Android, and she used SCons to build it. That
gave me another reason to stick with this build system and try to
enhance it.
> SCons is very annoying. CMake is weird and only really useful for those
> huge, 20,000 file C++ projects.
For me the advantage of SCons is that I already know its codebase.
There a lot of room for improvement if you can tag yourself as a Python
hacker it addition to inherent potential user property.
In any, I'd appreciate the feedback on most annoying SCons feature,
because it will give a criteria for comparing it with others and for future
development.
--
anatoly t.
On Mar 18, 2015 8:14 AM, "anatoly techtonik" <tech...@gmail.com> wrote:
>
> On Mon, Mar 16, 2015 at 7:31 PM, Chris Barker <chris....@noaa.gov> wrote:
> > On Mon, Mar 16, 2015 at 6:24 AM, anatoly techtonik <tech...@gmail.com>
> > wrote:
> >>
> >> "Autotools has reached the Chandrasekhar mass limit of software and
> >> become a black hole of suck that consumes endless hours of bright
> >> peoples’ time without any good result. It is well past time for it to
> >> die." (c) "Autotools must die", ESR. http://esr.ibiblio.org/?p=1877
> >>
> >> I couldn't sum up this better. It looks even worse from Windows machine.
> >
> > Is it even used for building Python on Windows (for the "normal" python.org
> > builds)?
>
> There was some success with MinGW toolchain, but I am not tracking if it was
> integrated into official source. The FUD was that compiled extensions are not
> compatible between MSVC builds and MinGW builds, but I could not confirm
> that. If I understand correctly, the incompatibility is only for C++ programs,
> because of strange SEH strategy and proprietary name mangling.
This isn't FUD, alas. mingw in almost all of its variants uses effectively a different "libc" than MSVC, so code compiled with two compilers can't even agree on the meaning of file numbers. It is mostly possible to set up a mingw-w64 build that produces MSVC-compatible extensions, but it requires using a configuration that's undocumented and untested upstream (I.e. you will run into mingw bugs). NumPy *may* switch to this at some point -- we've been working on it for like a year now -- but it's extremely non-trivial.
-n
On Mar 19, 2015, at 4:12 AM, anatoly techtonik <tech...@gmail.com> wrote:
>
>> On Wed, Mar 18, 2015 at 6:21 PM, Florian Bruhin <m...@the-compiler.org> wrote:
>> * anatoly techtonik <tech...@gmail.com> [2015-03-18 10:21:46 +0300]:
>>> On Mon, Mar 16, 2015 at 11:33 PM, Ryan Gonzalez <rym...@gmail.com> wrote:
>>>>>
>>>>> But to miss-paraphrase Winston Churchill [1]:
>>>>>
>>>>> "Autotools is the worst build system except for all the others."
>>>>>
>>>>> Is there really something better out there?
>>>>
>>>> Fbuild, Waf, Meson, GN, Boost.Build, Tundra, Bam, ...
>>>
>>> Is there anything Javascriptey? Python needs to move to web. I heard
>>> something about Grunt, which was replaced by Gulp, but no idea if they
>>> really mature enough to include "system features detection" and "user
>>> configured builds" (or work with C/C++ compilers at all).
>>
>> What does "Python needs to move to web" to do with it's build system
>> being "Javascriptey"?
>
> Because things like Twisted are de-facto standard in JavaScript world
> (Node.js), and Python will benefit more if people look for how things are
> implemented in non-C worlds.
Is this a sarcastic comment?
Or are you seriously suggesting that because people use things like the stdlib's asyncio, gevent, Tornado, etc. in Python, which have different paradigms than Twisted, the one Node copied, we need to force some other part of Python to be more like Node in some other way, because "move to the web" means "be more like the latest (but nowhere near most popular) framework for building web services"?
Also, correct me if I'm wrong, but isn't Node implemented in C, with a build system in C and Python? So if we really want to be more like Node for some reason, we should make the build system Pythony instead of Javascripty?
_______________________________________________
Python-ideas mailing list
Python...@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/