Fix qmk flash on FreeBSD (#12085)

When the USB device is connected, FreeBSD creates not one, but three
device nodes in /dev, e.g.: /dev/ttyU0, /dev/ttyU0.init, and
/dev/ttyU0.lock.

As a result, this leads to the USB variable containing 3 paths
(and therefore, whitespace) and messages like this one:

    Device /dev/ttyU0
    /dev/ttyU0.init
    /dev/ttyU0.lock has appeared; assuming it is the controller.

This changes fixes the use of the -z flag of "[" (see test(1)). Also, it
removes undesired paths from the USB variable, leaving only
one path there (i.e., "/dev/ttyU0").
master
Mateusz Piotrowski 2021-05-06 01:26:50 +02:00 committed by GitHub
parent c6778dde82
commit 38b9f67c3b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 1 deletions

View File

@ -160,6 +160,8 @@ define EXEC_AVRDUDE
list_devices() { \ list_devices() { \
if $(GREP) -q -s icrosoft /proc/version; then \ if $(GREP) -q -s icrosoft /proc/version; then \
wmic.exe path Win32_SerialPort get DeviceID 2>/dev/null | LANG=C perl -pne 's/COM(\d+)/COM.($$1-1)/e' | sed 's!COM!/dev/ttyS!' | xargs echo -n | sort; \ wmic.exe path Win32_SerialPort get DeviceID 2>/dev/null | LANG=C perl -pne 's/COM(\d+)/COM.($$1-1)/e' | sed 's!COM!/dev/ttyS!' | xargs echo -n | sort; \
elif [ "`uname`" = "FreeBSD" ]; then \
ls /dev/tty* | grep -v '\.lock$$' | grep -v '\.init$$'; \
else \ else \
ls /dev/tty*; \ ls /dev/tty*; \
fi; \ fi; \
@ -169,7 +171,7 @@ define EXEC_AVRDUDE
TMP1=`mktemp`; \ TMP1=`mktemp`; \
TMP2=`mktemp`; \ TMP2=`mktemp`; \
list_devices > $$TMP1; \ list_devices > $$TMP1; \
while [ -z $$USB ]; do \ while [ -z "$$USB" ]; do \
sleep 0.5; \ sleep 0.5; \
printf "."; \ printf "."; \
list_devices > $$TMP2; \ list_devices > $$TMP2; \