Hello again, Martin Pitt [2009-06-05 14:50 +0200]: > This debdiff applies it to the Debian package and also moves udev rule > creation from postinst to debian/rules. This is possible now, since > from udev 136 on, rules are shipped in /lib/udev/rules.d/, thus > avoid becoming conffiles.
As with the other patch, this unfortunately missed to set CAMLIBS, to ensure to load the libs from the package build tree. Fixed patch attached. Martin -- Martin Pitt | http://www.piware.de Ubuntu Developer (www.ubuntu.com) | Debian Developer (www.debian.org)
* Add patch 01_udev_rules_136: Add a new udev mode "136" to create contemporary udev rules which will avoid using the check_ptp_camera script, and provide udev DB tags for the hal deprecation. (Now accepted into upstream svn). * debian/libgphoto2-2.postinst: Drop udev rule creation. Udev rules are shipped in /lib now since udev 136, thus we can do it at build time. Drop debian/libgphoto2-2.dirs for this. * debian/rules: Create udev rules (with new mode 136), install them with dh_installudev. diff -u libgphoto2-2.4.6/debian/libgphoto2-2.postinst libgphoto2-2.4.6/debian/libgphoto2-2.postinst --- libgphoto2-2.4.6/debian/libgphoto2-2.postinst +++ libgphoto2-2.4.6/debian/libgphoto2-2.postinst @@ -16,25 +16,6 @@ rm -f /usr/share/hal/fdi/information/10freedesktop/10-camera-$PACKAGE.fdi rm -f /usr/share/hal/fdi/information/20thirdparty/$PACKAGE.fdi rm -f /usr/share/hal/fdi/information/10freedesktop/10-camera-$PACKAGE-device.fdi - - # create udev rules file - if [ -d /etc/udev/ ]; then - /usr/lib/$PACKAGE/print-camera-list udev-rules version 0.98 mode 0664 group plugdev > /etc/udev/$PACKAGE.rules - # install the udev file only once: - # - the first time the package is installed - # OR - the first time the package is upgraded from a version earlier than 2.1.6-5.1 - if [ -z "$2" ] || dpkg --compare-versions "$2" lt 2.1.6-5.1 ; then - ln -sf ../$PACKAGE.rules /etc/udev/rules.d/025_$PACKAGE.rules - fi - - if [ -L /etc/udev/rules.d/020_libgphoto2_generic-ptp_support.rules ]; then - rm -f /etc/udev/rules.d/020_libgphoto2_generic-ptp_support.rules - fi - - if [ -f /etc/udev/libgphoto2_generic-ptp_support.rules ]; then - rm -f /etc/udev/libgphoto2_generic-ptp_support.rules - fi - fi ;; abort-upgrade|abort-remove|abort-deconfigure) diff -u libgphoto2-2.4.6/debian/libgphoto2-2.postrm libgphoto2-2.4.6/debian/libgphoto2-2.postrm diff -u libgphoto2-2.4.6/debian/changelog libgphoto2-2.4.6/debian/changelog --- libgphoto2-2.4.6/debian/rules +++ libgphoto2-2.4.6/debian/rules @@ -85,8 +85,14 @@ debian/libgphoto2-port0/usr/share/doc/libgphoto2-port0 ifeq ($(DEB_HOST_ARCH_OS),linux) - install -D packaging/generic/check-ptp-camera debian/libgphoto2-$(major)/lib/udev/check-ptp-camera + # we don't need this any more with current udev rm debian/tmp/usr/lib/udev/check-ptp-camera + + # create udev rules + CAMLIBS=`ls -d debian/libgphoto2-$(major)/usr/lib/libgphoto2/2*` ./packaging/generic/print-camera-list udev-rules version 136 mode 0664 group plugdev > debian/libgphoto2-$(major).udev + dh_installudev + rm debian/libgphoto2-$(major).udev + -test -e debian/tmp/usr/lib/udev/check-mtp-device && \ mkdir -p debian/libgphoto2-port0/lib/udev && \ mv debian/tmp/usr/lib/udev/check-mtp-device \ @@ -122,7 +128,7 @@ dh_gencontrol -plibgphoto2-$(major)-dev dh_gencontrol -plibgphoto2-port0 ifeq (linux,$(DEB_HOST_ARCH_OS)) - dh_gencontrol -plibgphoto2-$(major) -- -Vudev-hotplug='udev (>= 0.113-1)' + dh_gencontrol -plibgphoto2-$(major) -- -Vudev-hotplug='udev (>= 0.136)' else dh_gencontrol -plibgphoto2-$(major) endif reverted: --- libgphoto2-2.4.6/debian/libgphoto2-2.dirs +++ libgphoto2-2.4.6.orig/debian/libgphoto2-2.dirs @@ -1 +0,0 @@ -etc/udev/rules.d diff -u libgphoto2-2.4.6/debian/patches/series libgphoto2-2.4.6/debian/patches/series --- libgphoto2-2.4.6/debian/patches/series +++ libgphoto2-2.4.6/debian/patches/series @@ -1,3 +1,4 @@ +01_udev_rules_136 10_disable_cache #11_hurd_no_path_max_bsdsource #45_increase_canon_timeout only in patch2: unchanged: --- libgphoto2-2.4.6.orig/debian/patches/01_udev_rules_136 +++ libgphoto2-2.4.6/debian/patches/01_udev_rules_136 @@ -0,0 +1,108 @@ +# Description: Add a new udev mode "136" to create contemporary udev rules which will avoid using the check_ptp_camera script, and provide udev DB tags for the hal deprecation. See http://lists.freedesktop.org/archives/devkit-devel/2009-June/000191.html for discussion. +# Upstream: http://sourceforge.net/tracker/?func=detail&aid=2801117&group_id=8874&atid=308874 (in svn head) +Index: libgphoto2-2.4.6/packaging/generic/print-camera-list.c +=================================================================== +--- libgphoto2-2.4.6.orig/packaging/generic/print-camera-list.c 2009-06-05 13:34:52.000000000 +0200 ++++ libgphoto2-2.4.6/packaging/generic/print-camera-list.c 2009-06-05 13:35:17.000000000 +0200 +@@ -366,12 +366,14 @@ + + typedef enum { + UDEV_PRE_0_98 = 0, +- UDEV_0_98 = 1 ++ UDEV_0_98 = 1, ++ UDEV_136 = 2 + } udev_version_t; + + static const StringFlagItem udev_version_t_map[] = { + { "pre-0.98", UDEV_PRE_0_98 }, + { "0.98", UDEV_0_98 }, ++ { "136", UDEV_136 }, + { NULL, 0 } + }; + +@@ -399,13 +401,20 @@ + "ACTION!=\"add\", GOTO=\"libgphoto2_rules_end\"\n\n", + /* UDEV_0_98 */ + "SUBSYSTEM!=\"usb|usb_device\", GOTO=\"libgphoto2_rules_end\"\n" ++ "ACTION!=\"add\", GOTO=\"libgphoto2_rules_end\"\n\n", ++ /* UDEV_136 */ ++ "SUBSYSTEM!=\"usb\", GOTO=\"libgphoto2_rules_end\"\n" ++ "ENV{DEVTYPE}!=\"usb_device\", GOTO=\"libgphoto2_rules_end\"\n" + "ACTION!=\"add\", GOTO=\"libgphoto2_rules_end\"\n\n" ++ "ENV{ID_USB_INTERFACES}==\"\", IMPORT{program}=\"usb_id --export %%p\"\n\n" + }; + static const char * const usbcam_strings[] = { + /* UDEV_PRE_0_98 */ +- "SYSFS{idVendor}==\"%04x\", SYSFS{idProduct}==\"%04x\", ", ++ "SYSFS{idVendor}==\"%04x\", SYSFS{idProduct}==\"%04x\"", + /* UDEV_0_98 */ +- "ATTRS{idVendor}==\"%04x\", ATTRS{idProduct}==\"%04x\", ", ++ "ATTRS{idVendor}==\"%04x\", ATTRS{idProduct}==\"%04x\"", ++ /* UDEV_136 */ ++ "ATTRS{idVendor}==\"%04x\", ATTRS{idProduct}==\"%04x\", ENV{ID_GPHOTO2}=\"1\", ENV{GPHOTO2_DRIVER}=\"proprietary\"" + }; + udev_persistent_data_t *pdata; + pdata = calloc(1, sizeof(udev_persistent_data_t)); +@@ -444,7 +453,8 @@ + && pdata->mode == NULL + && pdata->group == NULL + && pdata->owner == NULL +- && pdata->script == NULL) { ++ && pdata->script == NULL ++ && pdata->version <= UDEV_0_98) { + FATAL("Either <script> or <mode,group,owner> parameters must be given."); + } + if ((pdata->script != NULL) && (pdata->mode != NULL +@@ -547,7 +557,11 @@ + + if (flags & GP_USB_HOTPLUG_MATCH_INT_CLASS) { + if ((flags & (GP_USB_HOTPLUG_MATCH_INT_CLASS|GP_USB_HOTPLUG_MATCH_INT_SUBCLASS|GP_USB_HOTPLUG_MATCH_INT_PROTOCOL)) == (GP_USB_HOTPLUG_MATCH_INT_CLASS|GP_USB_HOTPLUG_MATCH_INT_SUBCLASS|GP_USB_HOTPLUG_MATCH_INT_PROTOCOL)) { +- printf("PROGRAM=\"check-ptp-camera %02d/%02d/%02d\", ", class, subclass, proto); ++ if (pdata->version == UDEV_136) { ++ printf("ENV{ID_USB_INTERFACES}==\"*:%02d%02d%02d:*\", ENV{ID_GPHOTO2}=\"1\", ENV{GPHOTO2_DRIVER}=\"PTP\"", class, subclass, proto); ++ } else { ++ printf("PROGRAM=\"check-ptp-camera %02d/%02d/%02d\"", class, subclass, proto); ++ } + has_valid_rule = 1; + } else { + if (class == 666) { +@@ -568,6 +582,9 @@ + } + } + if (has_valid_rule != 0) { ++ if (pdata->script != NULL || pdata->mode != NULL || pdata->owner != NULL || pdata->group != NULL) ++ printf(", "); ++ + if (pdata->script != NULL) { + printf("RUN+=\"%s\"\n", pdata->script); + } else if (pdata->mode != NULL || pdata->owner != NULL || pdata->group != NULL) { +@@ -589,7 +606,8 @@ + printf("\n"); + } else { + printf("\n"); +- FATAL("udev_camera_func(): illegal branch"); ++ if (pdata->version < UDEV_136) ++ FATAL("udev_camera_func(): illegal branch"); + } + } + return 0; +@@ -1118,12 +1136,16 @@ + fdi_device_end_func + }, + {"udev-rules", +- "udev rules file either for pre-0.98 or 0.98 and later", +- "Put it into /etc/udev/rules.d/90-libgphoto2.rules, set file mode, owner, group\n" ++ "udev rules file", ++ "For modes \"pre-0.98\" and \"0.98\" (and later), put it into\n" ++ " /etc/udev/rules.d/90-libgphoto2.rules, set file mode, owner, group\n" + " or add script to run. This rule files also uses the\n" + " check-ptp-camera script included in libgphoto2 source. Either put it to\n" + " /lib/udev/check-ptp-camera or adjust the path in the generated rules file.\n" +- " If you give a script parameter, the mode, owner, group parameters will be ignored.", ++ " If you give a script parameter, the mode, owner, group parameters will be ignored.\n" ++ " For mode \"136\" put it into /lib/udev/rules.d/40-libgphoto2.rules;\n" ++ " you can still use mode/owner/group, but the preferred mode of operation\n" ++ " is to use udev-extras for dynamic access permissions.\n", + "[script <PATH_TO_SCRIPT>|version <version>|mode <mode>|owner <owner>|group <group>]*", + udev_begin_func, + udev_camera_func,
signature.asc
Description: Digital signature