Sophie

Sophie

distrib > Mageia > 6 > armv7hl > media > core-updates-src > by-pkgid > 17292428ba98ba68f2c056979a62a3f3 > files > 5

arduino-1.6.5-3.1.mga6.src.rpm

Index: arduino-1.6.5/build/linux/arduino-add-groups
===================================================================
--- arduino-1.6.5/build/linux/arduino-add-groups
+++ arduino-1.6.5/build/linux/arduino-add-groups	2015-08-18 01:46:52.000000000 +0200
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+uid=${PKEXEC_UID:-${SUDO_UID}}
+
+if [[ -z $uid ]]; then
+    echo "Could not determine which user to add to the groups."
+    exit 2
+fi
+
+login=$(perl -e 'print((getpwuid shift)[0])' $uid)
+
+for group in dialout lock; do
+    if ! groups $login | grep -q " : .*\b$group\b"; then
+	missing_groups=${missing_groups:+$missing_groups,}$group
+    fi
+done
+
+if [[ -n $missing_groups ]]; then
+    exec usermod -a -G $missing_groups $login
+else
+    echo "No required groups are missing for this user."
+    exit 1
+fi
Index: arduino-1.6.5/build/linux/cc.arduino.add-groups.policy
===================================================================
--- arduino-1.6.5/build/linux/cc.arduino.add-groups.policy
+++ arduino-1.6.5/build/linux/cc.arduino.add-groups.policy	2015-08-18 01:47:59.000000000 +0200
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE policyconfig PUBLIC
+"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
+"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
+<policyconfig>
+
+  <vendor>Arduino</vendor>
+  <vendor_url>http://arduino.cc/</vendor_url>
+
+  <action id="cc.arduino.add-groups.policy">
+    <description>Add the user to groups required to access USB and serial ports.</description>
+    <message>Authentication is required to add the current user to the required groups.</message>
+    <icon_name>arduino</icon_name>
+    <defaults>
+      <allow_any>no</allow_any>
+      <allow_inactive>no</allow_inactive>
+      <allow_active>auth_admin</allow_active>
+    </defaults>
+    <annotate key="org.freedesktop.policykit.exec.path">/usr/libexec/arduino-add-groups</annotate>
+  </action>
+
+</policyconfig>
Index: arduino-1.6.5/build/linux/dist/arduino
===================================================================
--- arduino-1.6.5/build/linux/dist/arduino
+++ arduino-1.6.5/build/linux/dist/arduino	2015-08-18 01:54:13.000000000 +0200
@@ -1,5 +1,18 @@
 #!/usr/bin/env bash
 
+if [[ `id -u` -ne 0 ]]; then
+    for group in dialout lock; do
+	if ! groups $USER | grep -q " : .*\b$group\b"; then
+	    missing_groups="$missing_groups\n$group"
+	fi
+    done
+
+    if [[ -n $missing_groups ]] && zenity --title=Arduino --window-icon=/usr/share/icons/hicolor/16x16/apps/arduino.png --question --text "You need to be a member of the following groups to upload code to an Arduino microcontroller over the USB or serial ports:\n$missing_groups" --ok-label='Add' --cancel-label='Ignore'; then
+	pkexec /usr/bin/arduino-add-groups \
+	&& zenity --title=Arduino --window-icon=/usr/share/icons/hicolor/16x16/apps/arduino.png --info --text "You must log out and log in again before any changes will take effect."
+    fi
+fi
+
 CURDIR=`pwd`
 APPDIR="$(dirname -- "$(readlink -f -- "${0}")" )"