From 28153e8cac60712a9f38fa03e926a19c228d71ad Mon Sep 17 00:00:00 2001 From: Julian Ospald Date: Sun, 30 Jul 2017 22:18:53 +0200 Subject: [PATCH] x11-misc/zim: bump to 0.67 --- ...d49a643c140eb2eadafade92db40cad61740.patch | 436 ------------------ packages/x11-misc/zim/zim-0.66.exheres-0 | 54 --- ...-0.67_rc2.exheres-0 => zim-0.67.exheres-0} | 0 3 files changed, 490 deletions(-) delete mode 100644 packages/x11-misc/zim/files/c951d49a643c140eb2eadafade92db40cad61740.patch delete mode 100644 packages/x11-misc/zim/zim-0.66.exheres-0 rename packages/x11-misc/zim/{zim-0.67_rc2.exheres-0 => zim-0.67.exheres-0} (100%) diff --git a/packages/x11-misc/zim/files/c951d49a643c140eb2eadafade92db40cad61740.patch b/packages/x11-misc/zim/files/c951d49a643c140eb2eadafade92db40cad61740.patch deleted file mode 100644 index a687141..0000000 --- a/packages/x11-misc/zim/files/c951d49a643c140eb2eadafade92db40cad61740.patch +++ /dev/null @@ -1,436 +0,0 @@ -From c951d49a643c140eb2eadafade92db40cad61740 Mon Sep 17 00:00:00 2001 -From: Jaap Karssenberg -Date: Tue, 9 May 2017 09:58:10 +0200 -Subject: [PATCH] Fix for logger missing in newfs - issue #23 - -Added test to detect this common error -Also converted zim/newfs/__init__.py to use unix line end ---- - tests/package.py | 7 + - zim/config/__init__.py | 6 +- - zim/formats/wiki.py | 2 - - zim/newfs/__init__.py | 315 +++++++++++++++++++++++---------------------- - zim/newfs/base.py | 2 +- - zim/newfs/local.py | 4 + - zim/templates/processor.py | 1 - - 7 files changed, 176 insertions(+), 161 deletions(-) - -diff --git a/tests/package.py b/tests/package.py -index 4cea073..eea34ca 100644 ---- a/tests/package.py -+++ b/tests/package.py -@@ -206,6 +206,13 @@ def testIndenting(self): - self.assertFalse(' ' in indent, 'Indenting should use tabs - file: %s line %s' % (file, lineno)) - start_block = def_line and line.rstrip().endswith(':') - -+ def testLoggerDefined(self): -+ # Common to forget this import, and only notice it when an exception -+ # happens much later -+ for file, code in self.list_code(): -+ if 'logger.' in code: -+ assert 'logger = logging.getLogger(' in code, 'Forgot to define "logger" in %s' % file -+ - - class TestDocumentation(tests.TestCase): - -diff --git a/zim/config/__init__.py b/zim/config/__init__.py -index 38e8a8b..bfc26a0 100644 ---- a/zim/config/__init__.py -+++ b/zim/config/__init__.py -@@ -2,6 +2,11 @@ - - # Copyright 2009-2013 Jaap Karssenberg - -+import logging -+ -+logger = logging.getLogger('zim.config') -+ -+ - from .basedirs import * - from .dicts import * - from .manager import * -@@ -116,4 +121,3 @@ def user_dirs(): - except FileNotFoundError: - pass - return dirs -- -diff --git a/zim/formats/wiki.py b/zim/formats/wiki.py -index b4c731e..4e88d52 100644 ---- a/zim/formats/wiki.py -+++ b/zim/formats/wiki.py -@@ -563,7 +563,6 @@ def dump_img(self, tag, attrib, strings=None): - # TODO use text for caption (with full recursion) - - def dump_object(self, tag, attrib, strings=None): -- #~ logger.debug("Dumping object: %s, %s", attrib, strings) - assert "type" in attrib, "Undefined type of object" - - opts = [] -@@ -615,7 +614,6 @@ def dump_td(self, tag, attrib, strings): - return [self._concat(strings)] - - def dump_line(self, tag, attrib, strings = None): -- #logger.debug("Dumping line tag:%s, attrib:%s, strings:%s", tag, attrib, strings) - if not strings: - strings = [LINE_TEXT] - elif isinstance(strings, basestring): -diff --git a/zim/newfs/__init__.py b/zim/newfs/__init__.py -index fb9424f..dda81a6 100644 ---- a/zim/newfs/__init__.py -+++ b/zim/newfs/__init__.py -@@ -1,156 +1,159 @@ --# -*- coding: utf-8 -*- -- --# Copyright 2015-2016 Jaap Karssenberg -- --'''Module which contains all classes to deal with the filesystem''' -- --import sys --import os -- --FS_CASE_SENSITIVE = (os.name != 'nt') #: file system case-sensitive yes or no -- --FS_SUPPORT_NON_LOCAL_FILE_SHARES = (os.name == 'nt') #: Support \\host\share paths yes or no -- --FS_ENCODING = sys.getfilesystemencoding() #: file system encoding for paths --if FS_ENCODING.upper() in ( -- 'ASCII', 'US-ASCII', 'ANSI_X3.4-1968', 'ISO646-US', # some aliases for ascii -- 'LATIN1', 'ISO-8859-1', 'ISO_8859-1', 'ISO_8859-1:1987', # aliases for latin1 --): -- logger.warn('Filesystem encoding is set to ASCII or Latin1, using UTF-8 instead') -- FS_ENCODING = 'utf-8' -- -- --from .base import * --from .base import _SEP, _EOL, _HOME --from .local import * --from .helpers import * -- -- --# Functions --# - (relative) pathname manipulation - specifically for links --# - file/folder info - iswritable, mtime, ctime, exists --# - file info - mimetype, size, (thumbnail) --# - file access - read, write, touch, remove (clear) --# - folder access - list, touch, remove, file, folder, child --# - tree operations - move, copy --# - signal changes (internal) - specifically for version control --# - monitor changes (external) - specifically to pick up changes in open page -- --# OS dependent --# - pathname should support all variants, cross platform --# - path encoding for low level functions --# - atomic rename for writing -- --# Classes --# - FilePath - pathname manipulation --# - File - base class for files --# - Folder - base class for folders -- --# local file system: --# - LocalFSObjectBase - file / folder info --# - LocalFile - file info + file access + tree operations --# - LocalFolder - folder access + tree operation -- --# helpers: --# - FolderMask - wraps a Folder and exposes part of children, disables all but list() --# - FSObjectMonitor - monitor single file or folder for external changes --# - ObjectMonitorFallback - at least report internal changes --# - FSTreeMonitor - monitor internal changes, passes itself as "logger" to children -- -- --# Key is that we always use objects to signal file vs folder, --# get rid of all uses of "isdir" because it shows a constructor issue. --# Instead use "folder.child(path)" to get either file or folder. --# Also no common FS object, just construct the parent folder first --# --# When instatiating you need to use specific LocalFolder or LocalFile --# this will alert you to the non-mockable nature of the code --# --# This also means that folder provide access to children, not parents --# if a object needs access to larger file system, a root folder --# should be passed as a requirement to the constructor; else you can --# not mock the function for testing. -- --# TODO --# - test on FAT file system - e.g. USB stick ? -- --# TODO - put in helper modules: --# - trash - optional, only support for local file - separate gui object --# - monitor with gio - separate gui object --# - thumbnailer - separate gui object -- --# TODO - don't do --# - lock for fs operations --> checkin / checkout mechanism in notebook, use notebook lock -- --# With respect to page interface: --# Page.source is used for: --# - StubLinker - export with links to real source --# - cusomt tools to get commandline arg --# - edit source command --# - versioncontrol & zeitgeist logger plugins --# --> these are also only one interested in FS signals --# --> very limitted access needed -- --# Re checkin//checkout --> only needed for interface editing page --# implement by setting callbacks that can be called by the notebook --# before any operation. --# notebook.checkout(page, callback) --# notebook.checkin(page) --# notebook.update_checked_pages() --# called automatically by most methods, call explicitly from export --# --# by calling all callbacks *before* any action we allow for error dialogs --# etc before modification - no surprises once running --# --> Make it a context manager lock to block checkout during operation etc. -- -- -- -- -- -- --def localFileOrFolder(path): -- '''Convenience method that resolves a local C{File} or C{Folder} object''' -- path = FilePath(path) -- try: -- return LocalFolder(path.dirname).child(path.basename) -- except FileNotFoundError: -- raise FileNotFoundError(path) -- -- --def cleanup_filename(name): -- '''Removes all characters in 'name' that are not allowed as part -- of a file name. This function is intended for e.g. config files etc. -- B{not} for page files in a store. -- For file system filenames we can not use: -- '\\', '/', ':', '*', '?', '"', '<', '>', '|' -- And we also exclude "\\t" and "\\n". -- @param name: the filename as string -- @returns: the name with invalid characters removed -- ''' -- for char in ("/", "\\", ":", "*", "?", '"', "<", ">", "|", "\t", "\n"): -- name = name.replace(char, '') -- return name -- -- --def format_file_size(bytes): -- '''Returns a human readable label for a file size -- E.g. C{1230} becomes C{"1.23kb"}, idem for "Mb" and "Gb" -- @param bytes: file size in bytes as integer -- @returns: size as string -- ''' -- for unit, label in ( -- (1000000000, 'Gb'), -- (1000000, 'Mb'), -- (1000, 'kb'), -- ): -- if bytes >= unit: -- size = float(bytes) / unit -- if size < 10: -- return "%.2f%s" % (size, label) -- elif size < 100: -- return "%.1f%s" % (size, label) -- else: -- return "%.0f%s" % (size, label) -- else: -- return str(bytes) + 'b' -- -+# -*- coding: utf-8 -*- -+ -+# Copyright 2015-2016 Jaap Karssenberg -+ -+'''Module which contains all classes to deal with the filesystem''' -+ -+import sys -+import os -+import logging -+ -+logger = logging.getLogger('zim.newfs') -+ -+ -+FS_CASE_SENSITIVE = (os.name != 'nt') #: file system case-sensitive yes or no -+ -+FS_SUPPORT_NON_LOCAL_FILE_SHARES = (os.name == 'nt') #: Support \\host\share paths yes or no -+ -+FS_ENCODING = sys.getfilesystemencoding() #: file system encoding for paths -+if FS_ENCODING.upper() in ( -+ 'ASCII', 'US-ASCII', 'ANSI_X3.4-1968', 'ISO646-US', # some aliases for ascii -+ 'LATIN1', 'ISO-8859-1', 'ISO_8859-1', 'ISO_8859-1:1987', # aliases for latin1 -+): -+ logger.warn('Filesystem encoding is set to ASCII or Latin1, using UTF-8 instead') -+ FS_ENCODING = 'utf-8' -+ -+ -+from .base import * -+from .base import _SEP, _EOL, _HOME -+from .local import * -+from .helpers import * -+ -+ -+# Functions -+# - (relative) pathname manipulation - specifically for links -+# - file/folder info - iswritable, mtime, ctime, exists -+# - file info - mimetype, size, (thumbnail) -+# - file access - read, write, touch, remove (clear) -+# - folder access - list, touch, remove, file, folder, child -+# - tree operations - move, copy -+# - signal changes (internal) - specifically for version control -+# - monitor changes (external) - specifically to pick up changes in open page -+ -+# OS dependent -+# - pathname should support all variants, cross platform -+# - path encoding for low level functions -+# - atomic rename for writing -+ -+# Classes -+# - FilePath - pathname manipulation -+# - File - base class for files -+# - Folder - base class for folders -+ -+# local file system: -+# - LocalFSObjectBase - file / folder info -+# - LocalFile - file info + file access + tree operations -+# - LocalFolder - folder access + tree operation -+ -+# helpers: -+# - FolderMask - wraps a Folder and exposes part of children, disables all but list() -+# - FSObjectMonitor - monitor single file or folder for external changes -+# - ObjectMonitorFallback - at least report internal changes -+# - FSTreeMonitor - monitor internal changes, passes itself as "logger" to children -+ -+ -+# Key is that we always use objects to signal file vs folder, -+# get rid of all uses of "isdir" because it shows a constructor issue. -+# Instead use "folder.child(path)" to get either file or folder. -+# Also no common FS object, just construct the parent folder first -+# -+# When instatiating you need to use specific LocalFolder or LocalFile -+# this will alert you to the non-mockable nature of the code -+# -+# This also means that folder provide access to children, not parents -+# if a object needs access to larger file system, a root folder -+# should be passed as a requirement to the constructor; else you can -+# not mock the function for testing. -+ -+# TODO -+# - test on FAT file system - e.g. USB stick ? -+ -+# TODO - put in helper modules: -+# - trash - optional, only support for local file - separate gui object -+# - monitor with gio - separate gui object -+# - thumbnailer - separate gui object -+ -+# TODO - don't do -+# - lock for fs operations --> checkin / checkout mechanism in notebook, use notebook lock -+ -+# With respect to page interface: -+# Page.source is used for: -+# - StubLinker - export with links to real source -+# - cusomt tools to get commandline arg -+# - edit source command -+# - versioncontrol & zeitgeist logger plugins -+# --> these are also only one interested in FS signals -+# --> very limitted access needed -+ -+# Re checkin//checkout --> only needed for interface editing page -+# implement by setting callbacks that can be called by the notebook -+# before any operation. -+# notebook.checkout(page, callback) -+# notebook.checkin(page) -+# notebook.update_checked_pages() -+# called automatically by most methods, call explicitly from export -+# -+# by calling all callbacks *before* any action we allow for error dialogs -+# etc before modification - no surprises once running -+# --> Make it a context manager lock to block checkout during operation etc. -+ -+ -+ -+ -+ -+ -+def localFileOrFolder(path): -+ '''Convenience method that resolves a local C{File} or C{Folder} object''' -+ path = FilePath(path) -+ try: -+ return LocalFolder(path.dirname).child(path.basename) -+ except FileNotFoundError: -+ raise FileNotFoundError(path) -+ -+ -+def cleanup_filename(name): -+ '''Removes all characters in 'name' that are not allowed as part -+ of a file name. This function is intended for e.g. config files etc. -+ B{not} for page files in a store. -+ For file system filenames we can not use: -+ '\\', '/', ':', '*', '?', '"', '<', '>', '|' -+ And we also exclude "\\t" and "\\n". -+ @param name: the filename as string -+ @returns: the name with invalid characters removed -+ ''' -+ for char in ("/", "\\", ":", "*", "?", '"', "<", ">", "|", "\t", "\n"): -+ name = name.replace(char, '') -+ return name -+ -+ -+def format_file_size(bytes): -+ '''Returns a human readable label for a file size -+ E.g. C{1230} becomes C{"1.23kb"}, idem for "Mb" and "Gb" -+ @param bytes: file size in bytes as integer -+ @returns: size as string -+ ''' -+ for unit, label in ( -+ (1000000000, 'Gb'), -+ (1000000, 'Mb'), -+ (1000, 'kb'), -+ ): -+ if bytes >= unit: -+ size = float(bytes) / unit -+ if size < 10: -+ return "%.2f%s" % (size, label) -+ elif size < 100: -+ return "%.1f%s" % (size, label) -+ else: -+ return "%.0f%s" % (size, label) -+ else: -+ return str(bytes) + 'b' -diff --git a/zim/newfs/base.py b/zim/newfs/base.py -index 59ee702..c14310d 100644 ---- a/zim/newfs/base.py -+++ b/zim/newfs/base.py -@@ -11,7 +11,7 @@ - - import logging - --logger = logging.getLogger('zim.fs') -+logger = logging.getLogger('zim.newfs') - - - from . import FS_ENCODING, FS_SUPPORT_NON_LOCAL_FILE_SHARES -diff --git a/zim/newfs/local.py b/zim/newfs/local.py -index 89edb5f..c9a3aa8 100644 ---- a/zim/newfs/local.py -+++ b/zim/newfs/local.py -@@ -13,6 +13,10 @@ - import tempfile - import errno - -+import logging -+ -+logger = logging.getLogger('zim.newfs') -+ - - from . import FS_CASE_SENSITIVE, FS_ENCODING - from .base import * -diff --git a/zim/templates/processor.py b/zim/templates/processor.py -index fc44d2d..b9157e9 100644 ---- a/zim/templates/processor.py -+++ b/zim/templates/processor.py -@@ -141,7 +141,6 @@ def __call__(self, output, elements, context): - else: - raise AssertionError, 'Unknown instruction: %s' % element.tag - except: -- #~ logger.exception('Exception in template') - raise - - def _loop(self, output, element, context): diff --git a/packages/x11-misc/zim/zim-0.66.exheres-0 b/packages/x11-misc/zim/zim-0.66.exheres-0 deleted file mode 100644 index 56ef1eb..0000000 --- a/packages/x11-misc/zim/zim-0.66.exheres-0 +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright 2016 Julian Ospald -# Distributed under the terms of the GNU General Public License v2 - -require gtk-icon-cache freedesktop-desktop -require setup-py [ import=distutils blacklist="3" multibuild=false python_opts='[sqlite]' ] - -SUMMARY="A desktop wiki" -HOMEPAGE="http://zim-wiki.org/" -DOWNLOADS="http://zim-wiki.org/downloads/${PNV}.tar.gz" - -LICENCES=" - BSD-3 - || ( GPL-2 GPL-3 ) -" -SLOT="0" -PLATFORMS="~amd64 ~x86" -MYOPTIONS="" - -DEPENDENCIES=" - build: - x11-apps/xdg-utils - build+run: - gnome-bindings/pygtk:2[python_abis:*(-)?] - gnome-bindings/pygobject:2[python_abis:*(-)?] - suggestion: - app-text/dvipng - app-text/texlive-core - dev-libs/zeitgeist - dev-scm/bzr - media-gfx/ImageMagick - media-gfx/graphviz - media-gfx/scrot - media-sound/lilypond - sci-apps/gnuplot -" - -DEFAULT_SRC_PREPARE_PATCHES=( - "${FILES}"/c951d49a643c140eb2eadafade92db40cad61740.patch -) - -SETUP_PY_SRC_INSTALL_PARAMS=( - --skip-xdg-cmd -) - -pkg_postinst() { - freedesktop-desktop_pkg_postinst - gtk-icon-cache_pkg_postinst -} - -pkg_postrm() { - freedesktop-desktop_pkg_postrm - gtk-icon-cache_pkg_postrm -} - diff --git a/packages/x11-misc/zim/zim-0.67_rc2.exheres-0 b/packages/x11-misc/zim/zim-0.67.exheres-0 similarity index 100% rename from packages/x11-misc/zim/zim-0.67_rc2.exheres-0 rename to packages/x11-misc/zim/zim-0.67.exheres-0