Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Russel Winder
On Fri, 2014-08-08 at 19:07 +0200, Dirk Bächle wrote:
 Hi there,
 
 we have another user reporting trouble with SCons 2.3.2, in connection 
 to the D tool...so it's time for us to act. I checked the sources, and 
 the user's analysis appears to be partly correct: even when no D tool is 
 present in the current system, the dmd tool gets loaded (meaning 
 SCons.Tool.dmd.generate is executed).

That should not be the case, and wasn't for the tests I made. However I
only tested on Linux and OSX and this user is using Windows, a platform
I cannot test on and no-one else bothered to.

 In general, the D tools use their own set of variables starting with 
 D* (or _D*) so they shouldn't create much of a problem. But the D 
 tools also set STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME to 0, 
 independent of any setting that a tool like msvs.py made before. :(

The idea was to keep the D tool names separate, except for where
smart_link is involved. The issue here is that D stands in the same
relationship to C and C++ and D. So what is good for Fortran is good for
D and vice versa, there should be symmetry. 

 I'm open for a discussion and would like to hear other ideas. My way to 
 fix this would be:
 
 - D tools shouldn't be loaded by default, but get an optional tool ( - 
 tools=['default', 'dmd'] is mandatory). It's not enough to say Let's 
 try to detect them, and load them automatically., as long as the 
 STATIC_SHARED flag gets set to a fixed value. An option would be to 
 use env.Default() to set this flag, but I don't know if D can then cope 
 with a possible setting of 1 (Russel?).

Then the Fortran tools shouldn't either. 

Of course why should any tool be loaded by default?

 - Docs should get amended, to warn the user about the overwrite of the 
 STATIC_AND_SHARED flag.

Or better still find a way of the bug not happening.

 - Then push out a new patch release as soon as possible.

Definitely.

So what is needed is a volunteer who used C and C++ on Windows who has
two machines one with D installed and one without, who can run the
tests from a feature clone SCons repository.

I am away from home for 2.5 weeks so have no access to OSX.

-- 
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


signature.asc
Description: This is a digitally signed message part
___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Russel Winder
On Sat, 2014-08-09 at 01:12 +0300, anatoly techtonik wrote:
[…]
 There is an explicit check on dmd binary. What is dmd binary then?
 https://bitbucket.org/scons/scons/commits/b757fe34f9fe#Lsrc/engine/SCons/Tool/dmd.pyF233T135

DMD is one of the three D compilers, the one that is actually the
mainline one. GDC is D in the GCC system, LDC is D on LLVM.

  In general, the D tools use their own set of variables starting with D*
  (or _D*) so they shouldn't create much of a problem. But the D tools also
  set STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME to 0, independent of any
  setting that a tool like msvs.py made before. :(
 
 Why D uses global keyword that is reserved for C stuff?

Either because it was necessary or because I made an error. If an error
(likely I suspect) we should find the right solution and put it in
place.

  I'm open for a discussion and would like to hear other ideas. My way to fix
  this would be:
 
  - D tools shouldn't be loaded by default, but get an optional tool ( -
  tools=['default', 'dmd'] is mandatory). It's not enough to say Let's try to
  detect them, and load them automatically., as long as the STATIC_SHARED
  flag gets set to a fixed value. An option would be to use env.Default() to
  set this flag, but I don't know if D can then cope with a possible setting
  of 1 (Russel?).
 
 +1 on disabling it by default for the performance reasons listed here
 https://bitbucket.org/scons/scons/commits/b757fe34f9fe#chg-src/engine/SCons/Tool/__init__.py

Which is an argument for getting rid of Fortran, C++ and C, and also
LaTeX, actually all the tools, from begin loaded by default.

  - Docs should get amended, to warn the user about the overwrite of the
  STATIC_AND_SHARED flag.
  - Then push out a new patch release as soon as possible.
 
 The problems are caused by this commit:
 https://bitbucket.org/scons/scons/commits/b757fe34f9fe
 which is huge (which is bad), which is also a source of this bug

As we know Gary and I are Git people who like transient feature branches
that can be packaged for merge and are not Mercurial experts. The D
changes extended over a very long period in a Mercurial feature fork
with me keeping the fork up to date with the mainline. On merge
Mercurial was unable to cope with this, creating zillions of spurious
crap. Really we do not have a good workflow and that is at the heart of
the big commit. I just made a single commit of all the D changes from
over a two year period because it was the only way to not have a huge
internal Mercurial mess.

If there is a workflow that works with Mercurial for SCons then we need
education and a document explaining what to do.

 http://scons.tigris.org/issues/show_bug.cgi?id=2966

I think this and the current problem may be related since the word def
appears in both problems.

 in which Gary accepts that the commit is large, but since he is the one
 who merged it, I guess it didn't pass proper review
 https://bitbucket.org/scons/scons/commits/40fa954282a3893b809eb4782efe231a95ded10f
 and the worse part that was already reverted once
 https://bitbucket.org/scons/scons/commits/8764000345e06e326ef68fd0acf9366c1f3eb885
 which raises a question about our review process and debt
 of competence.

I feel quite competent actually. Most of the blame for this can be laid
squarely at the door of Mercurial not being a good fit for managing the
SCons repository with the people and tools we have.

If on the other hand people think Gary and I acted improperly, then
there is always pistols at dawn?

 I made a quick review too, and noticed a new default tool, but the fact
 that D tool became new default tool that *changes default behavior* is
 something that I didn't think might happen. But what it is not reflected
 in CHANGES.txt I think is a major ommision.

It doesn't change the default behaviour, or at least shouldn't. What is
being changed that you notice?

 Now a big thing. CHANGES.txt explicitly says  Tools for DMD, GDC
 and LDC provided and integrated with the C and C++ linking. That should
 say something for people who now C/C++ (i.e. not to me). Looking at pull
 request,  I don't see tests that cover this integration on C and C++ side.
 The tests need to be updated in any case.

This is a very sensible suggestion and one well worth following up. Feel
free to create some and do pull requests or send me suggestions and I
will do some. I will see what I can do, but it will be a couple of weeks
tie yet.

 About solving regressions with documentation - I am not a C/C++ coder,
 but I am not a fan of dealing with things this way.

Nor am I. This is not a regression, but the bugs need to be fixed.

As noted elsewhere the bugs come from Windows people not Linux or OSX
people highlighting that no-on bothered to test 2.3.2 on Windows before
it was released. I cannot since I don't have Windows, something I
repeatedly brought to people's notice about this long ago.

-- 
Russel.

Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Gary Oberbrunner
I'll be home in a few days. I have plenty of Windows machines and can do
the required tests. As for not noticing that that change broke Windows def
files, I should have checked that. (There was a new failure in the Windows
buildbot but I didn't notice it.) As for the large change, Russel has it
right. Git would have made that much simpler. And Anatoly, please be nice.
We're all volunteers here, trying to do a good job with limited time
available.

-- 
Gary Oberbrunner
(sent from my Android)
On Aug 9, 2014 2:23 PM, Russel Winder rus...@winder.org.uk wrote:

 On Sat, 2014-08-09 at 01:12 +0300, anatoly techtonik wrote:
 […]
  There is an explicit check on dmd binary. What is dmd binary then?
 
 https://bitbucket.org/scons/scons/commits/b757fe34f9fe#Lsrc/engine/SCons/Tool/dmd.pyF233T135

 DMD is one of the three D compilers, the one that is actually the
 mainline one. GDC is D in the GCC system, LDC is D on LLVM.

   In general, the D tools use their own set of variables starting with
 D*
   (or _D*) so they shouldn't create much of a problem. But the D tools
 also
   set STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME to 0, independent of any
   setting that a tool like msvs.py made before. :(
 
  Why D uses global keyword that is reserved for C stuff?

 Either because it was necessary or because I made an error. If an error
 (likely I suspect) we should find the right solution and put it in
 place.

   I'm open for a discussion and would like to hear other ideas. My way
 to fix
   this would be:
  
   - D tools shouldn't be loaded by default, but get an optional tool ( -
   tools=['default', 'dmd'] is mandatory). It's not enough to say Let's
 try to
   detect them, and load them automatically., as long as the
 STATIC_SHARED
   flag gets set to a fixed value. An option would be to use
 env.Default() to
   set this flag, but I don't know if D can then cope with a possible
 setting
   of 1 (Russel?).
 
  +1 on disabling it by default for the performance reasons listed here
 
 https://bitbucket.org/scons/scons/commits/b757fe34f9fe#chg-src/engine/SCons/Tool/__init__.py

 Which is an argument for getting rid of Fortran, C++ and C, and also
 LaTeX, actually all the tools, from begin loaded by default.

   - Docs should get amended, to warn the user about the overwrite of the
   STATIC_AND_SHARED flag.
   - Then push out a new patch release as soon as possible.
 
  The problems are caused by this commit:
  https://bitbucket.org/scons/scons/commits/b757fe34f9fe
  which is huge (which is bad), which is also a source of this bug

 As we know Gary and I are Git people who like transient feature branches
 that can be packaged for merge and are not Mercurial experts. The D
 changes extended over a very long period in a Mercurial feature fork
 with me keeping the fork up to date with the mainline. On merge
 Mercurial was unable to cope with this, creating zillions of spurious
 crap. Really we do not have a good workflow and that is at the heart of
 the big commit. I just made a single commit of all the D changes from
 over a two year period because it was the only way to not have a huge
 internal Mercurial mess.

 If there is a workflow that works with Mercurial for SCons then we need
 education and a document explaining what to do.

  http://scons.tigris.org/issues/show_bug.cgi?id=2966

 I think this and the current problem may be related since the word def
 appears in both problems.

  in which Gary accepts that the commit is large, but since he is the one
  who merged it, I guess it didn't pass proper review
 
 https://bitbucket.org/scons/scons/commits/40fa954282a3893b809eb4782efe231a95ded10f
  and the worse part that was already reverted once
 
 https://bitbucket.org/scons/scons/commits/8764000345e06e326ef68fd0acf9366c1f3eb885
  which raises a question about our review process and debt
  of competence.

 I feel quite competent actually. Most of the blame for this can be laid
 squarely at the door of Mercurial not being a good fit for managing the
 SCons repository with the people and tools we have.

 If on the other hand people think Gary and I acted improperly, then
 there is always pistols at dawn?

  I made a quick review too, and noticed a new default tool, but the fact
  that D tool became new default tool that *changes default behavior* is
  something that I didn't think might happen. But what it is not reflected
  in CHANGES.txt I think is a major ommision.

 It doesn't change the default behaviour, or at least shouldn't. What is
 being changed that you notice?

  Now a big thing. CHANGES.txt explicitly says  Tools for DMD, GDC
  and LDC provided and integrated with the C and C++ linking. That should
  say something for people who now C/C++ (i.e. not to me). Looking at pull
  request,  I don't see tests that cover this integration on C and C++
 side.
  The tests need to be updated in any case.

 This is a very sensible suggestion and one well worth following up. Feel
 free to create some and do pull requests or send me 

Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Dirk Bächle

Hi Russel,

thanks for the quick reply.

On 09.08.2014 14:02, Russel Winder wrote:

On Fri, 2014-08-08 at 19:07 +0200, Dirk Bächle wrote:

Hi there,

we have another user reporting trouble with SCons 2.3.2, in connection
to the D tool...so it's time for us to act. I checked the sources, and
the user's analysis appears to be partly correct: even when no D tool is
present in the current system, the dmd tool gets loaded (meaning
SCons.Tool.dmd.generate is executed).

That should not be the case, and wasn't for the tests I made. However I
only tested on Linux and OSX and this user is using Windows, a platform
I cannot test on and no-one else bothered to.


Can you do the following test please:

- In the D tools of your local installation, change the names of the 
executables that get detected...such that they can't possibly be found 
in the system (in exists() rename dmd - foodmd, ...).

- Then create a simple SConstruct:

  env = Environment()
  print env.Dump()

- Run through SCons, and observe that the Environment has D variables (= 
dmd.py Tool got loaded anyway)



This happens, because the line

 d_compiler = FindTool(d_compilers, env) or d_compilers[0]

adds dmd to the tool list anyway. In the default Tool's generate() 
method, the returned list is simply loaded without checking the 
existence of tools again.



It is okay, and wanted, for as many Tools to get loaded by default...as 
long as their variables don't clash. The STATIC_AND_SHARED variable is 
only set by:


- C/C++ compilers (where only the first match gets selected, based on 
the current platform) and
- masm (only under Windows, where it sets the same value as a Windows 
C/C++ compiler - no clash)


Only the D tools are forcing it back to 0, and this is not compatible 
with the setting that the msvc and mingw Tool make. This is the main 
culprit, and we either have to remove the explicit setting of 
STATIC_AND_SHARED from the D tools (relying on the C/C++ tools to do 
the right thing, or, if they really need the setting under Windows, we 
have to remove the D tools from the default toolchain.


So, is STATIC_AND_SHARED=0 *required* for the D tools to work properly 
under Windows?


Best regards,

Dirk

___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Dirk Bächle

On 09.08.2014 15:18, Gary Oberbrunner wrote:


I'll be home in a few days. I have plenty of Windows machines and can 
do the required tests. As for not noticing that that change broke 
Windows def files, I should have checked that. (There was a new 
failure in the Windows buildbot but I didn't notice it.) As for the 
large change, Russel has it right. Git would have made that much 
simpler. And Anatoly, please be nice. We're all volunteers here, 
trying to do a good job with limited time available.



Yep, I second that. Things like these just happen sometimes, so we can 
only try to be professional about it and get the issue out of the way 
asap. I also screwed up badly several times when trying to revamp the 
doc toolchain, so, Russel, please don't feel offended. You did a great 
job on the D integration, it's just this tiny issue that's left...so 
let's work things out.


Dirk

___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread William Blevins

 As we know Gary and I are Git people who like transient feature branches
 that can be packaged for merge and are not Mercurial experts. The D
 changes extended over a very long period in a Mercurial feature fork
 with me keeping the fork up to date with the mainline. On merge
 Mercurial was unable to cope with this, creating zillions of spurious
 crap. Really we do not have a good workflow and that is at the heart of
 the big commit. I just made a single commit of all the D changes from
 over a two year period because it was the only way to not have a huge
 internal Mercurial mess.


+1, I'm new, so my voice counts less, but my past experiences with revision
management tools is that GIT  Mercurial in every way;  Mercurial is more
like distributed CVS (and CVS was a lifetime/nightmare ago).

I could make a long rant here, but my primary point is that maybe a motion
should be made for moving SCons to GIT?  We could at least take a vote and
see if anyone is adamantly opposed.  I'm against using a hammer to do the
job of a screwdriver.

The problems are caused by this commit:
 https://bitbucket.org/scons/scons/commits/b757fe34f9fe
 which is huge (which is bad), which is also a source of this bug
 http://scons.tigris.org/issues/show_bug.cgi?id=2966
 in which Gary accepts that the commit is large, but since he is the one
 who merged it, I guess it didn't pass proper review

 https://bitbucket.org/scons/scons/commits/40fa954282a3893b809eb4782efe231a95ded10f
 and the worse part that was already reverted once

 https://bitbucket.org/scons/scons/commits/8764000345e06e326ef68fd0acf9366c1f3eb885
 which raises a question about our review process and debt
 of competence.


Not too long ago, we had a 30+ email chain for a small 20-line patch, which
you basically through a tantrum over.  Ironically, it was reviewed for
nearly two weeks and you hadn't bothered to care until it was merged.  You
jumped to conclusions and that mail chain turned out to be a weeks worth of
effort just explaining that you were confused about what the patch was
doing!  I tried to be professional about it even though you were being
pretty venomous.

If you want to help, then help, but your comments are unwarranted.

-William


On Sat, Aug 9, 2014 at 8:23 AM, Russel Winder rus...@winder.org.uk wrote:

 On Sat, 2014-08-09 at 01:12 +0300, anatoly techtonik wrote:
 […]
  There is an explicit check on dmd binary. What is dmd binary then?
 
 https://bitbucket.org/scons/scons/commits/b757fe34f9fe#Lsrc/engine/SCons/Tool/dmd.pyF233T135

 DMD is one of the three D compilers, the one that is actually the
 mainline one. GDC is D in the GCC system, LDC is D on LLVM.

   In general, the D tools use their own set of variables starting with
 D*
   (or _D*) so they shouldn't create much of a problem. But the D tools
 also
   set STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME to 0, independent of any
   setting that a tool like msvs.py made before. :(
 
  Why D uses global keyword that is reserved for C stuff?

 Either because it was necessary or because I made an error. If an error
 (likely I suspect) we should find the right solution and put it in
 place.

   I'm open for a discussion and would like to hear other ideas. My way
 to fix
   this would be:
  
   - D tools shouldn't be loaded by default, but get an optional tool ( -
   tools=['default', 'dmd'] is mandatory). It's not enough to say Let's
 try to
   detect them, and load them automatically., as long as the
 STATIC_SHARED
   flag gets set to a fixed value. An option would be to use
 env.Default() to
   set this flag, but I don't know if D can then cope with a possible
 setting
   of 1 (Russel?).
 
  +1 on disabling it by default for the performance reasons listed here
 
 https://bitbucket.org/scons/scons/commits/b757fe34f9fe#chg-src/engine/SCons/Tool/__init__.py

 Which is an argument for getting rid of Fortran, C++ and C, and also
 LaTeX, actually all the tools, from begin loaded by default.

   - Docs should get amended, to warn the user about the overwrite of the
   STATIC_AND_SHARED flag.
   - Then push out a new patch release as soon as possible.
 
  The problems are caused by this commit:
  https://bitbucket.org/scons/scons/commits/b757fe34f9fe
  which is huge (which is bad), which is also a source of this bug

 As we know Gary and I are Git people who like transient feature branches
 that can be packaged for merge and are not Mercurial experts. The D
 changes extended over a very long period in a Mercurial feature fork
 with me keeping the fork up to date with the mainline. On merge
 Mercurial was unable to cope with this, creating zillions of spurious
 crap. Really we do not have a good workflow and that is at the heart of
 the big commit. I just made a single commit of all the D changes from
 over a two year period because it was the only way to not have a huge
 internal Mercurial mess.

 If there is a workflow that works with Mercurial for SCons then we need
 education and a document explaining what 

Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Dirk Bächle

On 09.08.2014 18:01, William Blevins wrote:


As we know Gary and I are Git people who like transient feature
branches
that can be packaged for merge and are not Mercurial experts. The D
changes extended over a very long period in a Mercurial feature fork
with me keeping the fork up to date with the mainline. On merge
Mercurial was unable to cope with this, creating zillions of spurious
crap. Really we do not have a good workflow and that is at the
heart of
the big commit. I just made a single commit of all the D changes
from
over a two year period because it was the only way to not have a huge
internal Mercurial mess.


+1, I'm new, so my voice counts less, but my past experiences with 
revision management tools is that GIT  Mercurial in every way; 
 Mercurial is more like distributed CVS (and CVS was a 
lifetime/nightmare ago).



I don't see it that way.

I could make a long rant here, but my primary point is that maybe a 
motion should be made for moving SCons to GIT?  We could at least take 
a vote and see if anyone is adamantly opposed.  I'm against using a 
hammer to do the job of a screwdriver.


Have to disagree again. Feel free to raise a poll for Git (I think we 
did that some time ago, and hg won...so why don't we stick to that?), 
but I don't see how this can help us. Work doesn't get less with another 
transition, and we just moved from svn-hg. All the changes in the docs, 
the changes in the basic workflows (branching, merging, releasing) and 
whatever, now start to settle finally...such that one could start to 
really do some proper work.
I just put quite some energy into updating the Wiki pages about how to 
branch/merge with Mercurial...and you want to move *again*?


I've seen pull requests with several commits on a branch, where the 
changes were very easy to follow. That's when people say: Oh, why don't 
you squash stuff together, so the log graph looks nicer. On other 
occasions, reviewers complained because the single commit was too big 
and too difficult to review. Well, yeah, that happens...it's life.
The merge that Russel mentioned was actually, as far as I remember, 
successful and left the repo in a consistent state. It was again the 
only problem that the log graph looked a bit odd, based on Mercurial's 
inner workings.

I really don't want to transition to another VCS again, only for that...

-1 from me at the moment. Let's not concentrate on having pretty 
revision graphs, but on providing and releasing a software that works 
for our users... ;)


Dirk

___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Russel Winder
On Sat, 2014-08-09 at 15:28 +0200, Dirk Bächle wrote:
[…]
 Can you do the following test please:
 
 - In the D tools of your local installation, change the names of the 
 executables that get detected...such that they can't possibly be found 
 in the system (in exists() rename dmd - foodmd, ...).

Given everything is Debian package installed this means removing the
package, I do not tinker with files in /usr/bin! :-)

I think I am going to have to find a way of using Docker or equivalent
to create new Linux systems without having a full virtual machine.

 - Then create a simple SConstruct:
 
env = Environment()
print env.Dump()
 
 - Run through SCons, and observe that the Environment has D variables (= 
 dmd.py Tool got loaded anyway)

I'll take OPs and your word for it.  Actually I just tried it on my
server and yes this is true. But… all the Fortran symbols are brought in
as well and I have no Fortran compiler on that machine. So everything
being said about D is true for Fortran as well.
 
 This happens, because the line
 
   d_compiler = FindTool(d_compilers, env) or d_compilers[0]
 
 adds dmd to the tool list anyway. In the default Tool's generate() 
 method, the returned list is simply loaded without checking the 
 existence of tools again.

Indeed as OP said. However all the Fortran tools are being brought in as
well even though I have no Fortran compiler, why is this happening and
should it be fixed?


 It is okay, and wanted, for as many Tools to get loaded by default...as 
 long as their variables don't clash. The STATIC_AND_SHARED variable is 
 only set by:
 
 - C/C++ compilers (where only the first match gets selected, based on 
 the current platform) and
 - masm (only under Windows, where it sets the same value as a Windows 
 C/C++ compiler - no clash)
 
 Only the D tools are forcing it back to 0, and this is not compatible 
 with the setting that the msvc and mingw Tool make. This is the main 
 culprit, and we either have to remove the explicit setting of 
 STATIC_AND_SHARED from the D tools (relying on the C/C++ tools to do 
 the right thing, or, if they really need the setting under Windows, we 
 have to remove the D tools from the default toolchain.
 
 So, is STATIC_AND_SHARED=0 *required* for the D tools to work properly 
 under Windows?

OK, this seems to be the real point here, the rest is, forgive me,
flummery. The D tool should behave in the same way the Fortran tool does
regarding this sort of thing and it seems Fortran does not touch this.

Given that SCons is a C/C++ build framework with other stuff bolted on,
then clearly the C/C++ stuff is special and has priority. I can see it
was an error of mine to force a change of this symbol in what appears to
be a by default situation.

So I suggest the way forward is to remove the setting of this from the D
tools and forget it for now — the reason I original set this a couple of
years ago was due to a (mis-)feature of D that is changing very rapidly
just now. How this is treated for D needs reviewing in a few months time
when the next GDC and LDC compilers get formally released.

Then what we need is a test for this that shows a fail on Windows
without a D compiler as well as with — and the usual battery of tests on
Linux and OSX with and without. It appears only to be a Windows problem
and I cannot do anything requiring Windows.

I have made the remove the six lines change in my Mercurial repository
and the D tests all run as expected (*), I am just running the full of
tests set now. I can make a pull request but without running a test
highlighting the problem (which we don't actually have just now) run on
a Windows machine (which I don't have) this doesn't mean very much. :-(


(*) It still worries me that the tool for checking the presence of an
executable for use in a SCons test uses the user PATH but the execution
of the test uses the default PATH only. Thus there are test fails which
can never pass on my machine even though everything works fine.


-- 
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


signature.asc
Description: This is a digitally signed message part
___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Dirk Bächle

On 09.08.2014 19:33, William Blevins wrote:
Fair; I realize its non-trivial.  My complaints with Mercurial aren't 
related to one particular event.  It's more a personal preference in 
tool usability.


If HG suites the needs of the team, I'll just have to muddle through it.

Again, you are right.  This issue has nothing to do with Mercurial.

Sorry,
William

No need to excuse, and it's totally fine to be a little biased. It's 
just that exactly these kind of discussions keep the core developers 
from their actual work...which might be one of the reasons why so many 
bugs in our tracker are untouched. Sorry, I just couldn't resist to give 
this wink. ;)


Dirk

___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Russel Winder
On Sat, 2014-08-09 at 15:33 +0200, Dirk Bächle wrote:
[…]
 Yep, I second that. Things like these just happen sometimes, so we can 
 only try to be professional about it and get the issue out of the way 
 asap. I also screwed up badly several times when trying to revamp the 
 doc toolchain, so, Russel, please don't feel offended. You did a great 
 job on the D integration, it's just this tiny issue that's left...so 
 let's work things out.

Exactly. We have two genuine problems that need fixing, so let's do it.

In amongst all the bluster and anger, I think we have iterated to a very
simple solution to both bugs: remove the setting of the symbol in the D
tools since it is problematic and the Fortran tools do not touch it
(even if they ought to be :-).

I will commit the change and push to my Mercurial repository on
BitBucket, but won't ask for a pull request, unless that would be
helpful to people with Windows kit trying this out.

We do need a test for this, but I am not sure what form it should take
so all suggestions welcome.
-- 
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


signature.asc
Description: This is a digitally signed message part
___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Dirk Bächle

On 09.08.2014 19:35, Russel Winder wrote:

[...]

This happens, because the line

   d_compiler = FindTool(d_compilers, env) or d_compilers[0]

adds dmd to the tool list anyway. In the default Tool's generate()
method, the returned list is simply loaded without checking the
existence of tools again.

Indeed as OP said. However all the Fortran tools are being brought in as
well even though I have no Fortran compiler, why is this happening and
should it be fixed?
I think the reasoning behind this is, that if a Fortran compiler isn't 
found during construction of the Environment (because PATH is not setup 
properly), it gives the user a chance to directly set env['FORTRAN'] = 
/path/to/fc and get things going for him.
Whether this was a good idea is quite debatable, but that would be my 
explanation for why things are as they are.



[...]

So I suggest the way forward is to remove the setting of this from the D
tools and forget it for now — the reason I original set this a couple of
years ago was due to a (mis-)feature of D that is changing very rapidly
just now. How this is treated for D needs reviewing in a few months time
when the next GDC and LDC compilers get formally released.


Another option would be to not completely remove it, but use 
env.Default() such that the variable is only set if it doesn't exist 
yet. That should do the trick too.


Thanks a lot for looking at this immediately.

Dirk

___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Russel Winder
On Sat, 2014-08-09 at 13:33 -0400, William Blevins wrote:
 Fair; I realize its non-trivial.  My complaints with Mercurial aren't
 related to one particular event.  It's more a personal preference in tool
 usability.
 
 If HG suites the needs of the team, I'll just have to muddle through it.
 
 Again, you are right.  This issue has nothing to do with Mercurial.
 
 Sorry,

Please don't apologise for raising a perfectly reasonable point, there
is nothing wrong with that.

The history of this is that Python went with Mercurial and Steven wanted
to go with Mercurial, so we went with Mercurial. At the time it seemed
fine and reasonable and I had no problem with it. And in many ways still
don't even though I prefer Git for the remote tracking branches and
transient internal feature branches. (Well actually I still prefer
Bazaar, but that is now an ex-DVCS, given it's level of support since
Canonical have dropped funded support.)

The core issue here is that Mercurial enforces maintaining the names of
branches in all repositories. Thus the technique of internal feature
branches fails with Mercurial. This leads to having branches only for
long lived things such as maintenance branches. Everything else needs to
be on default. This means clones for feature branches or use of
bookmarks (MQ seems to be deprecated in favour of rebase and graft and
things I don't understand about Mercurial – which includes bookmarks).

Our problem is that it seems that maintaining a long running
synchronized clone of a default branch leads Mercurial to having
problems on a final merge. Advice from a Mercurial expert was that
actually the result was fine, just ugly. Gary felt it was an ugly too
far and that we should not use that way of merging. Nothing wrong there
per se. It just brings into stark relief that we do not have a
reasonable workflow just now.

I am getting to the stage of not doing anything because any process I
use leads to problems.

I am thinking that we should use clones for feature branches
synchronizing with the mainline and even publish them but before making
the final pull request perform a full rebase so as to create a pull
request sitting on the current mainline default/tip.

Anatoly had, I believe, an alternative suggestion, but I have forgotten
what it was. As he is more of a Mercurial expert, his suggestion may
well be far more sensible.


-- 
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


signature.asc
Description: This is a digitally signed message part
___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Dirk Bächle

On 09.08.2014 19:42, Russel Winder wrote:

On Sat, 2014-08-09 at 15:33 +0200, Dirk Bächle wrote:
[…]

In amongst all the bluster and anger, I think we have iterated to a very
simple solution to both bugs: remove the setting of the symbol in the D
tools since it is problematic and the Fortran tools do not touch it
(even if they ought to be :-).

I will commit the change and push to my Mercurial repository on
BitBucket, but won't ask for a pull request, unless that would be
helpful to people with Windows kit trying this out.


I think it is extremely helpful to create this PR right now. The sooner 
we can test this in the mainline (and against our Buildbots), and the 
sooner users can pull a fixed version straight from the repo for 
testing, the better it is for us.
We have clearly identified the issue and have a fix for it. Let's not 
wait...



We do need a test for this, but I am not sure what form it should take
so all suggestions welcome.
I don't think we need an extra test. There are lots of D tool tests 
already, and the existing C/C++ tests actually triggered errors on the 
Windows buildslave...but nobody had a closer look because the buildbot 
stuff was in a bad state recently. So the all red appeared to be normal.


This is a fix for a previous commit, so there doesn't have to be a test 
for it, IMO. The actual testing would be to have one Buildslave under 
Windows with D tools installed, and another one without.
So again, feel free to leap ahead and remove the offending line...no 
tests required from my side.

And if things go havoc this time, you can put the blame on me afterwards. ;)

Dirk

___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Russel Winder
On Sat, 2014-08-09 at 19:54 +0200, Dirk Bächle wrote:
[…]
 I think the reasoning behind this is, that if a Fortran compiler isn't 
 found during construction of the Environment (because PATH is not setup 
 properly), it gives the user a chance to directly set env['FORTRAN'] = 
 /path/to/fc and get things going for him.
 Whether this was a good idea is quite debatable, but that would be my 
 explanation for why things are as they are.

If it's good enough for Fortran it's good enough for D. :-)

I suggest that the primary issue is the smart_link which if I remember
correctly only works properly if the infrastructure for C, C++, Fortran
and D is all present.

[…]
 Another option would be to not completely remove it, but use 
 env.Default() such that the variable is only set if it doesn't exist 
 yet. That should do the trick too.

I have implemented the removal for now, but it needs testing by someone
who might see the problem, I cannot. Though the full tests do highlight
some test fails:

test/Deprecated/SourceCode/SourceCode.py
test/Docbook/basic/epub/epub.py
test/Docbook/basic/html/html.py
test/Docbook/basic/htmlchunked/htmlchunked.py
test/Docbook/basic/htmlhelp/htmlhelp.py
test/Docbook/basic/man/man.py
test/Docbook/dependencies/xinclude/xinclude.py
test/Interactive/shell.py

Most of the 105 skipped tests I understand, some have me worried,
especially the Fortran ones and some of the LaTeX ones.

 Thanks a lot for looking at this immediately.

It acted as entertainment and distraction from getting Python courses
ready for presentation next week and in three weeks time!

-- 
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


signature.asc
Description: This is a digitally signed message part
___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread William Blevins

 The core issue here is that Mercurial enforces maintaining the names of
 branches in all repositories. Thus the technique of internal feature
 branches fails with Mercurial. This leads to having branches only for
 long lived things such as maintenance branches. Everything else needs to
 be on default. This means clones for feature branches or use of
 bookmarks (MQ seems to be deprecated in favour of rebase and graft and
 things I don't understand about Mercurial – which includes bookmarks).
 Our problem is that it seems that maintaining a long running
 synchronized clone of a default branch leads Mercurial to having
 problems on a final merge. Advice from a Mercurial expert was that
 actually the result was fine, just ugly. Gary felt it was an ugly too
 far and that we should not use that way of merging. Nothing wrong there
 per se. It just brings into stark relief that we do not have a
 reasonable workflow just now.


Bookmarks have been alright, but only for like 1 or 2 small commits and
trying to work on several small independent articles is frustrating.  To
get around this I either clone a new repo for that item or I bootstrap a
GIT repo and manage everything that way until I'm done.  It may be my
misunderstanding of the way Mercurial was meant to be used.  Too many
important features come as plug-ins rather than base-line features. I have
co-workers who use HG for their projects and I was trying to see I was just
being silly, but there response lead me to believe that they cloned a new
repo per work item.

-William


On Sat, Aug 9, 2014 at 2:05 PM, Russel Winder rus...@winder.org.uk wrote:

 On Sat, 2014-08-09 at 13:33 -0400, William Blevins wrote:
  Fair; I realize its non-trivial.  My complaints with Mercurial aren't
  related to one particular event.  It's more a personal preference in tool
  usability.
 
  If HG suites the needs of the team, I'll just have to muddle through it.
 
  Again, you are right.  This issue has nothing to do with Mercurial.
 
  Sorry,

 Please don't apologise for raising a perfectly reasonable point, there
 is nothing wrong with that.

 The history of this is that Python went with Mercurial and Steven wanted
 to go with Mercurial, so we went with Mercurial. At the time it seemed
 fine and reasonable and I had no problem with it. And in many ways still
 don't even though I prefer Git for the remote tracking branches and
 transient internal feature branches. (Well actually I still prefer
 Bazaar, but that is now an ex-DVCS, given it's level of support since
 Canonical have dropped funded support.)

 The core issue here is that Mercurial enforces maintaining the names of
 branches in all repositories. Thus the technique of internal feature
 branches fails with Mercurial. This leads to having branches only for
 long lived things such as maintenance branches. Everything else needs to
 be on default. This means clones for feature branches or use of
 bookmarks (MQ seems to be deprecated in favour of rebase and graft and
 things I don't understand about Mercurial – which includes bookmarks).

 Our problem is that it seems that maintaining a long running
 synchronized clone of a default branch leads Mercurial to having
 problems on a final merge. Advice from a Mercurial expert was that
 actually the result was fine, just ugly. Gary felt it was an ugly too
 far and that we should not use that way of merging. Nothing wrong there
 per se. It just brings into stark relief that we do not have a
 reasonable workflow just now.

 I am getting to the stage of not doing anything because any process I
 use leads to problems.

 I am thinking that we should use clones for feature branches
 synchronizing with the mainline and even publish them but before making
 the final pull request perform a full rebase so as to create a pull
 request sitting on the current mainline default/tip.

 Anatoly had, I believe, an alternative suggestion, but I have forgotten
 what it was. As he is more of a Mercurial expert, his suggestion may
 well be far more sensible.


 --
 Russel.

 =
 Dr Russel Winder  t: +44 20 7585 2200   voip:
 sip:russel.win...@ekiga.net
 41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@winder.org.uk
 London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder

 ___
 Scons-dev mailing list
 Scons-dev@scons.org
 http://two.pairlist.net/mailman/listinfo/scons-dev


___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Dirk Bächle

On 09.08.2014 20:05, Russel Winder wrote:

On Sat, 2014-08-09 at 13:33 -0400, William Blevins wrote:

[...]



Our problem is that it seems that maintaining a long running
synchronized clone of a default branch leads Mercurial to having
problems on a final merge. Advice from a Mercurial expert was that
actually the result was fine, just ugly. Gary felt it was an ugly too
far and that we should not use that way of merging. Nothing wrong there
per se. It just brings into stark relief that we do not have a
reasonable workflow just now.
I still don't feel the logic behind this reasoning. For me, the fact 
that the end result looks messy doesn't have anything to do with the 
workflow itself.



I am getting to the stage of not doing anything because any process I
use leads to problems.

Oh Russel, I didn't know you're *that* sensible... ;)

Please don't give up messing with our repos and minds!


Dirk

___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Russel Winder
On Sat, 2014-08-09 at 20:09 +0200, Dirk Bächle wrote:
[…]
 I think it is extremely helpful to create this PR right now. The sooner 
 we can test this in the mainline (and against our Buildbots), and the 
 sooner users can pull a fixed version straight from the repo for 
 testing, the better it is for us.
 We have clearly identified the issue and have a fix for it. Let's not 
 wait...

Duly done, #166.

  We do need a test for this, but I am not sure what form it should take
  so all suggestions welcome.
 I don't think we need an extra test. There are lots of D tool tests 
 already, and the existing C/C++ tests actually triggered errors on the 
 Windows buildslave...but nobody had a closer look because the buildbot 
 stuff was in a bad state recently. So the all red appeared to be normal.
 
 This is a fix for a previous commit, so there doesn't have to be a test 
 for it, IMO. The actual testing would be to have one Buildslave under 
 Windows with D tools installed, and another one without.
 So again, feel free to leap ahead and remove the offending line...no 
 tests required from my side.
 And if things go havoc this time, you can put the blame on me afterwards. ;)

Anatoly is right to point out that there are some claimed situations not
supported by tests that should be supported by tests. So there ought to
be more tests.

I am not sure though there is a specific test for this case anyway apart
from the ones there.

-- 
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


signature.asc
Description: This is a digitally signed message part
___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


[Scons-dev] Version control (was Re: Scons 2.3.2 regression, D tool...)

2014-08-09 Thread Mark A. Flacy
On Saturday, August 09, 2014 02:18:49 PM William Blevins wrote:
  The core issue here is that Mercurial enforces maintaining the names of
  branches in all repositories. Thus the technique of internal feature
  branches fails with Mercurial. This leads to having branches only for
  long lived things such as maintenance branches. Everything else needs to
  be on default. This means clones for feature branches or use of
  bookmarks (MQ seems to be deprecated in favour of rebase and graft and
  things I don't understand about Mercurial – which includes bookmarks).
  Our problem is that it seems that maintaining a long running
  synchronized clone of a default branch leads Mercurial to having
  problems on a final merge. Advice from a Mercurial expert was that
  actually the result was fine, just ugly. Gary felt it was an ugly too
  far and that we should not use that way of merging. Nothing wrong there
  per se. It just brings into stark relief that we do not have a
  reasonable workflow just now.
 
 Bookmarks have been alright, but only for like 1 or 2 small commits and
 trying to work on several small independent articles is frustrating.  To
 get around this I either clone a new repo for that item or I bootstrap a
 GIT repo and manage everything that way until I'm done.  It may be my
 misunderstanding of the way Mercurial was meant to be used.  Too many
 important features come as plug-ins rather than base-line features. I have
 co-workers who use HG for their projects and I was trying to see I was just
 being silly, but there response lead me to believe that they cloned a new
 repo per work item.


I've been using DVCs since 2003 (Tom Lord's larch, followed by tla, hg, bzr, 
and recently git).  I've even looked at fossil and darcs.

Git is the strange one of the bunch. There are things in git that go by the 
name of X that have things in the other DVCSs that are also named X that 
are almost naming the same concept.  It's the details that throw you.

Such as git thinks that history is malleable by default while none of the 
other DVCSs do.  (That's why you have to turn on the rebase extension to hg; 
it's part of the base code, but using it changes the basic model.)

My colleagues at work are moving from ClearCase UCM to git and they eff things 
up every day.  (So do I.  The git user interface is absolutely horrible.) A 
different colleague of mine moved from ClearCase UCM to Mercurial and hasn't 
had a problem.  (In fairness, he's working pretty much by himself so I don't 
expect that his merge problems are that complicated.)

http://mercurial.selenic.com/wiki/BranchingExplained describes the differences 
rather well, I think, on the branching strategies of the two DVCSs.  A 
changeset (aka commit object) in hg does not have to have a named reference to 
survive.

http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/ also has 
good information.

From what I've read on hg's bookmark implementation and what I've seen 
recently on git's branching, I think that 
http://mercurial.selenic.com/wiki/Bookmarks is a very close analog.  Note that 
the bookmark namespace is global, not local like the git branch namespace.

-- 
Mark A. Flacy
___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Mark A. Flacy
On Saturday, August 09, 2014 08:22:40 PM Dirk Bächle wrote:
 On 09.08.2014 20:05, Russel Winder wrote:
  On Sat, 2014-08-09 at 13:33 -0400, William Blevins wrote:
  [...]
  
  Our problem is that it seems that maintaining a long running
  synchronized clone of a default branch leads Mercurial to having
  problems on a final merge. Advice from a Mercurial expert was that
  actually the result was fine, just ugly. Gary felt it was an ugly too
  far and that we should not use that way of merging. Nothing wrong there
  per se. It just brings into stark relief that we do not have a
  reasonable workflow just now.
 
 I still don't feel the logic behind this reasoning. For me, the fact
 that the end result looks messy doesn't have anything to do with the
 workflow itself.

Well, the messy bit is information that nobody really cares about; so why 
keep it around?



-- 
Mark A. Flacy
___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Scons 2.3.2 regression, D tool...

2014-08-09 Thread Dirk Bächle

On 09.08.2014 20:28, Russel Winder wrote:

On Sat, 2014-08-09 at 20:09 +0200, Dirk Bächle wrote:
[…]

I think it is extremely helpful to create this PR right now. The sooner
we can test this in the mainline (and against our Buildbots), and the
sooner users can pull a fixed version straight from the repo for
testing, the better it is for us.
We have clearly identified the issue and have a fix for it. Let's not
wait...

Duly done, #166.
Merged, Buildbots are through...and the .def errors are gone. Thanks 
again for the fix!


So we can now point users to the latest dev version, if this error shows 
up for them.


Dirk

___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev