diff options
author | gls <gls@pkgsrc.org> | 2010-11-15 19:04:53 +0000 |
---|---|---|
committer | gls <gls@pkgsrc.org> | 2010-11-15 19:04:53 +0000 |
commit | d243f800b1b3bf5db83059139e347c1075f6ed49 (patch) | |
tree | 646c321116a2fe79d0f5d0903a1e6bc2f66e6590 /graphics/shotwell/patches | |
parent | e6226fd717830e00333ea0553ca10dbd872c4995 (diff) | |
download | pkgsrc-d243f800b1b3bf5db83059139e347c1075f6ed49.tar.gz |
Import shotwell 0.7.2 into the NetBSD Packages collection.
Shotwell is a photo organizer for the GNOME desktop. It lets you import photos
from disk or camera, organize them in various ways, view them in full-window or
fullscreen mode, and export them to share with others.
Diffstat (limited to 'graphics/shotwell/patches')
-rw-r--r-- | graphics/shotwell/patches/patch-aa | 113 | ||||
-rw-r--r-- | graphics/shotwell/patches/patch-ab | 380 |
2 files changed, 493 insertions, 0 deletions
diff --git a/graphics/shotwell/patches/patch-aa b/graphics/shotwell/patches/patch-aa new file mode 100644 index 00000000000..7661276ff46 --- /dev/null +++ b/graphics/shotwell/patches/patch-aa @@ -0,0 +1,113 @@ +$NetBSD: patch-aa,v 1.1.1.1 2010/11/15 19:04:53 gls Exp $ + +--- Makefile.orig 2010-09-10 22:55:54.000000000 +0000 ++++ Makefile +@@ -124,11 +124,6 @@ SRC_FILES = \ + FSpotDatabaseDriver.vala \ + FSpotDatabaseTables.vala + +-ifndef LINUX +-SRC_FILES += \ +- GConf.vala +-endif +- + VAPI_FILES = \ + libexif.vapi \ + libgphoto2.vapi \ +@@ -268,6 +263,7 @@ EXT_PKGS = \ + gee-1.0 \ + gtk+-2.0 \ + glib-2.0 \ ++ gmodule-2.0 \ + libexif \ + sqlite3 \ + gexiv2 +@@ -275,7 +271,6 @@ EXT_PKGS = \ + LIBRAW_PKG = \ + libraw + +-ifdef LINUX + EXT_PKGS += \ + gconf-2.0 \ + libgphoto2 \ +@@ -283,10 +278,8 @@ EXT_PKGS += \ + libxml-2.0 \ + unique-1.0 \ + webkit-1.0 \ +- gudev-1.0 \ + dbus-glib-1 \ + gdk-x11-2.0 +-endif + + # libraw is handled separately (see note below); when libraw-config is no longer needed, the version + # should be added to this list +@@ -301,7 +294,6 @@ EXT_PKG_VERSIONS = \ + LIBRAW_VERSION = \ + 0.9.0 + +-ifdef LINUX + EXT_PKG_VERSIONS += \ + gconf-2.0 >= 2.22.0 \ + libgphoto2 >= 2.4.2 \ +@@ -309,9 +301,7 @@ EXT_PKG_VERSIONS += \ + libxml-2.0 >= 2.6.32 \ + unique-1.0 >= 1.0.0 \ + webkit-1.0 >= 1.1.5 \ +- gudev-1.0 >= 145 \ + dbus-glib-1 >= 0.80 +-endif + + PKGS = $(EXT_PKGS) $(LOCAL_PKGS) $(LIBRAW_PKG) + +@@ -366,7 +356,7 @@ ifndef BUILD_DEBUG + # -mwindows prevents a console window from appearing when we run Shotwell, but also hides + # all logging/debugging output, so we specify it only in a release build. + VALA_LDFLAGS += -mwindows +-endif ++endif + + shotwell.res: windows/shotwell.rc + windres windows/shotwell.rc -O coff -o shotwell.res +@@ -470,7 +460,6 @@ endif + ifndef DISABLE_DESKTOP_UPDATE + -update-desktop-database || : + endif +-ifdef LINUX + ifndef DISABLE_SCHEMAS_INSTALL + GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` gconftool-2 --makefile-install-rule misc/shotwell.schemas + else +@@ -487,7 +476,6 @@ ifndef DISABLE_HELP_INSTALL + mkdir -p $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell/C/figures + $(INSTALL_DATA) $(EXPANDED_HELP_IMAGES) $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell/C/figures + endif +-endif + -$(foreach lang,$(SUPPORTED_LANGUAGES),`mkdir -p $(SYSTEM_LANG_DIR)/$(lang)/LC_MESSAGES ; \ + $(INSTALL_DATA) $(LOCAL_LANG_DIR)/$(lang)/LC_MESSAGES/shotwell.mo \ + $(SYSTEM_LANG_DIR)/$(lang)/LC_MESSAGES/shotwell.mo`) +@@ -518,7 +506,6 @@ endif + + $(VALA_STAMP): $(EXPANDED_SRC_FILES) $(EXPANDED_VAPI_FILES) $(EXPANDED_SRC_HEADER_FILES) Makefile \ + $(CONFIG_IN) +- @ ./minver `valac --version | awk '{print $$2}'` $(MIN_VALAC_VERSION) || ( echo 'Shotwell requires Vala compiler $(MIN_VALAC_VERSION) or greater. You are running' `valac --version` '\b.'; exit 1 ) + ifndef ASSUME_PKGS + ifdef EXT_PKG_VERSIONS + @pkg-config --print-errors --exists '$(EXT_PKG_VERSIONS)' +@@ -546,15 +533,15 @@ $(EXPANDED_C_FILES): $(VALA_STAMP) + @ + + $(EXPANDED_OBJ_FILES): %.o: %.c $(CONFIG_IN) Makefile +- $(CC) -c $(VALA_CFLAGS) `$(LIBRAW_CONFIG) --cflags` $(CFLAGS) -o $@ $< ++ $(CC) -c $(VALA_CFLAGS) $(CFLAGS) `pkg-config --cflags raw` -o $@ $< + + $(PROGRAM): $(EXPANDED_OBJ_FILES) $(RESOURCES) $(LANG_STAMP) +- $(CC) $(EXPANDED_OBJ_FILES) $(CFLAGS) $(RESOURCES) $(VALA_LDFLAGS) `$(LIBRAW_CONFIG) --libs` $(EXPORT_FLAGS) -o $@ ++ $(CC) $(EXPANDED_OBJ_FILES) $(CFLAGS) $(RESOURCES) $(VALA_LDFLAGS) $(LDFLAGS) `pkg-config --libs raw` $(EXPORT_FLAGS) -o $@ + + glade: lib$(PROGRAM).so + + lib$(PROGRAM).so: $(EXPANDED_OBJ_FILES) $(RESOURCES) $(LANG_STAMP) +- $(CC) $(EXPANDED_OBJ_FILES) $(CFLAGS) $(RESOURCES) $(VALA_LDFLAGS) `$(LIBRAW_CONFIG) --libs` $(EXPORT_FLAGS) -shared -o $@ ++ $(CC) $(EXPANDED_OBJ_FILES) $(CFLAGS) $(RESOURCES) $(VALA_LDFLAGS) $(LDFLAGS) `pkg-config --libs raw` $(EXPORT_FLAGS) -shared -o $@ + + shotwell-setup-$(VERSION).exe: $(PROGRAM) windows/winstall.iss + iscc windows\winstall.iss diff --git a/graphics/shotwell/patches/patch-ab b/graphics/shotwell/patches/patch-ab new file mode 100644 index 00000000000..0ac9426fa03 --- /dev/null +++ b/graphics/shotwell/patches/patch-ab @@ -0,0 +1,380 @@ +$NetBSD: patch-ab,v 1.1.1.1 2010/11/15 19:04:53 gls Exp $ + +--- src/CameraTable.vala.orig 2010-09-10 22:55:55.000000000 +0000 ++++ src/CameraTable.vala +@@ -1,7 +1,7 @@ + /* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License +- * (version 2.1 or later). See the COPYING file in this distribution. ++ * (version 2.1 or later). See the COPYING file in this distribution. + */ + + #if !NO_CAMERA +@@ -9,7 +9,7 @@ + public class DiscoveredCamera { + public GPhoto.Camera gcamera; + public string uri; +- ++ + public DiscoveredCamera(GPhoto.Camera gcamera, string uri) { + this.gcamera = gcamera; + this.uri = uri; +@@ -18,70 +18,66 @@ public class DiscoveredCamera { + + public class CameraTable { + private const int UPDATE_DELAY_MSEC = 500; +- ++ + // list of subsystems being monitored for events + private const string[] SUBSYSTEMS = { "usb", "block", null }; +- ++ + private static CameraTable instance = null; +- +- private GUdev.Client client = new GUdev.Client(SUBSYSTEMS); ++ + private OneShotScheduler camera_update_scheduler = null; + private GPhoto.Context null_context = new GPhoto.Context(); + private GPhoto.CameraAbilitiesList abilities_list; +- ++ + private Gee.HashMap<string, DiscoveredCamera> camera_map = new Gee.HashMap<string, DiscoveredCamera>( + str_hash, str_equal, direct_equal); + + public signal void camera_added(DiscoveredCamera camera); +- ++ + public signal void camera_removed(DiscoveredCamera camera); +- ++ + private CameraTable() { + camera_update_scheduler = new OneShotScheduler("CameraTable update scheduler", + on_update_cameras); +- +- // listen for interesting events on the specified subsystems +- client.uevent.connect(on_udev_event); +- ++ + // because loading the camera abilities list takes a bit of time and slows down app + // startup, delay loading it (and notifying any observers) for a small period of time, + // after the dust has settled + Timeout.add(500, delayed_init); + } +- ++ + private bool delayed_init() { + try { + init_camera_table(); + } catch (GPhotoError err) { + warning("Unable to initialize camera table: %s", err.message); +- ++ + return false; + } +- ++ + try { + update_camera_table(); + } catch (GPhotoError err) { + warning("Unable to update camera table: %s", err.message); + } +- ++ + return false; + } +- ++ + public static CameraTable get_instance() { + if (instance == null) + instance = new CameraTable(); +- ++ + return instance; + } +- ++ + public Gee.Iterable<DiscoveredCamera> get_cameras() { + return camera_map.values; + } +- ++ + public int get_count() { + return camera_map.size; + } +- ++ + public DiscoveredCamera? get_for_uri(string uri) { + return camera_map.get(uri); + } +@@ -90,43 +86,18 @@ public class CameraTable { + if (res != GPhoto.Result.OK) + throw new GPhotoError.LIBRARY("[%d] Unable to %s: %s", (int) res, op, res.as_string()); + } +- ++ + private void init_camera_table() throws GPhotoError { + do_op(GPhoto.CameraAbilitiesList.create(out abilities_list), "create camera abilities list"); + do_op(abilities_list.load(null_context), "load camera abilities list"); + } +- ++ + private string[] get_all_usb_cameras() { + string[] cameras = new string[0]; +- +- GLib.List<GUdev.Device> device_list = client.query_by_subsystem(null); +- foreach (GUdev.Device device in device_list) { +- string device_file = device.get_device_file(); +- if( +- // only keep devices that have a non-null device file and that +- // have both the ID_GPHOTO2 and GPHOTO2_DRIVER properties set +- (device_file != null) && +- (device.has_property("ID_GPHOTO2")) && +- (device.has_property("GPHOTO2_DRIVER")) +- ) { +- int camera_bus, camera_device; +- // extract the bus and device IDs from the device file string +- // TODO: is it safe to parse the absolute path or should we be +- // smarter and use a regex to only pick up the end of the path? +- if (device_file.scanf("/dev/bus/usb/%d/%d", out camera_bus, out camera_device) < 2) { +- critical("get_all_usb_cameras: Failed to scanf device file %s", device_file); +- +- continue; +- } +- string camera = "usb:%.3d,%.3d".printf(camera_bus, camera_device); +- debug("USB camera detected at %s", camera); +- cameras += camera; +- } +- } +- ++ + return cameras; + } +- ++ + // USB (or libusb) is a funny beast; if only one USB device is present (i.e. the camera), + // then a single camera is detected at port usb:. However, if multiple USB devices are + // present (including non-cameras), then the first attached camera will be listed twice, +@@ -135,59 +106,59 @@ public class CameraTable { + // + // This function gleans the full port name of a particular port, even if it's the unadorned + // "usb:", by using GUdev. +- private bool usb_esp(int current_camera_count, string[] usb_cameras, string port, ++ private bool usb_esp(int current_camera_count, string[] usb_cameras, string port, + out string full_port) { + // sanity + assert(current_camera_count > 0); +- ++ + debug("USB ESP: current_camera_count=%d port=%s", current_camera_count, port); +- ++ + // if GPhoto detects one camera, and USB reports one camera, all is swell + if (current_camera_count == 1 && usb_cameras.length == 1) { + full_port = usb_cameras[0]; +- ++ + debug("USB ESP: port=%s full_port=%s", port, full_port); +- ++ + return true; + } + + // with more than one camera, skip the mirrored "usb:" port + if (port == "usb:") { + debug("USB ESP: Skipping %s", port); +- ++ + return false; + } +- ++ + // parse out the bus and device ID + int bus, device; + if (port.scanf("usb:%d,%d", out bus, out device) < 2) { + critical("USB ESP: Failed to scanf %s", port); +- ++ + return false; + } +- ++ + foreach (string usb_camera in usb_cameras) { + int camera_bus, camera_device; + if (usb_camera.scanf("usb:%d,%d", out camera_bus, out camera_device) < 2) { + critical("USB ESP: Failed to scanf %s", usb_camera); +- ++ + continue; + } +- ++ + if ((bus == camera_bus) && (device == camera_device)) { + full_port = port; +- ++ + debug("USB ESP: port=%s full_port=%s", port, full_port); + + return true; + } + } +- ++ + debug("USB ESP: No matching bus/device found for port=%s", port); +- ++ + return false; + } +- ++ + public static string get_port_uri(string port) { + return "gphoto2://[%s]/".printf(port); + } +@@ -201,13 +172,13 @@ public class CameraTable { + GPhoto.CameraList camera_list; + do_op(GPhoto.CameraList.create(out camera_list), "create camera list"); + do_op(abilities_list.detect(port_info_list, camera_list, null_context), "detect cameras"); +- ++ + Gee.HashMap<string, string> detected_map = new Gee.HashMap<string, string>(str_hash, str_equal, + str_equal); +- ++ + // walk the USB chain and find all PTP cameras; this is necessary for usb_esp + string[] usb_cameras = get_all_usb_cameras(); +- ++ + // go through the detected camera list and glean their ports + for (int ctr = 0; ctr < camera_list.count(); ctr++) { + string name; +@@ -215,55 +186,55 @@ public class CameraTable { + + string port; + do_op(camera_list.get_value(ctr, out port), "get detected camera port"); +- ++ + debug("Detected %d/%d %s @ %s", ctr + 1, camera_list.count(), name, port); +- ++ + // do some USB ESP, skipping ports that cannot be deduced + if (port.has_prefix("usb:")) { + string full_port; + if (!usb_esp(camera_list.count(), usb_cameras, port, out full_port)) + continue; +- ++ + port = full_port; + } + + detected_map.set(port, name); + } +- ++ + // find cameras that have disappeared + DiscoveredCamera[] missing = new DiscoveredCamera[0]; + foreach (DiscoveredCamera camera in camera_map.values) { + GPhoto.PortInfo port_info; +- do_op(camera.gcamera.get_port_info(out port_info), ++ do_op(camera.gcamera.get_port_info(out port_info), + "retrieve missing camera port information"); +- ++ + GPhoto.CameraAbilities abilities; + do_op(camera.gcamera.get_abilities(out abilities), "retrieve camera abilities"); +- ++ + if (detected_map.has_key(port_info.path)) { + debug("Found camera for %s @ %s in detected map", abilities.model, port_info.path); +- ++ + continue; + } +- ++ + debug("%s @ %s missing", abilities.model, port_info.path); +- ++ + missing += camera; + } +- ++ + // have to remove from hash map outside of iterator + foreach (DiscoveredCamera camera in missing) { + GPhoto.PortInfo port_info; + do_op(camera.gcamera.get_port_info(out port_info), + "retrieve missing camera port information"); +- ++ + GPhoto.CameraAbilities abilities; + do_op(camera.gcamera.get_abilities(out abilities), "retrieve missing camera abilities"); + + debug("Removing from camera table: %s @ %s", abilities.model, port_info.path); + + camera_map.unset(get_port_uri(port_info.path)); +- ++ + camera_removed(camera); + } + +@@ -275,50 +246,42 @@ public class CameraTable { + if (camera_map.has_key(uri)) { + // already known about + debug("%s @ %s already registered, skipping", name, port); +- ++ + continue; + } +- ++ + int index = port_info_list.lookup_path(port); + if (index < 0) + do_op((GPhoto.Result) index, "lookup port %s".printf(port)); +- ++ + GPhoto.PortInfo port_info; + do_op(port_info_list.get_info(index, out port_info), "get port info for %s".printf(port)); +- ++ + // this should match, every time + assert(port == port_info.path); +- ++ + index = abilities_list.lookup_model(name); + if (index < 0) + do_op((GPhoto.Result) index, "lookup camera model %s".printf(name)); + + GPhoto.CameraAbilities camera_abilities; +- do_op(abilities_list.get_abilities(index, out camera_abilities), ++ do_op(abilities_list.get_abilities(index, out camera_abilities), + "lookup camera abilities for %s".printf(name)); +- ++ + GPhoto.Camera gcamera; + do_op(GPhoto.Camera.create(out gcamera), "create camera object for %s".printf(name)); + do_op(gcamera.set_abilities(camera_abilities), "set camera abilities for %s".printf(name)); + do_op(gcamera.set_port_info(port_info), "set port info for %s on %s".printf(name, port)); +- ++ + debug("Adding to camera table: %s @ %s", name, port); +- ++ + DiscoveredCamera camera = new DiscoveredCamera(gcamera, uri); + camera_map.set(uri, camera); +- ++ + camera_added(camera); + } + } +- +- private void on_udev_event(string action, GUdev.Device device) { +- debug("udev event: %s on %s", action, device.get_name()); +- +- // Device add/removes often arrive in pairs; this allows for a single +- // update to occur when they come in all at once +- camera_update_scheduler.after_timeout(UPDATE_DELAY_MSEC, true); +- } +- ++ + private void on_update_cameras() { + try { + get_instance().update_camera_table(); |