#1548 closed defect (invalid)
build problem with make 4.2.1
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | major | Milestone: | |
Component: | other | Version: | |
Keywords: | Cc: | ||
uname -a: | Linux pbox 4.16.7_1 #1 SMP PREEMPT Fri May 4 11:42:50 UTC 2018 x86_64 GNU/Linux | ||
nginx -V: |
any version
make -v GNU Make 4.2.1 |
Description
can't compile any version of nginx with make 4.2.1
example:
> cd /tmp > wget http://nginx.org/download/nginx-1.14.0.tar.gz > tar -xvzf ./nginx-1.14.0.tar.gz > cd nginx-1.14.0 > ./configure > make make -f objs/Makefile make[1]: Entering directory '/tmp/nginx-1.14.0' make[1]: *** No rule to make target ' src/core/ngx_config.h', needed by 'objs/src/core/nginx.o'. Stop. make[1]: Leaving directory '/tmp/nginx-1.14.0' make: *** [Makefile:8: build] Error 2
because in obj/Makefile headers on variable CORE_DEPS without new line separators
CORE_DEPS = src/core/nginx.h \ src/core/ngx_config.h \ src/core/ngx_core.h \ src/core/ngx_log.h
Attachments (3)
Change History (7)
by , 7 years ago
by , 7 years ago
by , 7 years ago
Attachment: | autoconf.err added |
---|
comment:2 by , 7 years ago
configure out, Makefile, and autoconf.err see in attachments
voidlinux latest update, sed 4.5, bash 4.4.19
Replying to mdounin:
Just checked, and nginx compiles fine with GNU make 4.2.1, at least on FreeBSD. The problem is likely elsewhere. Please provide more details on your OS. In particular:
- Which Linux distribution it is? Please show
lsb_release -a
output if available.- Please show
configure
output (and make sure it doesn't end up in an error).If
objs/Makefile
indeed contains no newline separators inCORE_DEPS
, it might be something with either shell orsed
. Please provide more details on these as well.
follow-up: 4 comment:3 by , 7 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
As far as I see, Void Linux uses Dash as /bin/sh
shell, and it was recently updated to Dash 0.5.10. And it indeed produces broken Makefile. Switching to either Bash or previous Dash version (0.5.9.1) fixes the problem.
This seems to be a bug in Dash 0.5.10, it fails to properly handle single-quoted strings. Per POSIX, all characters within single quotes have to be preserved, yet Dash 0.5.10 removes \<newline>
constructs:
$ cat test foo='x\ y' echo "$foo" $ dash-0.5.10 test xy $ dash-0.5.9.1 test x\ y $ bash test x\ y
Broken by this commit.
To fix things, consider switching back to Dash 0.5.9.1. Using Bash as /bin/sh
might be an option too.
comment:4 by , 7 years ago
Thank you!
Simple temporary resolution for voidlinux:
xbps-alternatives -s bash
Replying to mdounin:
As far as I see, Void Linux uses Dash as
/bin/sh
shell, and it was recently updated to Dash 0.5.10. And it indeed produces broken Makefile. Switching to either Bash or previous Dash version (0.5.9.1) fixes the problem.
This seems to be a bug in Dash 0.5.10, it fails to properly handle single-quoted strings. Per POSIX, all characters within single quotes have to be preserved, yet Dash 0.5.10 removes
\<newline>
constructs:
$ cat test foo='x\ y' echo "$foo" $ dash-0.5.10 test xy $ dash-0.5.9.1 test x\ y $ bash test x\ yBroken by this commit.
To fix things, consider switching back to Dash 0.5.9.1. Using Bash as
/bin/sh
might be an option too.
Just checked, and nginx compiles fine with GNU make 4.2.1, at least on FreeBSD. The problem is likely elsewhere. Please provide more details on your OS. In particular:
lsb_release -a
output if available.configure
output (and make sure it doesn't end up in an error).If
objs/Makefile
indeed contains no newline separators inCORE_DEPS
, it might be something with either shell orsed
. Please provide more details on these as well.