wiringPi: Add udev rules to correct /dev/gpiomem permission

Signed-off-by: Yang Deokgyu <secugyu@gmail.com>
This commit is contained in:
Yang Deokgyu
2019-09-18 16:47:23 +09:00
parent d848750e6a
commit 2ef868b961
6 changed files with 108 additions and 1 deletions

38
build
View File

@@ -43,7 +43,36 @@ check_make_ok() {
fi
}
configure_gpiomem() {
GPIOMEM="/dev/gpiomem"
if [ -z $1 ] && [ "$(stat -c "%a %G" "$GPIOMEM")" != "660"*"odroid" ]; then
case "$(echo $hardware | tr [:upper:] [:lower:])" in
*xu4)
$sudo cp -f udev/rules.d/99-odroid-wiringpi-exynos.rules /etc/udev/rules.d/
;;
*c1|*c2|*n2)
$sudo cp -f udev/rules.d/99-odroid-wiringpi-aml.rules /etc/udev/rules.d/
;;
*)
echo "This system seems not ODROID"
;;
esac
echo "Reload udev..."
[ -x "$(command -v udevadm)" ] \
&& $sudo udevadm trigger \
|| echo "udevadm not found. Please reboot to take effect"
elif [ "$1" = "uninstall" ]; then
$sudo rm -f /etc/udev/rules.d/99-odroid-wiringpi-*
else
echo "Not found $GPIOMEM"
echo "You will not be able to use WiringPi without root permission"
fi
}
sudo=${WIRINGPI_SUDO-sudo}
hardware=$(fgrep Hardware /proc/cpuinfo | head -1 | awk '{ printf("%s %s %s\n", $3, $4, $5) }' | xargs)
if [ x$1 = "xclean" ]; then
cd wiringPi
@@ -74,6 +103,9 @@ if [ x$1 = "xuninstall" ]; then
echo -n "DevLib: " ; $sudo make uninstall
cd ../gpio
echo -n "gpio: " ; $sudo make uninstall
cd ..
echo -n "Deconfigure /dev/gpiomem" ; configure_gpiomem uninstall
echo
exit
fi
@@ -104,7 +136,6 @@ fi
echo "====================="
echo
hardware=`fgrep Hardware /proc/cpuinfo | head -1 | awk '{ print $3 }'`
# if [ x$hardware != "xBCM2708" ]; then
# echo ""
@@ -160,6 +191,11 @@ fi
$sudo make install
check_make_ok
echo
echo "Configure /dev/gpiomem"
cd ..
configure_gpiomem
# echo
# echo "wiringPi Daemon"
# cd ../wiringPiD

View File

@@ -2,3 +2,4 @@ debian/tmp/usr/bin
debian/tmp/usr/man usr/share
README.TXT usr/share/doc/wiringpi
People usr/share/doc/wiringpi
udev/rules.d tmp/odroid-wiringpi

47
debian/odroid-wiringpi.postinst vendored Normal file
View File

@@ -0,0 +1,47 @@
#!/bin/sh
set -e
msg() {
echo "odroid-wiringpi: $1"
}
case "$1" in
configure)
if [ -c "/dev/gpiomem" ] && [ "$(stat -c "%a %G" "/dev/gpiomem")" != "660"*"odroid" ]; then
hardware=$(fgrep Hardware /proc/cpuinfo | head -1 | awk '{ printf("%s %s %s\n", $3, $4, $5) }' | xargs)
case "$(echo $hardware | tr [:upper:] [:lower:])" in
*xu4)
cp -f /tmp/odroid-wiringpi/rules.d/99-odroid-wiringpi-exynos.rules /etc/udev/rules.d
;;
*c1|*c2|*n2)
cp -f /tmp/odroid-wiringpi/rules.d/99-odroid-wiringpi-aml.rules /etc/udev/rules.d
;;
*)
msg "This system seems not ODROID"
;;
esac
msg "Reload udev..."
[ -x "$(command -v udevadm)" ] \
&& udevadm trigger \
|| msg "udevadm not found. Please reboot to take effect"
else
msg "Not found $GPIOMEM"
msg "You will not be able to use WiringPi without root permission"
fi
msg "Remove temporary files..."
rm -rf /tmp/odroid-wiringpi
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
exit 0

19
debian/odroid-wiringpi.postrm vendored Normal file
View File

@@ -0,0 +1,19 @@
#!/bin/sh
set -e
case "$1" in
purge)
rm -f /etc/udev/rules.d/99-odroid-wiringpi-*
;;
remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 1
;;
esac
exit 0

View File

@@ -0,0 +1,2 @@
# /dev/gpiomem
SUBSYSTEM=="aml-gpiomem", GROUP="odroid", MODE="0660"

View File

@@ -0,0 +1,2 @@
# /dev/gpiomem
SUBSYSTEM=="exynos-gpiomem", GROUP="odroid", MODE="0660"