-
-
Notifications
You must be signed in to change notification settings - Fork 101
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Makefile.in: build config.h before any object #192
Conversation
Object files lack dependency on `config.h` symlink (and usually depend only on `ldns/config.h`). As a result build occasionally fails in `make --shuffe mode`: $ make --shuffle ... ./libtool --tag=CC --quiet --mode=compile gcc -I. -I. \ -DHAVE_CONFIG_H -DLDNS_TRUST_ANCHOR_FILE="\"...-dns-root-data-2019-01-11/root.key\"" \ -DOPENSSL_API_COMPAT=10100 -fno-strict-aliasing -Wunused-function -Wstrict-prototypes \ -Wwrite-strings -W -Wall -g -O2 -I...-openssl-3.0.7-dev/include -c examples/ldns-rrsig.c \ -o examples/ldns-rrsig.o examples/ldns-rrsig.c:10:10: fatal error: config.h: No such file or directory 10 | #include "config.h" | ^~~~~~~~~~ The change moves `config.h` symlink creation in `setup-builddir` from a dependency on final binary to dependency on all individual objects. While at it regenerated dependencies with `make depend`. before the change `make --shuffle` build was failing in about 50% cases. After the change: `make --shuffle` succeeded 80 times in a row.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that looks fine. And I learned something new: "make --shuffle"! Thanks!
Oh, I just noticed you have reverted the change. I still see the build failures on the current
|
Yes, I did reverse it and I was a bit in a hurry, so failed to tell you about it. |
Aha, the broken incremental rebuild makes sense. I remember it being the problem. But I had an impression that it's not a new behaviour and incremental rebuild is already happening on unmodified
|
Wow, you have an impressively fast machine, but are you sure you did git pull? With me the second time the object files are not rebuild:
Anyway, I will do the release now, but don't worry, we'll put it in the next release if we can find a way to make make --shuffle work. And a next release doesn't need to take another 2 years. |
Also, what options to configure did you use to get the 51 libtool invokes? |
Oh, I'm using Here is my full session: git update
$ libtoolize -ci && autoreconf -fi
./configure
first make
second make (with logs)
|
Object files lack dependency on
config.h
symlink (and usually depend only onldns/config.h
). As a result build occasionally fails inmake --shuffe mode
:The change moves
config.h
symlink creation insetup-builddir
from a dependency on final binary to dependency on all individual objects.While at it regenerated dependencies with
make depend
.before the change
make --shuffle
build was failing in about 50% cases.After the change:
make --shuffle
succeeded 80 times in a row.