Skip to content

Commit 329f3e4

Browse files
authored
Check for clang++ not g++ on Windows/MSYS2 with clang (#982)
Fix problems with building on Windows/MSYS2 * Check for clang++ not g++ on Windows/MSYS2 with clang * Activate venv
1 parent 2e26984 commit 329f3e4

File tree

1 file changed

+36
-5
lines changed

1 file changed

+36
-5
lines changed

build.sh

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -176,10 +176,12 @@ if [ -z "${VENV_ROOT}" ] ; then
176176
fi
177177

178178
ACTIVATE="${VENV_ROOT}/bin/activate"
179+
# For Windows/MSYS2
180+
ALT_ACTIVATE="${VENV_ROOT}/Scripts/activate"
179181
if [ -z "${PC_TARGET}" ] ; then
180182
# Doing a PlatformIO build, locate PlatformIO. It may or may not
181183
# already be in the users' path.
182-
if [ -e "${ACTIVATE}" ] ; then
184+
if [ -f "${ACTIVATE}" ] ; then
183185
# Activate now in case pio isn't already in PATH
184186
source "${ACTIVATE}"
185187
fi
@@ -193,7 +195,11 @@ fi
193195
# Let the user know about any required packages they need to install
194196
MISSING=""
195197
if [ -n "${PC_TARGET}" ] ; then
196-
for REQUIRED in g++ make cmake ; do
198+
COMPILER=g++
199+
if [ "$MSYSTEM" = "CLANG64" ]; then
200+
COMPILER=clang++
201+
fi
202+
for REQUIRED in ${COMPILER} make cmake ; do
197203
if ! command -v ${REQUIRED} > /dev/null ; then
198204
MISSING="${REQUIRED} ${MISSING}"
199205
fi
@@ -204,17 +210,42 @@ if [ -n "${MISSING}" ] ; then
204210
exit 1
205211
fi
206212

213+
normalize_path() {
214+
case "$OSTYPE" in
215+
msys*|cygwin*)
216+
cygpath --unix "$1"
217+
;;
218+
*)
219+
# Already Unix-style, return as-is
220+
echo "$1"
221+
;;
222+
esac
223+
}
224+
207225
if [[ "$VIRTUAL_ENV" != "$VENV_ROOT" ]] ; then
208-
if [ ! -e "${ACTIVATE}" ] ; then
226+
if [ ! -f "${ACTIVATE}" ] ; then
209227
echo Creating venv at "${VENV_ROOT}"
210228
mkdir -p $(dirname "${VENV_ROOT}")
211229
${PYTHON} -m venv "${VENV_ROOT}" || exit 1
212230
fi
213-
if [ -e "${ACTIVATE}" ] ; then
231+
if [ -f "${ACTIVATE}" ] ; then
214232
source "${ACTIVATE}"
233+
elif [ -f "${ALT_ACTIVATE}" ] ; then
234+
source "${ALT_ACTIVATE}"
235+
echo "-------------------"
236+
cat "${ALT_ACTIVATE}"
237+
echo "-------------------"
215238
fi
216-
if [[ "$VIRTUAL_ENV" != "$VENV_ROOT" ]] ; then
239+
VENV_ACTUAL="$(normalize_path "$VIRTUAL_ENV")"
240+
if [[ "${VENV_ACTUAL}" != "${VENV_ROOT}" ]] ; then
217241
echo Unable to activate penv/venv
242+
echo "ACTIVATE = ${ACTIVATE}"
243+
echo "ALT_ACTIVATE = ${ALT_ACTIVATE}"
244+
echo "VIRTAUL_ENV = ${VIRTUAL_ENV}"
245+
echo "VENV_ACTUAL = ${VENV_ACTUAL}"
246+
echo "VENV_ROOT = ${VENV_ROOT}"
247+
ls -Fla "$(dirname ${ACTIVATE})" || true
248+
ls -Fla "$(dirname ${ALT_ACTIVATE})" || true
218249
exit 1
219250
fi
220251
fi

0 commit comments

Comments
 (0)