Commit f7a501e1 authored by Peter Korsgaard's avatar Peter Korsgaard
Browse files

Makefile: fix build if CDPATH is set in environment



Reported by Bjørn Forsman <bjorn.forsman@gmail.com>.

If CDPATH is set in the environment, cd <dir> will print the absolute path
of <dir>, causing various trouble (The most critical being BASE_DIR ending
up as <path> <path> which breaks basically everything).

Fix it by clearing CDPATH. Notice that export doesn't affect the environment
of $(shell ..) calls, so explicitly throw away any output from cd in the
BASE_DIR shell call.

Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent 617aa499
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -232,7 +232,12 @@ else
MAKEOVERRIDES =
endif

BASE_DIR := $(shell mkdir -p $(O) && cd $(O) && pwd)
# bash prints the name of the directory on 'cd <dir>' if CDPATH is
# set, so unset it here to not cause problems. Notice that the export
# line doesn't affect the environment of $(shell ..) calls, so
# explictly throw away any output from 'cd' here.
export CDPATH:=
BASE_DIR := $(shell mkdir -p $(O) && cd $(O) >/dev/null && pwd)
$(if $(BASE_DIR),, $(error output directory "$(O)" does not exist))

DL_DIR=$(call qstrip,$(BR2_DL_DIR))