Tcl Source Code

View Ticket
Login
Ticket UUID: 465874
Title: Don't run genstubs from `make all`
Type: Patch Version: None
Submitter: mdejong Created on: 2001-09-28 01:10:01
Subsystem: 53. Configure and Build Tools Assigned To: mdejong
Priority: 5 Medium Severity:
Status: Closed Last Modified: 2002-07-17 06:13:59
Resolution: Fixed Closed By: mdejong
    Closed on: 2002-07-16 23:13:59
Description:
Here is an example of the sort of build error
people are seeing.


        tclsh ./../tools/genStubs.tcl ./../generic \
                ./../generic/tcl.decls
./../generic/tclInt.decls
                sh: tclsh:  not found.
                *** Error exit code 127

This is caused by the tclStubInit.c dep in
Makefile.in. Instead of running the equiv
of genstubs automatically, we should just
print a message telling the user it needs
to be done. The attached patch implements
this change.
User Comments: mdejong added on 2002-07-17 06:13:59:
Logged In: YES 
user_id=90858

I changed the output to be much more descriptive.

Warning: tclStubInit.c may be out of date.
Developers may want to run "make genstubs" to regenerate.
This warning can be safely ignored, do not report as a bug!


If folks still complain after this, I give up.

mdejong added on 2002-07-03 02:01:17:
Logged In: YES 
user_id=90858

I don't think printing the warning only when a CVS
subdir exists makes sense. Perhaps we could improve
the warning message or find out why the timestamps
are wrong and fix that.

dgp added on 2002-06-28 00:07:26:
Logged In: YES 
user_id=80530


Re-opening.

As I predicted, we're getting reports from early beta
testers in the Tcl'ers chat about the error message
telling them they need to `make genstubs` when in
fact they do not.  This is just a quirk of what files
get written first when the tarball is unpacked.

We came up with a possible alternative in the chat.
Can the tclStubInit.c target be revised so that it only
prints out its warning message if there is a subdirectory
of $(GENERIC_DIR) named "CVS".  Then the warning
will be limited to environments that (look like) CVS sandboxes
where they are acutally useful, and suppressed for end users
where they only add confusion.

mdejong added on 2001-11-08 10:47:00:
Logged In: YES 
user_id=90858

Committed patch on 2001-11-07. I don't buy the argument
that core developers need this done automatically. This
patch will simply print a warning in the case where
changes have been made. It does not hurt and in fact helps
those folks that can't build at all because of out of date
files. Commenting out build rules seems like a huge hack,
but we might want to investigate adding
--enable-maintainer-mode features to the Tcl build process
in the future.

dgp added on 2001-09-28 08:51:08:
Logged In: YES 
user_id=80530

This patch is effective, but I think I'd prefer
just commenting out the tclStubInit.c target.

If the tclStubInit.c target is kept, but commented
out, then core developers can simply uncomment it,
and get the useful function of automatically keeping
their code up to date with changes in the *.decls files.
For end-users, commenting it out makes it completely
silent about the timestamps of *.decls files being
younger than other files in a fresh unpack.

In contrast, if we accept the attached patch, then
core developers will have to build 'make genstubs'
by hand when prompted, rather than having the option
of getting that done automatically.  Also, although
end-users will not have their builds interrupted
by an error, attentive end users will see what looks
like an error or warning message, and we'll get reports
about that.  If they interrupt the build to follow
the instruction ('make genstubs') it will fail for
the same reason it automatically fails now.

Either option is an improvement to what we have,
so I'll accept whatever Mo wants to do.

dgp added on 2001-09-28 08:35:00:
Logged In: YES 
user_id=80530

 See Tcl Bugs 420501, 423988, 444308, 464874.

mdejong added on 2001-09-28 08:10:01:

File Added - 11307: genstub.patch

Attachments: