bugGNU Octave - Bugs: bug #47317, "make tags" fails

 
 

bug #47317: "make tags" fails

Submitted by:  Rik <rik5>
Submitted on:  Tue 01 Mar 2016 09:00:38 PM UTC  
 
Category: Configuration and Build SystemSeverity: 2 - Minor
Priority: 5 - NormalItem Group: Regression
Status: FixedAssigned to: None
Originator Name: Open/Closed: Closed
Release: devOperating System: Any

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

Wed 02 Mar 2016 04:38:06 AM UTC, comment #5:

It might be worth experimenting with eliminating the convenience libraries just to see what would happen but I'm not sure that there will be much difference.

The convenience libraries are just old-style archives created using ar, so building them should be fairly fast as no linking actually happens at that step.

There should be no dependencies between any of the convenience libraries that are combined to make any one of the 3 main libraries. I think that means that it should already be possible to compile all of the object files at once if you had enough memory and CPU capacity to run about 1400 simultaneous compile jobs.

John W. Eaton <jwe>
Project Administrator
Wed 02 Mar 2016 02:15:19 AM UTC, comment #4:

I added another changeset that correctly ADDS the m-files to the list of files to calculate tags for. The old rule was overwriting the file list so that no C/C++/Fortran sources were included in the tags file.

Closing report.

Rik <rik5>
Project Administrator
Wed 02 Mar 2016 01:29:53 AM UTC, comment #3:

Yeah, that's probably an okay temporary solution. I'd like to try eliminating the intermediate libraries in the long run. Now that we build the libraries fully non-recursively we should be able to combine all of the SOURCES lists and just build 4 libraries, libgnu, liboctave, liboctinterp, and liboctgui. This should also increase parallelism, linking is always the big choke point.

Mike Miller <mtmiller>
Project Administrator
Wed 02 Mar 2016 01:13:51 AM UTC, comment #2:

I think I see what is going on. According to the Automake documentation:

Separately, the hack we are using to force liboctave and libgui to be linked using the CXX linker is also in the documentation.

I think the problem is that the EXTRA_ tag is meant to be used for conditional compilation where some of the files might or might not be included in a particular build. This works fine for our build system because there are no rules to process dummy.cxx and there are no dependencies on dummy.cxx. The only result is a side effect that the generated linker command is for C++ sources.

However, tags, ctags, and scope are meant to operate on all files declared in _SOURCES. Just because the file isn't used in this particular build, doesn't mean it doesn't require indexing.

I pushed a cset that makes a real file .dummy_force_cxx_link.cc in liboctave and libgui. The file is empty and the leading '.' should make it invisible most of the time. I opted to distribute it in the tarball so that someone could use the tags or cscope target after downloading. If we feel that these makefile targets are only for developers then we could add nodist_ to the Automake rule.

Rik <rik5>
Project Administrator
Tue 01 Mar 2016 10:42:10 PM UTC, comment #1:

Confirmed, also "make cscope". Touching the two files libgui/dummy.cc and liboctave/dummy.cc is enough to allow these two targets to succeed.

The dummy.cc files are needed to force C++ linkage. The "EXTRA" tag is supposed to tell the build that the file is not actually needed to compile, but apparently still needed for tags/ctags/cscope.

Also now noticing that there is a custom "ctags" target in scripts/module.mk that probably shouldn't be there, maybe inadvertently left in when the build was converted to non-recursive.

Mike Miller <mtmiller>
Project Administrator
Tue 01 Mar 2016 09:00:38 PM UTC, original submission:

The tags target is one of the standard targets that should be available for every Makefile (https://www.gnu.org/software/make/manual/html_node/Standard-Targets). When I try 'make tags' I get

I can use 'ctags -R' from the top-level directory, but that will also end up including files in libgnu and gnulib-hg that I don't particularly want to index.

Rik <rik5>
Project Administrator

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by jwe (Posted a comment)
  • -unavailable- added by rik5
  • -unavailable- added by mtmiller (Posted a comment)
  • -unavailable- added by rik5 (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only project members can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 4 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Wed 02 Mar 2016 02:15:19 AM UTCrik5StatusConfirmed=>Fixed
      Open/ClosedOpen=>Closed
    Wed 02 Mar 2016 01:13:51 AM UTCrik5Carbon-Copy-=>Added jwe
    Tue 01 Mar 2016 10:42:10 PM UTCmtmillerStatusNone=>Confirmed

    Back to the top


    Powered by Savane 3.1-cleanup1