[arch-commits] Commit in deepin-daemon/trunk (PKGBUILD cgo-pointer.patch)
Felix Yan
felixonmars at archlinux.org
Thu Sep 29 07:04:26 UTC 2016
Date: Thursday, September 29, 2016 @ 07:04:26
Author: felixonmars
Revision: 190772
upgpkg: deepin-daemon 3.0.22-1
Modified:
deepin-daemon/trunk/PKGBUILD
Deleted:
deepin-daemon/trunk/cgo-pointer.patch
-------------------+
PKGBUILD | 13 --
cgo-pointer.patch | 285 ----------------------------------------------------
2 files changed, 4 insertions(+), 294 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2016-09-29 03:08:44 UTC (rev 190771)
+++ PKGBUILD 2016-09-29 07:04:26 UTC (rev 190772)
@@ -4,12 +4,12 @@
# Contributor: Xu Fasheng <fasheng.xu[AT]gmail.com>
pkgname=deepin-daemon
-pkgver=3.0.21
+pkgver=3.0.22
_golibver=0.5.1
_deepinapiver=3.0.14
_dbusfactoryver=3.0.6
_girgeneratorver=0.9.5
-pkgrel=2
+pkgrel=1
pkgdesc='Daemon handling the DDE session settings'
arch=('i686' 'x86_64')
url="https://github.com/linuxdeepin/dde-daemon"
@@ -32,8 +32,7 @@
"git+https://cr.deepin.io/dbus-factory.git#tag=$_dbusfactoryver"
"git+https://cr.deepin.io/go-gir-generator.git#tag=$_girgeneratorver"
'deepin-daemon.sysusers'
- 'polkit-gnome-authentication-agent-1-deepin.desktop'
- 'cgo-pointer.patch')
+ 'polkit-gnome-authentication-agent-1-deepin.desktop')
sha256sums=('SKIP'
'SKIP'
'SKIP'
@@ -40,16 +39,12 @@
'SKIP'
'SKIP'
'4482f2c82c3652040021dd43515f131184a0417e341dc37db487117012245e25'
- '014f4c1111530e7556c3a83ab4409ae7dd47a87550004128ed8b7d02c58357e7'
- 'da3dc6f5c0d2637072a45aedcd7b3e1af423918533b6d68ae23ca213d8419f48')
+ '014f4c1111530e7556c3a83ab4409ae7dd47a87550004128ed8b7d02c58357e7')
prepare() {
sed -i "s|\"\${GOLDFLAGS}\"|\"\${GOLDFLAGS} $CFLAGS $LDFLAGS\"|" dde-daemon/Makefile
sed -i 's| generator$||' go-gir-generator/makefile
- # https://github.com/linuxdeepin/dde-daemon/issues/26
- (cd dde-daemon; patch -p1 -i ../cgo-pointer.patch)
-
export GOPATH="$srcdir/build"
mkdir -p build/src/pkg.deepin.io/{lib,dde/api}
cp -a go-lib/* build/src/pkg.deepin.io/lib
Deleted: cgo-pointer.patch
===================================================================
--- cgo-pointer.patch 2016-09-29 03:08:44 UTC (rev 190771)
+++ cgo-pointer.patch 2016-09-29 07:04:26 UTC (rev 190772)
@@ -1,285 +0,0 @@
-From b4a0d558772c81818ae9a02f80d05515c2ae9e7f Mon Sep 17 00:00:00 2001
-From: jouyouyun <jouyouwen717 at gmail.com>
-Date: Wed, 24 Aug 2016 16:52:33 +0800
-Subject: [PATCH] mounts: Fix cgo pointer crash
-
-Because of 'AsyncReadyCallback' will cause process crash, so replace it with 'gvfs-mount'.
-
-Change-Id: I10e7b3de40e772c07b7b5ab46fe11da00c209da4
----
- mounts/ifc.go | 158 ++++++++++++++++++++++++++++--------------------------
- mounts/monitor.go | 11 +---
- 2 files changed, 82 insertions(+), 87 deletions(-)
-
-diff --git a/mounts/ifc.go b/mounts/ifc.go
-index 1225dbb..e893a31 100644
---- a/mounts/ifc.go
-+++ b/mounts/ifc.go
-@@ -11,8 +11,7 @@ package mounts
-
- import (
- "fmt"
-- "gir/gio-2.0"
-- "gir/gobject-2.0"
-+ "os/exec"
- . "pkg.deepin.io/lib/gettext"
- )
-
-@@ -34,16 +33,20 @@ func (m *Manager) Eject(id string) error {
-
- mount := m.getMountById(id)
- if mount != nil {
-- m.ejectMount(id, mount)
-- mount.Unref()
-- return nil
-+ info := newDiskInfoFromMount(mount)
-+ if info != nil && len(info.MountPoint) != 0 {
-+ m.ejectMount(info)
-+ return nil
-+ }
- }
-
- volume := m.getVolumeById(id)
- if volume != nil {
-- m.ejectVolume(id, volume)
-- volume.Unref()
-- return nil
-+ info := newDiskInfoFromVolume(volume)
-+ if info != nil {
-+ m.ejectVolume(info)
-+ return nil
-+ }
- }
-
- err := fmt.Errorf("Invalid disk id: %v", id)
-@@ -54,12 +57,13 @@ func (m *Manager) Eject(id string) error {
- func (m *Manager) Mount(id string) error {
- m.refreshLocker.Lock()
- defer m.refreshLocker.Unlock()
--
- volume := m.getVolumeById(id)
- if volume != nil {
-- m.mountVolume(id, volume)
-- volume.Unref()
-- return nil
-+ info := newDiskInfoFromVolume(volume)
-+ if info != nil {
-+ m.mountVolume(info)
-+ return nil
-+ }
- }
-
- err := fmt.Errorf("Not found GVolume by '%s'", id)
-@@ -73,9 +77,11 @@ func (m *Manager) Unmount(id string) error {
-
- mount := m.getMountById(id)
- if mount != nil {
-- m.unmountMount(id, mount)
-- mount.Unref()
-- return nil
-+ info := newDiskInfoFromMount(mount)
-+ if info != nil {
-+ m.unmountMount(info)
-+ return nil
-+ }
- }
-
- err := fmt.Errorf("Not found GMount by '%s'", id)
-@@ -83,72 +89,70 @@ func (m *Manager) Unmount(id string) error {
- return err
- }
-
--func (m *Manager) ejectVolume(id string, volume *gio.Volume) {
-- logger.Debugf("ejectVolume id: %q volume: %v", id, volume)
-- op := gio.NewMountOperation()
-- volume.EjectWithOperation(gio.MountUnmountFlagsNone, op, nil, gio.AsyncReadyCallback(
-- func(o *gobject.Object, ret *gio.AsyncResult) {
-- logger.Debug("volume.EjectWithOperation AsyncReadyCallback")
-- volume := gio.ToVolume(o)
-- _, err := volume.EjectFinish(ret)
-- if err != nil {
-- m.emitError(id, err.Error())
-- }
-- }))
-- op.Unref()
-+func (m *Manager) ejectVolume(info *DiskInfo) {
-+ logger.Debugf("ejectVolume info: %#v", info)
-+ go func() {
-+ err := doDiskOperation("eject", info.Path)
-+ if err != nil {
-+ logger.Warning("[ejectVolume] failed:", info.Path, err)
-+ m.emitError(info.Id, err.Error())
-+ }
-+ }()
-+}
-+
-+func (m *Manager) ejectMount(info *DiskInfo) {
-+ logger.Debugf("ejectMount info: %#v", info)
-+ go func() {
-+ err := doDiskOperation("eject", info.MountPoint)
-+ if err != nil {
-+ logger.Warning("[ejectMount] failed:", info.MountPoint, err)
-+ m.emitError(info.Id, err.Error())
-+ }
-+ }()
- }
-
--func (m *Manager) ejectMount(id string, mount *gio.Mount) {
-- logger.Debugf("ejectMount id: %q, mount: %v", id, mount)
-- op := gio.NewMountOperation()
-- mount.EjectWithOperation(gio.MountUnmountFlagsNone, op, nil, gio.AsyncReadyCallback(
-- func(o *gobject.Object, ret *gio.AsyncResult) {
-- logger.Debug("mount.EjectWithOperation AsyncReadyCallback")
-- mount := gio.ToMount(o)
-- _, err := mount.EjectWithOperationFinish(ret)
-- if err != nil {
-- m.emitError(id, err.Error())
-- }
-- }))
-- op.Unref()
-+func (m *Manager) mountVolume(info *DiskInfo) {
-+ logger.Debugf("mountVolume info: %#v", info)
-+ go func() {
-+ err := doDiskOperation("mount", info.Path)
-+ if err != nil {
-+ logger.Warning("[mountVolume] failed:", info.Path, err)
-+ m.emitError(info.Id, err.Error())
-+ }
-+ }()
- }
-
--func (m *Manager) mountVolume(id string, volume *gio.Volume) {
-- logger.Debugf("mountVolume id: %q, volume: %v", id, volume)
-- op := gio.NewMountOperation()
-- volume.Mount(gio.MountMountFlagsNone, op, nil, gio.AsyncReadyCallback(
-- func(o *gobject.Object, ret *gio.AsyncResult) {
-- volume := gio.ToVolume(o)
-- logger.Debug("Mount AsyncReadyCallback")
--
-- _, err := volume.MountFinish(ret)
-- if err != nil {
-- m.emitError(id, err.Error())
-- }
-- }))
-- op.Unref()
-+func (m *Manager) unmountMount(info *DiskInfo) {
-+ logger.Debugf("unmountMount info: %#v", info)
-+ go func() {
-+ err := doDiskOperation("unmount", info.MountPoint)
-+ if err != nil {
-+ logger.Warning("[unmountMount] failed:", info.MountPoint, err)
-+ m.emitError(info.Id, err.Error())
-+ return
-+ }
-+ go m.sendNotify(info.Icon, "",
-+ fmt.Sprintf(Tr("%s removed successfully"), info.MountPoint))
-+ }()
- }
-
--func (m *Manager) unmountMount(id string, mount *gio.Mount) {
-- logger.Debugf("unmountMount id: %q, mount: %v", id, mount)
-- op := gio.NewMountOperation()
-- mount.UnmountWithOperation(gio.MountUnmountFlagsNone, op, nil, gio.AsyncReadyCallback(
-- func(o *gobject.Object, ret *gio.AsyncResult) {
-- mount := gio.ToMount(o)
-- logger.Debug("UnmountWithOperation AsyncReadyCallback")
--
-- _, err := mount.UnmountWithOperationFinish(ret)
-- if err != nil {
-- m.emitError(id, err.Error())
-- return
-- }
-- name := mount.GetName()
-- gicon := mount.GetIcon()
-- icon := getIconFromGIcon(gicon)
-- gicon.Unref()
--
-- go m.sendNotify(icon, "",
-- fmt.Sprintf(Tr("%s removed successfully"), name))
-- }))
-- op.Unref()
-+func doDiskOperation(ty, path string) error {
-+ var args []string
-+ switch ty {
-+ case "eject":
-+ args = append(args, "-e")
-+ case "mount":
-+ args = append(args, []string{"-m", "-d"}...)
-+ case "unmount":
-+ args = append(args, "-u")
-+ }
-+ args = append(args, path)
-+ out, err := exec.Command("gvfs-mount", args...).CombinedOutput()
-+ if err != nil {
-+ if len(out) != 0 {
-+ return fmt.Errorf("%s", string(out))
-+ }
-+ return err
-+ }
-+ return nil
- }
-diff --git a/mounts/monitor.go b/mounts/monitor.go
-index 2dafff7..19501e9 100644
---- a/mounts/monitor.go
-+++ b/mounts/monitor.go
-@@ -25,11 +25,9 @@ func (m *Manager) handleEvent() {
- info := newDiskInfoFromVolume(volume)
- logger.Debug("[Event] volume added:", info.Name, info.Type, info.Id)
- if volume.ShouldAutomount() && m.isAutoMount() {
-- m.mountVolume(info.Id, volume)
-- volume.Unref()
-+ m.mountVolume(info)
- return
- }
-- volume.Unref()
- m.refreshDiskList()
- dbus.Emit(m, "Changed", EventTypeVolumeAdded, info.Id)
- })
-@@ -37,7 +35,6 @@ func (m *Manager) handleEvent() {
- m.monitor.Connect("volume-removed", func(monitor *gio.VolumeMonitor,
- volume *gio.Volume) {
- logger.Debug("[Event] volume removed:", getVolumeId(volume))
-- volume.Unref()
- soundutils.PlaySystemSound(soundutils.EventDeviceUnplug,
- "", false)
- oldInfos := m.DiskList.duplicate()
-@@ -51,7 +48,6 @@ func (m *Manager) handleEvent() {
- volume *gio.Volume) {
- id := getVolumeId(volume)
- logger.Debug("[Event] volume changed:", id)
-- volume.Unref()
- oldInfos := m.DiskList.duplicate()
- m.refreshDiskList()
- added, removed := compareDiskList(oldInfos, m.DiskList)
-@@ -67,19 +63,16 @@ func (m *Manager) handleEvent() {
- mount *gio.Mount) {
- info := newDiskInfoFromMount(mount)
- if info == nil {
-- mount.Unref()
- return
- }
- logger.Debug("[Event] mount added:", info.Name, info.Id, info.CanEject)
-
- volume := mount.GetVolume()
-- mount.Unref()
- var autoOpen bool = false
- if volume != nil && volume.Object.C != nil {
- if volume.ShouldAutomount() && m.isAutoOpen() {
- autoOpen = true
- }
-- volume.Unref()
- }
-
- m.refreshDiskList()
-@@ -108,11 +101,9 @@ func (m *Manager) handleEvent() {
- // fixed phone device
- m.refreshDiskList()
- dbus.Emit(m, "Changed", EventTypeMountRemoved, getMountId(mount))
-- mount.Unref()
- logger.Warning(err)
- return
- }
-- mount.Unref()
- oldLen := len(m.DiskList)
- m.refreshDiskList()
- if oldLen != len(m.DiskList) {
More information about the arch-commits
mailing list