libfoo.a not getting rebuilt when foo.o changes

RESOLVED INVALID

Status

()

Core
Build Config
RESOLVED INVALID
7 years ago
7 years ago

People

(Reporter: sfink, Unassigned)

Tracking

Firefox Tracking Flags

(Not tracked)

Details

(Reporter)

Description

7 years ago
It is possible that this problem is fixed, but updating will destroy the evidence. I am at d10c089a6888 on tracemonkey.

% pwd
/home/sfink/src/TM-jitstack/obj/toolkit/mozapps/readstrings

% ls -l
-rw-rw-r-- 1 sfink sfink 15892 Mar 28 15:59 libreadstrings.a
-rw-rw-r-- 1 sfink sfink    81 Apr 12 12:36 libreadstrings.a.desc
-rw-rw-r-- 1 sfink sfink  2145 Dec 21 15:57 Makefile
-rw-rw-r-- 1 sfink sfink 15600 Apr 12 12:36 readstrings.o

% make -d | fgrep libreadst
  Considering target file `libreadstrings.a.desc'.
   Finished prerequisites of target file `libreadstrings.a.desc'.
   Prerequisite `readstrings.o' is older than target `libreadstrings.a.desc'.
   Prerequisite `Makefile' is older than target `libreadstrings.a.desc'.
   Prerequisite `/home/sfink/src/TM-jitstack/toolkit/mozapps/readstrings/Makefile.in' is older than target `libreadstrings.a.desc'.
   Prerequisite `../../../config/autoconf.mk' is older than target `libreadstrings.a.desc'.
   Prerequisite `/home/sfink/src/TM-jitstack/config/config.mk' is older than target `libreadstrings.a.desc'.
  No need to remake target `libreadstrings.a.desc'.

So libfoo.a.desc depends on foo.o, and gets updated properly, but libfoo.a itself never gets updated. The ultimate symptom, and what I saw from doing a toplevel make, is:

~/src/TM-jitstack/obj/toolkit/mozapps/update/test% make
...
TestAUSReadStrings.o: In function `main':
/home/sfink/src/TM-jitstack/toolkit/mozapps/update/test/TestAUSReadStrings.cpp:192: undefined reference to `ReadStrings(char const*, char const*, unsigned int, char (*) [400], char const*)'
/usr/bin/ld: TestAUSReadStrings: hidden symbol `ReadStrings(char const*, char const*, unsigned int, char (*) [400], char const*)' isn't defined

(The reason it's not defined is that the character array changed from size 200 to 400, and the test has the new value (400) but libreadstrings.a still contains the old.)
I think this is just fallout from bug 584474, and you need to clobber. That bug changed it so we don't actually build static libs anymore, just the .desc files (which just contain lists of object file names).
Status: NEW → RESOLVED
Last Resolved: 7 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.