diff --git a/build b/build index f1049de..c42e28b 100755 --- a/build +++ b/build @@ -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 diff --git a/debian/odroid-wiringpi.install b/debian/odroid-wiringpi.install index 41ae22d..11c034a 100644 --- a/debian/odroid-wiringpi.install +++ b/debian/odroid-wiringpi.install @@ -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 diff --git a/debian/odroid-wiringpi.postinst b/debian/odroid-wiringpi.postinst new file mode 100644 index 0000000..640b9ca --- /dev/null +++ b/debian/odroid-wiringpi.postinst @@ -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 diff --git a/debian/odroid-wiringpi.postrm b/debian/odroid-wiringpi.postrm new file mode 100644 index 0000000..3284f91 --- /dev/null +++ b/debian/odroid-wiringpi.postrm @@ -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 diff --git a/udev/rules.d/99-odroid-wiringpi-aml.rules b/udev/rules.d/99-odroid-wiringpi-aml.rules new file mode 100644 index 0000000..29fc315 --- /dev/null +++ b/udev/rules.d/99-odroid-wiringpi-aml.rules @@ -0,0 +1,2 @@ +# /dev/gpiomem +SUBSYSTEM=="aml-gpiomem", GROUP="odroid", MODE="0660" \ No newline at end of file diff --git a/udev/rules.d/99-odroid-wiringpi-exynos.rules b/udev/rules.d/99-odroid-wiringpi-exynos.rules new file mode 100644 index 0000000..108c909 --- /dev/null +++ b/udev/rules.d/99-odroid-wiringpi-exynos.rules @@ -0,0 +1,2 @@ +# /dev/gpiomem +SUBSYSTEM=="exynos-gpiomem", GROUP="odroid", MODE="0660" \ No newline at end of file