Skip to content

Commit bf7f1de

Browse files
committed
Configure post-install script to only operate when platform installed on Linux machine
The Arduino Boards Manager automatically executes the `post_install.sh` script during installation of the platform on a non-Windows machine. The platform's post-install script is Linux-specific, but no provisions were made in the script code for the fact that it is also executed on macOS machines. Previously, this was fairly innocuous because, although misleading, the message printed to the output during the platform installation was short and cryptic and thus easy for the average macOS user to ignore: ``` Configuring platform. Please run as root ``` Since it is important for Linux users to manually run the script and the previous message did not effectively communicate that, the script was recently modified to print helpful instructions during the Boards Manager installation. The fact that the script is also executed on macOS machines was not considered in that work. This meant that, although an improvement for the Linux user experience was accomplished, the macOS user experience was worsened because those users were then presented with more prominent and detailed inappropriate instructions. For example: ``` Configuring platform. You might need to configure permissions for uploading. To do so, run the following command from the terminal: sudo "/Users/per/Library/Arduino15/packages/arduino/hardware/renesas_uno/42.0.0/post_install.sh" ``` The problem is fixed by adjusting the script so that the script simply returns silently if it is invoked on a non-Linux machine. macOS users will now only see the following benign message in the output during the Boards Manager installation: ``` Configuring platform. ``` The POSIX-compliant shell code for determining the operating system the script is running under was derived from the Arduino CLI application's cross-platform installation script, which has withstood the test of time after years of use by a large user base.
1 parent 0af3cba commit bf7f1de

File tree

1 file changed

+24
-18
lines changed

1 file changed

+24
-18
lines changed

post_install.sh

+24-18
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,31 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", MODE:="0666"
99
EOF
1010
}
1111

12-
if [ "$EUID" -ne 0 ]; then
13-
if [ -e "${PWD}/post_install.sh" ]; then
14-
echo
15-
echo "You might need to configure permissions for uploading."
16-
echo "To do so, run the following command from the terminal:"
17-
echo "sudo \"${PWD}/post_install.sh\""
18-
echo
19-
else
20-
# Script was executed from another path. It is assumed this will only occur when user is executing script directly.
21-
# So it is not necessary to provide the command line.
22-
echo "Please run as root"
12+
OS="$(uname -s)"
13+
case "$OS" in
14+
Linux*)
15+
if [ "$EUID" -ne 0 ]; then
16+
if [ -e "${PWD}/post_install.sh" ]; then
17+
echo
18+
echo "You might need to configure permissions for uploading."
19+
echo "To do so, run the following command from the terminal:"
20+
echo "sudo \"${PWD}/post_install.sh\""
21+
echo
22+
else
23+
# Script was executed from another path. It is assumed this will only occur when user is executing script directly.
24+
# So it is not necessary to provide the command line.
25+
echo "Please run as root"
26+
fi
27+
28+
exit
2329
fi
2430

25-
exit
26-
fi
31+
arduino_renesas_core_rules > /etc/udev/rules.d/60-arduino-renesas.rules
2732

28-
arduino_renesas_core_rules > /etc/udev/rules.d/60-arduino-renesas.rules
33+
# reload udev rules
34+
echo "Reload rules..."
35+
udevadm trigger
36+
udevadm control --reload-rules
2937

30-
# reload udev rules
31-
echo "Reload rules..."
32-
udevadm trigger
33-
udevadm control --reload-rules
38+
;;
39+
esac

0 commit comments

Comments
 (0)