bugGnash - The GNU Flash player - Bugs: bug #20235, Unnecessary rebuilding

 
 

bug #20235: Unnecessary rebuilding

Submitter:  None
Submitted:  Thu 21 Jun 2007 08:30:01 PM UTC
   
 
Category:  build Severity:  3 - Normal
Release:  None Status:  Fixed
Privacy:  Public Assigned to:  None
Open/Closed:  Closed
* Mandatory Fields

Add a New Comment Rich Markup
   

Sat 15 Dec 2007 10:15:38 PM UTC, comment #4: 

I belive this was fixed by naming libs as -cvs till next release.

Sandro Santilli <strk>
Group Member
Thu 05 Jul 2007 02:25:08 PM UTC, comment #3: 

I agree this is inconvenient. What is more, if you do repeated makes and installs you get an ever-growing number of libgnash*-cvs200* files installed in the system library directory.

rm /usr/local/lib/libgnash* && make install

In fact it turns out we are using an obsolete form of AC_INIT_AUTOMAKE. The modern form (with no arguments) picks up the version from AC_INIT(gnash, cvs). This would install current cvs-generated libraries as libgnashfoo-cvs.so and so on which solves all these problems.

The point about "make clean" is untrue. Only a few files in */.libs/ get owned by root, and these are removed ok by make clean as mortal user. It's "not right" I agree but not a big problem.

As for config.h, you will get a much faster compilation if you use ccache, which in content-intelligent not just date-dependent.
CXX="ccache g++" ./configure bla bla bla
and
man ccache

Martin Guy <martinwguy>
Fri 22 Jun 2007 07:37:34 PM UTC, comment #2: 

"The version changes because the libraries themselves change heavily, and you wouldn't want to link to the wrong version, would you ?"

I don't see what changing the library filename every day would accomplish. The build process is smart enough so that the extra stuff will link against the just-built-and-not-yet-installed libs regardless of what their filenames are, so the filename-versioning is useless for them. With dependancy tracking, when things change, the affected code will automatically rebuild. If a lib's API changes, so to will its corresponding headers, and anything that includes those headers will rebuild as needed. That's the whole point of dependancy tracking.

With the version in config.h (forgoing my multitude of objections for the file), having it change every day makes dependancy tracking completely useless because everything includes it, which causes everything to recompile regardless of if a given source file cares about any of the changes since the day before.

And as it is, I apparently have a 291MB gnash directory because libs are littered day to day in hidden directories (compared to 30MB when everything's cleaned out). At that rate, I'd have unknowingly gotten over a GB of useless files in a month or two. I can't even clear out my gnash directory without becoming root because the libs relink again as root during make install (for whatever reason).

Anonymous
Fri 22 Jun 2007 02:21:56 PM UTC, comment #1: 

Life when using the GNU autotools... Most people consider these features, and not bugs. The version changes because the libraries themselves change heavily, and you wouldn't want to link to the wrong version, would you ?

Rob Savoye <rsavoye>
Group administrator
Thu 21 Jun 2007 08:30:01 PM UTC, original submission:  

The build process seems to incur quite a bit of unnecessary recompiling and relinking. Firstly, during make install, libtool insists on relinking all the libs, even though there are no changes since running make. Besides wasting time, it also causes the relinked libs to be owned by root, so the normal user (that you handle/build the lib with) can't successfully make clean or delete the directories.

Secondly, and more problematic, is that a CVS update on different days causes a complete rebuild of the entire tree, regardless of how much or little has changed. What happens is that rerunning configure on the updated checkout generates a new config.h, and since it's included by just about everything, it all recompiles. Most of the time, the only config.h change is that the VERSION string reflects a new day. I don't see why everything needs to recompile simply because the date changed. This makes it rather annoying to keep up to date as you'll have to wait through complete recompiles when the majority of files don't need to be rebuilt.

This second problem also has an added, unwanted side-effect. Mostly all of the libs are apparently appended with the version string. This makes it so a make install leaves most of the previous install from just days before. With only 6 CVS updates, I unknowingly amassed 73MB of useless/duplicate libraries (not including the ones just installed that will be used). I only realized it because I wanted to check what libs Gnash has, and I saw a bunch of the same libs, just with different days appended to their names.

Anonymous

 

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

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by strk (Posted a comment)
  • -email is unavailable- added by rsavoye (Posted a comment)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only logged-in users can vote.

     

    Follow 3 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2007-12-15 strk StatusWorks For Me Fixed
        Open/ClosedOpen Closed
    2007-06-22 rsavoye StatusNone Works For Me

    Back to the top

    Powered by Savane 3.13-4b48.
    Corresponding source code