openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
April 2015
- 1 participants
- 1958 discussions
Hello community,
here is the log from the commit of package ghc-enclosed-exceptions for openSUSE:Factory checked in at 2015-04-30 11:51:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-enclosed-exceptions (Old)
and /work/SRC/openSUSE:Factory/.ghc-enclosed-exceptions.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-enclosed-exceptions"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-enclosed-exceptions/ghc-enclosed-exceptions.changes 2015-02-05 11:00:20.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-enclosed-exceptions.new/ghc-enclosed-exceptions.changes 2015-04-30 11:51:23.000000000 +0200
@@ -1,0 +2,6 @@
+Wed Apr 22 09:18:08 UTC 2015 - mimi.vx(a)gmail.com
+
+- update to 1.0.1.1
+* no upstream changelog
+
+-------------------------------------------------------------------
Old:
----
enclosed-exceptions-1.0.1.tar.gz
New:
----
enclosed-exceptions-1.0.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-enclosed-exceptions.spec ++++++
--- /var/tmp/diff_new_pack.FWuwuO/_old 2015-04-30 11:51:24.000000000 +0200
+++ /var/tmp/diff_new_pack.FWuwuO/_new 2015-04-30 11:51:24.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package ghc-exceptions
+# spec file for package ghc
#
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
@@ -15,10 +15,11 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
+
%global pkg_name enclosed-exceptions
Name: ghc-%{pkg_name}
-Version: 1.0.1
+Version: 1.0.1.1
Release: 0
Summary: Catching all exceptions raised within an enclosed computation
License: MIT
@@ -30,12 +31,12 @@
BuildRequires: fdupes
BuildRequires: ghc-Cabal-devel
-BuildRequires: ghc-rpm-macros
+BuildRequires: ghc-async-devel
BuildRequires: ghc-deepseq-devel
+BuildRequires: ghc-lifted-base-devel
BuildRequires: ghc-monad-control-devel
-BuildRequires: ghc-async-devel
+BuildRequires: ghc-rpm-macros
BuildRequires: ghc-transformers-devel
-BuildRequires: ghc-lifted-base-devel
%description
Catching all exceptions raised within an enclosed computation, while
@@ -50,7 +51,6 @@
Requires: %{name} = %{version}-%{release}
Requires: ghc-compiler = %{ghc_version}
-
%description -n ghc-%{pkg_name}-devel
Catching all exceptions raised within an enclosed computation, while
remaining responsive to (external) asynchronous exceptions.
++++++ enclosed-exceptions-1.0.1.tar.gz -> enclosed-exceptions-1.0.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enclosed-exceptions-1.0.1/enclosed-exceptions.cabal new/enclosed-exceptions-1.0.1.1/enclosed-exceptions.cabal
--- old/enclosed-exceptions-1.0.1/enclosed-exceptions.cabal 2014-09-28 16:18:40.000000000 +0200
+++ new/enclosed-exceptions-1.0.1.1/enclosed-exceptions.cabal 2015-03-24 07:50:47.000000000 +0100
@@ -1,5 +1,5 @@
name: enclosed-exceptions
-version: 1.0.1
+version: 1.0.1.1
synopsis: Catching all exceptions from within an enclosed computation
description: Catching all exceptions raised within an enclosed computation,
while remaining responsive to (external) asynchronous exceptions.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enclosed-exceptions-1.0.1/test/main.hs new/enclosed-exceptions-1.0.1.1/test/main.hs
--- old/enclosed-exceptions-1.0.1/test/main.hs 2014-09-28 16:18:40.000000000 +0200
+++ new/enclosed-exceptions-1.0.1.1/test/main.hs 2015-03-24 07:50:47.000000000 +0100
@@ -8,70 +8,195 @@
import Control.Exception.Lifted hiding (throwTo)
import Data.IORef
import Data.Typeable
-import Control.Monad.IO.Class
-import Control.Concurrent (throwTo, threadDelay, forkIO)
+import Control.Concurrent (threadDelay)
+import Control.Concurrent.Async (async, cancelWith, waitCatch)
+import Control.Concurrent.MVar
import Control.Exception.Enclosed
+import Control.Monad (forever)
{-# ANN main ("HLint: ignore Redundant do"::String) #-}
main :: IO ()
main = hspec $ do
- describe "any exceptions" $ do
- it "catchAny" $ do
- failed <- newIORef 0
- tid <- forkIO $ do
- catchAny
- (threadDelay 20000)
- (const $ writeIORef failed 1)
- writeIORef failed 2
- threadDelay 10000
- throwTo tid DummyException
- threadDelay 50000
- didFail <- readIORef failed
- liftIO $ didFail `shouldBe` (0 :: Int)
-
- it "catchDeep" $ do
- failed <- newIORef 0
- tid <- forkIO $ do
- catchDeep
- (threadDelay 10000 >> return (throw DummyExceptionInternal))
- (\(_::DummyExceptionInternal) -> writeIORef failed 1)
- threadDelay 20000
- writeIORef failed 2
- threadDelay 20000
- throwTo tid DummyException
- threadDelay 50000
- didFail <- readIORef failed
- liftIO $ didFail `shouldBe` (1 :: Int)
-
- it "tryAny" $ do
- failed <- newIORef False
- tid <- forkIO $ do
- _ <- tryAny $ threadDelay 20000
- writeIORef failed True
- threadDelay 10000
- throwTo tid DummyException
- threadDelay 50000
- didFail <- readIORef failed
- liftIO $ didFail `shouldBe` False
-
- it "tryDeep" $ do
- eres <- tryDeep $ return $ throw DummyException
- case eres of
- Left DummyException -> return ()
- Right () -> error "Expected an exception" :: IO ()
-
- it "tryAnyDeep" $ do
- eres <- tryAnyDeep $ return $ throw DummyException
- case eres of
- Left e
- | Just DummyException <- fromException e -> return ()
- | otherwise -> error "Expected a DummyException"
- Right () -> error "Expected an exception" :: IO ()
+ context "Unhandled.Exception" $ do
+ -- const :: Catcher
+ describe "const" $ do
+ it "doesn't catch exceptions thrown from the inside" $ do
+ const `catcherCatchesInside` False
+ it "doesn't catch exceptions thrown from the outside" $ do
+ const `catcherCatchesOutside` False
+ it "doesn't catch exceptions lazily thrown in its pure result" $ do
+ const `catcherCatchesDeep` False
+
+ -- fmap Right :: Trier
+ describe "fmap Right" $ do
+ it "doesn't catch exceptions thrown from the inside" $ do
+ fmap Right `trierCatchesInside` False
+ it "doesn't catch exceptions thrown from the outside" $ do
+ fmap Right `trierCatchesOutside` False
+ it "doesn't catch exceptions lazily thrown in its pure result" $ do
+ fmap Right `trierCatchesDeep` False
+
+ context "Control.Exception" $ do
+ describe "catch" $ do
+ it "catches exceptions thrown from the inside" $ do
+ catch `catcherCatchesInside` True
+ it "catches exceptions thrown from the outside" $ do
+ catch `catcherCatchesOutside` True
+ it "doesn't catch exceptions lazily thrown in its pure result" $ do
+ catch `catcherCatchesDeep` False
+ describe "try" $ do
+ it "catches exceptions thrown from the inside" $ do
+ try `trierCatchesInside` True
+ it "catches exceptions thrown from the outside" $ do
+ try `trierCatchesOutside` True
+ it "doesn't catch exceptions lazily thrown in its pure result" $ do
+ try `trierCatchesDeep` False
+
+ context "Control.Exception.Enclosed" $ do
+ describe "catchAny" $ do
+ it "catches exceptions thrown from the inside" $ do
+ catchAny `catcherCatchesInside` True
+ it "doesn't catch exceptions thrown from the outside" $ do
+ catchAny `catcherCatchesOutside` False
+ it "doesn't catch exceptions lazily thrown in its pure result" $ do
+ catchAny `catcherCatchesDeep` False
+
+ describe "catchDeep" $ do
+ it "catches exceptions thrown from the inside" $ do
+ catchDeep `catcherCatchesInside` True
+ it "catches exceptions thrown from the outside" $ do
+ catchDeep `catcherCatchesOutside` True
+ it "catches exceptions lazily thrown in its pure result" $ do
+ catchDeep `catcherCatchesDeep` True
+
+ describe "tryAny" $ do
+ it "catches exceptions thrown from the inside" $ do
+ tryAny `trierCatchesInside` True
+ it "doesn't catch exceptions thrown from the outside" $ do
+ tryAny `trierCatchesOutside` False
+ it "doesn't catch exceptions lazily thrown in its pure result" $ do
+ tryAny `trierCatchesDeep` False
+
+ describe "tryDeep" $ do
+ it "catches exceptions thrown from the inside" $ do
+ tryDeep `trierCatchesInside` True
+ it "catches exceptions thrown from the outside" $ do
+ tryDeep `trierCatchesOutside` True
+ it "catches exceptions lazily thrown in its pure result" $ do
+ tryDeep `trierCatchesDeep` True
+
+ describe "tryAnyDeep" $ do
+ it "catches exceptions thrown from the inside" $ do
+ tryAnyDeep `trierCatchesInside` True
+ it "doesn't catch exceptions thrown from the outside" $ do
+ tryAnyDeep `trierCatchesOutside` False
+ it "catches exceptions lazily thrown in its pure result" $ do
+ tryAnyDeep `trierCatchesDeep` True
+
+type Catcher = IO () -> (SomeException -> IO ()) -> IO ()
+type Trier = IO () -> IO (Either SomeException ())
+
+-- Dummy exception types used just for testing.
data DummyException = DummyException
deriving (Show, Typeable)
instance Exception DummyException
-data DummyExceptionInternal = DummyExceptionInternal
- deriving (Show, Typeable)
-instance Exception DummyExceptionInternal
+-- A handler that fails the test if it catches the wrong type of exception.
+catchAssert :: forall e. Exception e => e -> IO () -> SomeException -> IO ()
+catchAssert _ act se = case fromException se of
+ Just (_ :: e) -> act
+ Nothing -> expectationFailure "Caught an unexpected exception"
+
+-- Block a thread
+blockIndefinitely :: IO ()
+blockIndefinitely = forever $ threadDelay maxBound
+
+
+-- Test whether a catcher will catch exceptions thrown from the inside.
+catcherCatchesInside :: Catcher -> Bool -> IO ()
+catcherCatchesInside fCatch asExpected = do
+ caughtRef <- newIORef False
+ thread <- async $ do
+ fCatch
+ (throwIO DummyException)
+ (catchAssert DummyException $ writeIORef caughtRef True)
+ -- No known catchers will catch an exception without also handling it.
+ readIORef caughtRef `shouldReturn` True
+ _ <- waitCatch thread
+ readIORef caughtRef `shouldReturn` asExpected
+
+
+-- Test whether a catcher will catch exceptions thrown from the outside.
+catcherCatchesOutside :: Catcher -> Bool -> IO ()
+catcherCatchesOutside fCatch asExpected = do
+ caughtRef <- newIORef False
+ baton <- newEmptyMVar
+ thread <- async $ do
+ fCatch
+ (do putMVar baton ()
+ -- DummyException can happen from here on
+ blockIndefinitely)
+ (catchAssert DummyException $ writeIORef caughtRef True)
+ -- No known catchers will catch an exception without also handling it.
+ readIORef caughtRef `shouldReturn` True
+ takeMVar baton
+ cancelWith thread DummyException
+ _ <- waitCatch thread
+ readIORef caughtRef `shouldReturn` asExpected
+
+
+-- Test whether a catcher will catch exceptions lazily thrown in a pure result.
+-- This is done by `return (throw DummyException)`, which will not
+-- raise the exception until the return value is forced.
+catcherCatchesDeep :: Catcher -> Bool -> IO ()
+catcherCatchesDeep fCatch asExpected = do
+ caughtRef <- newIORef False
+ thread <- async $ do
+ fCatch
+ (return (throw DummyException))
+ (catchAssert DummyException $ writeIORef caughtRef True)
+ _ <- waitCatch thread
+ readIORef caughtRef `shouldReturn` asExpected
+
+
+-- Test whether a trier will catch exceptions thrown from the inside.
+trierCatchesInside :: Trier -> Bool -> IO ()
+trierCatchesInside fTry asExpected = do
+ caughtRef <- newIORef False
+ thread <- async $ do
+ _ <- fTry (throwIO DummyException)
+ writeIORef caughtRef True
+ _ <- waitCatch thread
+ readIORef caughtRef `shouldReturn` asExpected
+
+
+-- Test whether a trier will catch exceptions thrown from the outside.
+trierCatchesOutside :: Trier -> Bool -> IO ()
+trierCatchesOutside fTry asExpected = do
+ caughtRef <- newIORef False
+ baton <- newEmptyMVar
+ thread <- async $ do
+ _ <- fTry $ do
+ putMVar baton ()
+ -- DummyException can happen from here on
+ blockIndefinitely
+ writeIORef caughtRef True
+ takeMVar baton
+ cancelWith thread DummyException
+ _ <- waitCatch thread
+ readIORef caughtRef `shouldReturn` asExpected
+
+
+-- Test whether a trier will catch exceptions lazily thrown in a pure result.
+-- This is done by `return (throw DummyException)`, which will not
+-- raise the exception until the return value is forced.
+trierCatchesDeep :: Trier -> Bool -> IO ()
+trierCatchesDeep fTry asExpected = do
+ eres <- fTry $ return $ throw DummyException
+ let caughtDummyException = case eres of
+ Left e
+ | Just DummyException <- fromException e -> True
+ | otherwise -> error "Caught an unexpected exception"
+ Right _ -> False
+ caughtDummyException `shouldBe` asExpected
1
0
Hello community,
here is the log from the commit of package 389-ds for openSUSE:Factory checked in at 2015-04-30 11:51:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/389-ds (Old)
and /work/SRC/openSUSE:Factory/.389-ds.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "389-ds"
Changes:
--------
--- /work/SRC/openSUSE:Factory/389-ds/389-ds.changes 2015-04-23 08:05:18.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.389-ds.new/389-ds.changes 2015-04-30 11:51:20.000000000 +0200
@@ -1,0 +2,7 @@
+Wed Apr 29 10:17:58 UTC 2015 - aj(a)ajaissle.de
+
+- Update to new upstream release 1.3.3.10
+ * One important security bug was fixed:
+ Bug 1216203 - CVE-2015-1854 389ds-base: access control bypass with modrdn
+
+-------------------------------------------------------------------
Old:
----
389-ds-base-1.3.3.9.tar.bz2
New:
----
389-ds-base-1.3.3.10.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ 389-ds.spec ++++++
--- /var/tmp/diff_new_pack.8URQRY/_old 2015-04-30 11:51:21.000000000 +0200
+++ /var/tmp/diff_new_pack.8URQRY/_new 2015-04-30 11:51:21.000000000 +0200
@@ -18,7 +18,7 @@
Name: 389-ds
Summary: 389 Directory Server
-Version: 1.3.3.9
+Version: 1.3.3.10
Release: 0
Group: Productivity/Networking/LDAP/Servers
License: GPL-2.0
++++++ 389-ds-base-1.3.3.9.tar.bz2 -> 389-ds-base-1.3.3.10.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.3.3.9/VERSION.sh new/389-ds-base-1.3.3.10/VERSION.sh
--- old/389-ds-base-1.3.3.9/VERSION.sh 2015-03-07 01:46:09.000000000 +0100
+++ new/389-ds-base-1.3.3.10/VERSION.sh 2015-04-28 19:16:17.000000000 +0200
@@ -10,7 +10,7 @@
# PACKAGE_VERSION is constructed from these
VERSION_MAJOR=1
VERSION_MINOR=3
-VERSION_MAINT=3.9
+VERSION_MAINT=3.10
# if this is a PRERELEASE, set VERSION_PREREL
# otherwise, comment it out
# be sure to include the dot prefix in the prerel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.3.3.9/dirsrvtests/tickets/ticket47553_rdn_write_test.py new/389-ds-base-1.3.3.10/dirsrvtests/tickets/ticket47553_rdn_write_test.py
--- old/389-ds-base-1.3.3.9/dirsrvtests/tickets/ticket47553_rdn_write_test.py 1970-01-01 01:00:00.000000000 +0100
+++ new/389-ds-base-1.3.3.10/dirsrvtests/tickets/ticket47553_rdn_write_test.py 2015-04-28 19:16:17.000000000 +0200
@@ -0,0 +1,132 @@
+import os
+import sys
+import time
+import ldap
+import logging
+import pytest
+from lib389 import DirSrv, Entry, tools, tasks
+from lib389.tools import DirSrvTools
+from lib389._constants import *
+from lib389.properties import *
+from lib389.tasks import *
+from lib389.utils import *
+from ldap.controls.simple import GetEffectiveRightsControl
+
+logging.getLogger(__name__).setLevel(logging.DEBUG)
+log = logging.getLogger(__name__)
+
+installation1_prefix = None
+
+SRC_ENTRY_CN = "tuser"
+EXT_RDN = "01"
+DST_ENTRY_CN = SRC_ENTRY_CN + EXT_RDN
+
+SRC_ENTRY_DN = "cn=%s,%s" % (SRC_ENTRY_CN, SUFFIX)
+DST_ENTRY_DN = "cn=%s,%s" % (DST_ENTRY_CN, SUFFIX)
+
+class TopologyStandalone(object):
+ def __init__(self, standalone):
+ standalone.open()
+ self.standalone = standalone
+
+
+#(a)pytest.fixture(scope="module")
+def topology(request):
+ global installation1_prefix
+
+ # Creating standalone instance ...
+ standalone = DirSrv(verbose=False)
+ if installation1_prefix:
+ args_instance[SER_DEPLOYED_DIR] = installation1_prefix
+ args_instance[SER_HOST] = HOST_STANDALONE
+ args_instance[SER_PORT] = PORT_STANDALONE
+ args_instance[SER_SERVERID_PROP] = SERVERID_STANDALONE
+ args_instance[SER_CREATION_SUFFIX] = DEFAULT_SUFFIX
+ args_standalone = args_instance.copy()
+ standalone.allocate(args_standalone)
+ instance_standalone = standalone.exists()
+ if instance_standalone:
+ standalone.delete()
+ standalone.create()
+ standalone.open()
+
+ # Clear out the tmp dir
+ standalone.clearTmpDir(__file__)
+
+ return TopologyStandalone(standalone)
+
+def test_ticket47553_rdn_write_init(topology):
+ topology.standalone.log.info("\n\n######################### Add entry tuser ######################\n")
+ topology.standalone.add_s(Entry((SRC_ENTRY_DN, {
+ 'objectclass': "top person".split(),
+ 'sn': SRC_ENTRY_CN,
+ 'cn': SRC_ENTRY_CN})))
+
+def test_ticket47553_rdn_write_get_ger(topology):
+ ANONYMOUS_DN = ""
+ topology.standalone.log.info("\n\n######################### GER rights for anonymous ######################\n")
+ request_ctrl = GetEffectiveRightsControl(criticality=True, authzId="dn:" + ANONYMOUS_DN)
+ msg_id = topology.standalone.search_ext(SUFFIX, ldap.SCOPE_SUBTREE, "objectclass=*", serverctrls=[request_ctrl])
+ rtype, rdata, rmsgid, response_ctrl = topology.standalone.result3(msg_id)
+ value = ''
+ for dn, attrs in rdata:
+ topology.standalone.log.info("dn: %s" % dn)
+ for value in attrs['entryLevelRights']:
+ topology.standalone.log.info("############### entryLevelRights: %r" % value)
+ assert 'n' not in value
+
+def test_ticket47553_rdn_write_modrdn_anonymous(topology):
+ ANONYMOUS_DN = ""
+ topology.standalone.close()
+ topology.standalone.binddn = ANONYMOUS_DN
+ topology.standalone.open()
+ msg_id = topology.standalone.search_ext("", ldap.SCOPE_BASE, "objectclass=*")
+ rtype, rdata, rmsgid, response_ctrl = topology.standalone.result3(msg_id)
+ value = ''
+ for dn, attrs in rdata:
+ topology.standalone.log.info("dn: %s" % dn)
+ for attr in attrs:
+ topology.standalone.log.info("############### %r: %r" % (attr, attrs[attr]))
+
+
+ try:
+ topology.standalone.rename_s(SRC_ENTRY_DN, "cn=%s" % DST_ENTRY_CN, delold=True)
+ except Exception as e:
+ topology.standalone.log.info("Exception (expected): %s" % type(e).__name__)
+ isinstance(e, ldap.INSUFFICIENT_ACCESS)
+
+ try:
+ topology.standalone.getEntry(DST_ENTRY_DN, ldap.SCOPE_BASE, "objectclass=*")
+ assert False
+ except Exception as e:
+ topology.standalone.log.info("The entry was not renamed (expected)")
+ isinstance(e, ldap.NO_SUCH_OBJECT)
+
+def test_ticket47553_rdn_write(topology):
+ '''
+ Write your testcase here...
+ '''
+
+ log.info('Test complete')
+
+
+def test_ticket47553_rdn_write_final(topology):
+ topology.standalone.delete()
+ log.info('Testcase PASSED')
+
+
+def run_isolated():
+ global installation1_prefix
+ installation1_prefix = '/home/tbordaz/install_master'
+
+ topo = topology(True)
+ test_ticket47553_rdn_write_init(topo)
+ test_ticket47553_rdn_write_get_ger(topo)
+ test_ticket47553_rdn_write(topo)
+ test_ticket47553_rdn_write_modrdn_anonymous(topo)
+ test_ticket47553_rdn_write_final(topo)
+
+
+if __name__ == '__main__':
+ run_isolated()
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.3.3.9/dirsrvtests/tickets/ticket47553_single_aci_test.py new/389-ds-base-1.3.3.10/dirsrvtests/tickets/ticket47553_single_aci_test.py
--- old/389-ds-base-1.3.3.9/dirsrvtests/tickets/ticket47553_single_aci_test.py 2015-03-07 01:46:09.000000000 +0100
+++ new/389-ds-base-1.3.3.10/dirsrvtests/tickets/ticket47553_single_aci_test.py 2015-04-28 19:16:17.000000000 +0200
@@ -276,7 +276,27 @@
#topology.master1.modify_s(SUFFIX, mod)
topology.master1.log.info("Add a DENY aci under %s " % PROD_EXCEPT_DN)
topology.master1.modify_s(PROD_EXCEPT_DN, mod)
-
+
+def _write_aci_staging(topology, mod_type=None):
+ assert mod_type is not None
+
+ ACI_TARGET = "(targetattr= \"cn\")(target=\"ldap:///cn=*,%s\")" % STAGING_DN
+ ACI_ALLOW = "(version 3.0; acl \"write staging entries\"; allow (write)"
+ ACI_SUBJECT = " userdn = \"ldap:///%s\";)" % BIND_DN
+ ACI_BODY = ACI_TARGET + ACI_ALLOW + ACI_SUBJECT
+ mod = [(mod_type, 'aci', ACI_BODY)]
+ topology.master1.modify_s(SUFFIX, mod)
+
+def _write_aci_production(topology, mod_type=None):
+ assert mod_type is not None
+
+ ACI_TARGET = "(targetattr= \"cn\")(target=\"ldap:///cn=*,%s\")" % PRODUCTION_DN
+ ACI_ALLOW = "(version 3.0; acl \"write production entries\"; allow (write)"
+ ACI_SUBJECT = " userdn = \"ldap:///%s\";)" % BIND_DN
+ ACI_BODY = ACI_TARGET + ACI_ALLOW + ACI_SUBJECT
+ mod = [(mod_type, 'aci', ACI_BODY)]
+ topology.master1.modify_s(SUFFIX, mod)
+
def _moddn_aci_staging_to_production(topology, mod_type=None, target_from=STAGING_DN, target_to=PRODUCTION_DN):
assert mod_type != None
@@ -293,6 +313,8 @@
ACI_BODY = ACI_TARGET_FROM + ACI_TARGET_TO + ACI_ALLOW + ACI_SUBJECT
mod = [(mod_type, 'aci', ACI_BODY)]
topology.master1.modify_s(SUFFIX, mod)
+
+ _write_aci_staging(topology, mod_type=mod_type)
def _moddn_aci_from_production_to_staging(topology, mod_type=None):
assert mod_type != None
@@ -303,6 +325,8 @@
ACI_BODY = ACI_TARGET + ACI_ALLOW + ACI_SUBJECT
mod = [(mod_type, 'aci', ACI_BODY)]
topology.master1.modify_s(SUFFIX, mod)
+
+ _write_aci_production(topology, mod_type=mod_type)
def test_ticket47553_init(topology):
@@ -347,12 +371,9 @@
'description': "production except DIT"})))
# enable acl error logging
- #mod = [(ldap.MOD_REPLACE, 'nsslapd-errorlog-level', '128')]
- #topology.master1.modify_s(DN_CONFIG, mod)
- #topology.master2.modify_s(DN_CONFIG, mod)
-
-
-
+ mod = [(ldap.MOD_REPLACE, 'nsslapd-errorlog-level', str(128+262144))]
+ topology.master1.modify_s(DN_CONFIG, mod)
+ topology.master2.modify_s(DN_CONFIG, mod)
# add dummy entries in the staging DIT
@@ -883,6 +904,7 @@
_bind_manager(topology)
mod = [(ldap.MOD_ADD, 'aci', ACI_BODY)]
topology.master1.modify_s(PRODUCTION_DN, mod)
+ _write_aci_staging(topology, mod_type=ldap.MOD_ADD)
_bind_normal(topology)
topology.master1.log.info("Try to MODDN %s -> %s,%s" % (old_dn, new_rdn, new_superior))
@@ -891,6 +913,7 @@
_bind_manager(topology)
mod = [(ldap.MOD_DELETE, 'aci', ACI_BODY)]
topology.master1.modify_s(PRODUCTION_DN, mod)
+ _write_aci_staging(topology, mod_type=ldap.MOD_DELETE)
_bind_normal(topology)
@@ -934,6 +957,7 @@
_bind_manager(topology)
mod = [(ldap.MOD_ADD, 'aci', ACI_BODY)]
topology.master1.modify_s(PRODUCTION_DN, mod)
+ _write_aci_staging(topology, mod_type=ldap.MOD_ADD)
_bind_normal(topology)
try:
@@ -949,6 +973,7 @@
_bind_manager(topology)
mod = [(ldap.MOD_DELETE, 'aci', ACI_BODY)]
topology.master1.modify_s(PRODUCTION_DN, mod)
+ _write_aci_staging(topology, mod_type=ldap.MOD_DELETE)
_bind_normal(topology)
# Add the moddn aci that will be evaluated because of the config flag
@@ -1009,7 +1034,12 @@
old_dn = "%s,%s" % (old_rdn, PRODUCTION_DN)
new_rdn = old_rdn
new_superior = STAGING_DN
-
+
+ # add the write right because we want to check the moddn
+ _bind_manager(topology)
+ _write_aci_production(topology, mod_type=ldap.MOD_ADD)
+ _bind_normal(topology)
+
try:
topology.master1.log.info("Try to move back MODDN %s -> %s,%s" % (old_dn, new_rdn, new_superior))
topology.master1.rename_s(old_dn, new_rdn, newsuperior=new_superior)
@@ -1019,7 +1049,11 @@
except Exception as e:
topology.master1.log.info("Exception (expected): %s" % type(e).__name__)
assert isinstance(e, ldap.INSUFFICIENT_ACCESS)
-
+
+ _bind_manager(topology)
+ _write_aci_production(topology, mod_type=ldap.MOD_DELETE)
+ _bind_normal(topology)
+
# successfull MOD with the both ACI
_bind_manager(topology)
_moddn_aci_staging_to_production(topology, mod_type=ldap.MOD_DELETE, target_from=STAGING_DN, target_to=PRODUCTION_DN)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.3.3.9/ldap/servers/slapd/back-ldbm/ldbm_modrdn.c new/389-ds-base-1.3.3.10/ldap/servers/slapd/back-ldbm/ldbm_modrdn.c
--- old/389-ds-base-1.3.3.9/ldap/servers/slapd/back-ldbm/ldbm_modrdn.c 2015-03-07 01:46:09.000000000 +0100
+++ new/389-ds-base-1.3.3.10/ldap/servers/slapd/back-ldbm/ldbm_modrdn.c 2015-04-28 19:16:17.000000000 +0200
@@ -677,31 +677,17 @@
/* JCMACL - Should be performed before the child check. */
/* JCMACL - Why is the check performed against the copy, rather than the existing entry? */
+ /* This check must be performed even if the entry is renamed with its own name
+ * No optimization here we need to check we have the write access to the target entry
+ */
+ ldap_result_code = plugin_call_acl_plugin(pb, ec->ep_entry,
+ NULL /*attr*/, NULL /*value*/, SLAPI_ACL_WRITE,
+ ACLPLUGIN_ACCESS_MODRDN, &errbuf);
+ if (ldap_result_code != LDAP_SUCCESS)
{
- Slapi_RDN *new_rdn;
- Slapi_RDN *old_rdn;
+ goto error_return;
+ }
- /* Taken from the entry */
- old_rdn = slapi_entry_get_srdn(ec->ep_entry);
-
- /* Taken from the request */
- new_rdn = slapi_rdn_new();
- slapi_sdn_get_rdn(&dn_newrdn, new_rdn);
-
- /* Only if we change the RDN value, we need the write access to the entry */
- if (slapi_rdn_compare(old_rdn, new_rdn)) {
- ldap_result_code = plugin_call_acl_plugin(pb, ec->ep_entry,
- NULL /*attr*/, NULL /*value*/, SLAPI_ACL_WRITE,
- ACLPLUGIN_ACCESS_MODRDN, &errbuf);
- }
-
- slapi_rdn_free(&new_rdn);
-
- if (ldap_result_code != LDAP_SUCCESS) {
- goto error_return;
- }
- }
-
/* Set the new dn to the copy of the entry */
slapi_entry_set_sdn( ec->ep_entry, &dn_newdn );
if (entryrdn_get_switch()) { /* subtree-rename: on */
1
0
Hello community,
here is the log from the commit of package exaile for openSUSE:Factory checked in at 2015-04-30 11:51:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/exaile (Old)
and /work/SRC/openSUSE:Factory/.exaile.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "exaile"
Changes:
--------
--- /work/SRC/openSUSE:Factory/exaile/exaile.changes 2015-03-23 12:19:08.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.exaile.new/exaile.changes 2015-04-30 11:51:19.000000000 +0200
@@ -1,0 +2,9 @@
+Wed Apr 29 09:21:54 UTC 2015 - sor.alexei(a)meowr.ru
+
+- Update to 3.4.5:
+ * Errors loading Smart Playlists that filter based on a playlist.
+ * Missing icon issue.
+ * Disable equalizer by default.
+ * Translations update.
+
+-------------------------------------------------------------------
Old:
----
exaile-3.4.4.tar.gz
New:
----
exaile-3.4.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ exaile.spec ++++++
--- /var/tmp/diff_new_pack.vqDMKX/_old 2015-04-30 11:51:20.000000000 +0200
+++ /var/tmp/diff_new_pack.vqDMKX/_new 2015-04-30 11:51:20.000000000 +0200
@@ -18,7 +18,7 @@
%define _name Exaile
Name: exaile
-Version: 3.4.4
+Version: 3.4.5
Release: 0
Summary: Gtk2 Amarok-like music player
License: GPL-3.0+
@@ -51,6 +51,7 @@
Recommends: python-gpod
Recommends: python-notify
Recommends: python-webkitgtk >= 1.1.2
+Recommends: udisks2
BuildArch: noarch
%description
@@ -83,7 +84,7 @@
%install
# Exaile launcher works with LIBINSTALLDIR which is a relative path from %%{_prefix}.
-export data=$(python2 -c "import os.path; print os.path.relpath('%{_datadir}', '%{_prefix}')")
+export data=$(python2 -c "import os.path; print(os.path.relpath('%{_datadir}', '%{_prefix}'))")
%make_install PREFIX=%{_prefix} LIBINSTALLDIR="/$data"
++++++ exaile-3.4.4.tar.gz -> exaile-3.4.5.tar.gz ++++++
++++ 3825 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package cabal-rpm for openSUSE:Factory checked in at 2015-04-30 11:51:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cabal-rpm (Old)
and /work/SRC/openSUSE:Factory/.cabal-rpm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cabal-rpm"
Changes:
--------
--- /work/SRC/openSUSE:Factory/cabal-rpm/cabal-rpm.changes 2015-03-11 09:59:02.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.cabal-rpm.new/cabal-rpm.changes 2015-04-30 11:51:16.000000000 +0200
@@ -1,0 +2,10 @@
+Sun Apr 26 17:18:50 UTC 2015 - mimi.vx(a)gmail.com
+
+- update to 0.9.5
+- fix for dnf repoquery
+- create SOURCES/ for tarball
+- fixes for Cabal-1.22
+- nogpgcheck for Fedora 22+
+- warn about hidden backup spec files
+
+-------------------------------------------------------------------
Old:
----
cabal-rpm-0.9.4.tar.gz
New:
----
cabal-rpm-0.9.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cabal-rpm.spec ++++++
--- /var/tmp/diff_new_pack.mURTpt/_old 2015-04-30 11:51:17.000000000 +0200
+++ /var/tmp/diff_new_pack.mURTpt/_new 2015-04-30 11:51:17.000000000 +0200
@@ -17,7 +17,7 @@
Name: cabal-rpm
-Version: 0.9.4
+Version: 0.9.5
Release: 0
Summary: RPM packaging tool for Haskell Cabal-based packages
License: GPL-3.0+
++++++ cabal-rpm-0.9.4.tar.gz -> cabal-rpm-0.9.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.4/ChangeLog new/cabal-rpm-0.9.5/ChangeLog
--- old/cabal-rpm-0.9.4/ChangeLog 2015-02-17 14:43:22.000000000 +0100
+++ new/cabal-rpm-0.9.5/ChangeLog 2015-04-20 15:24:51.000000000 +0200
@@ -1,3 +1,10 @@
+* 0.9.5 (2015-04-20)
+- fix for dnf repoquery
+- create SOURCES/ for tarball
+- fixes for Cabal-1.22
+- nogpgcheck for Fedora 22+
+- warn about hidden backup spec files
+
* 0.9.4 (2015-02-17)
- use dnf if installed instead of yum for install and repoquery
- update now only commits changes and new source if git origin is ssh
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.4/cabal-rpm.cabal new/cabal-rpm-0.9.5/cabal-rpm.cabal
--- old/cabal-rpm-0.9.4/cabal-rpm.cabal 2015-02-17 14:43:22.000000000 +0100
+++ new/cabal-rpm-0.9.5/cabal-rpm.cabal 2015-04-20 15:24:51.000000000 +0200
@@ -1,5 +1,5 @@
Name: cabal-rpm
-Version: 0.9.4
+Version: 0.9.5
Synopsis: RPM packaging tool for Haskell Cabal-based packages
Description:
This package provides a RPM packaging tool for Haskell Cabal-based packages.
@@ -17,7 +17,7 @@
Author: Jens Petersen <juhp(a)community.haskell.org>, Bryan O'Sullivan <bos(a)serpentine.com>
Maintainer: Jens Petersen <petersen(a)fedoraproject.org>
Copyright: 2007-2008 Bryan O'Sullivan <bos(a)serpentine.com>,
- 2012-2014 Jens Petersen <petersen(a)fedoraproject.org>
+ 2012-2015 Jens Petersen <petersen(a)fedoraproject.org>
Category: Distribution
Build-type: Simple
Extra-source-files: README.md ChangeLog man/cblrpm.1.md man/cblrpm.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.4/src/Commands/Depends.hs new/cabal-rpm-0.9.5/src/Commands/Depends.hs
--- old/cabal-rpm-0.9.4/src/Commands/Depends.hs 2015-02-17 14:43:22.000000000 +0100
+++ new/cabal-rpm-0.9.5/src/Commands/Depends.hs 2015-04-20 15:24:51.000000000 +0200
@@ -1,6 +1,6 @@
-- |
-- Module : Commands.Depends
--- Copyright : (C) 2014 Jens Petersen
+-- Copyright : (C) 2014-2015 Jens Petersen
--
-- Maintainer : Jens Petersen <petersen(a)fedoraproject.org>
-- Stability : alpha
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.4/src/Commands/Install.hs new/cabal-rpm-0.9.5/src/Commands/Install.hs
--- old/cabal-rpm-0.9.4/src/Commands/Install.hs 2015-02-17 14:43:22.000000000 +0100
+++ new/cabal-rpm-0.9.5/src/Commands/Install.hs 2015-04-20 15:24:51.000000000 +0200
@@ -1,6 +1,6 @@
-- |
-- Module : Commands.Install
--- Copyright : (C) 2012-2014 Jens Petersen
+-- Copyright : (C) 2012-2015 Jens Petersen
--
-- Maintainer : Jens Petersen <petersen(a)fedoraproject.org>
-- Stability : alpha
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.4/src/Commands/RpmBuild.hs new/cabal-rpm-0.9.5/src/Commands/RpmBuild.hs
--- old/cabal-rpm-0.9.4/src/Commands/RpmBuild.hs 2015-02-17 14:43:22.000000000 +0100
+++ new/cabal-rpm-0.9.5/src/Commands/RpmBuild.hs 2015-04-20 15:24:51.000000000 +0200
@@ -1,7 +1,7 @@
-- |
-- Module : Commands.RpmBuild
-- Copyright : (C) 2007-2008 Bryan O'Sullivan
--- (C) 2012-2014 Jens Petersen
+-- (C) 2012-2015 Jens Petersen
--
-- Maintainer : Jens Petersen <petersen(a)fedoraproject.org>
-- Stability : alpha
@@ -33,8 +33,7 @@
--import Distribution.Version (VersionRange, foldVersionRange')
-import System.Directory (createDirectoryIfMissing, doesDirectoryExist,
- doesFileExist)
+import System.Directory (doesFileExist)
import System.FilePath (takeDirectory, (</>))
-- autoreconf :: Verbosity -> PackageDescription -> IO ()
@@ -75,9 +74,6 @@
when scmRepo $
error "No tarball for source repo"
- destExists <- doesDirectoryExist srcdir
- unless destExists $
- createDirectoryIfMissing True srcdir
copyTarball name version False srcdir
rpmbuild stage False Nothing specFile
return specFile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.4/src/Commands/Spec.hs new/cabal-rpm-0.9.5/src/Commands/Spec.hs
--- old/cabal-rpm-0.9.4/src/Commands/Spec.hs 2015-02-17 14:43:22.000000000 +0100
+++ new/cabal-rpm-0.9.5/src/Commands/Spec.hs 2015-04-20 15:24:51.000000000 +0200
@@ -3,7 +3,7 @@
-- |
-- Module : Commands.Spec
-- Copyright : (C) 2007-2008 Bryan O'Sullivan
--- (C) 2012-2014 Jens Petersen
+-- (C) 2012-2015 Jens Petersen
--
-- Maintainer : Jens Petersen <petersen(a)fedoraproject.org>
-- Stability : alpha
@@ -392,6 +392,10 @@
showLicense _ BSD2 = "BSD"
showLicense _ (MPL ver) = "MPLv" ++ showVersion ver
#endif
+#if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,22,0)
+showLicense _ ISC = "ISC"
+showLicense _ UnspecifiedLicense = "Unspecified license!"
+#endif
-- from http://stackoverflow.com/questions/930675/functional-paragraphs
-- using split would be: map unlines . (Data.List.Split.splitWhen null)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.4/src/Commands/Update.hs new/cabal-rpm-0.9.5/src/Commands/Update.hs
--- old/cabal-rpm-0.9.4/src/Commands/Update.hs 2015-02-17 14:43:22.000000000 +0100
+++ new/cabal-rpm-0.9.5/src/Commands/Update.hs 2015-04-20 15:24:51.000000000 +0200
@@ -1,6 +1,6 @@
-- |
-- Module : Commands.Update
--- Copyright : (C) 2014 Jens Petersen
+-- Copyright : (C) 2014-2015 Jens Petersen
--
-- Maintainer : Jens Petersen <petersen(a)fedoraproject.org>
-- Stability : alpha
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.4/src/Dependencies.hs new/cabal-rpm-0.9.5/src/Dependencies.hs
--- old/cabal-rpm-0.9.4/src/Dependencies.hs 2015-02-17 14:43:22.000000000 +0100
+++ new/cabal-rpm-0.9.5/src/Dependencies.hs 2015-04-20 15:24:51.000000000 +0200
@@ -1,6 +1,6 @@
-- |
-- Module : Dependencies
--- Copyright : (C) 2012-2014 Jens Petersen
+-- Copyright : (C) 2012-2015 Jens Petersen
--
-- Maintainer : Jens Petersen <petersen(a)fedoraproject.org>
-- Stability : alpha
@@ -67,7 +67,7 @@
clibs = concatMap extraLibs buildinfo
return (deps, tools, nub clibs, pkgcfgs, selfdep)
-data RepoQueryType = Rpm | Repoquery deriving Eq
+data QueryBackend = Rpm | Repoquery deriving Eq
resolveLib :: String -> IO (Maybe String)
resolveLib lib = do
@@ -82,10 +82,13 @@
rpmqueryFile Repoquery lib_path
-- use repoquery or rpm -q to query which package provides file
-rpmqueryFile :: RepoQueryType -> FilePath -> IO (Maybe String)
-rpmqueryFile qt file = do
+rpmqueryFile :: QueryBackend -> FilePath -> IO (Maybe String)
+rpmqueryFile backend file = do
+ -- FIXME dnf repoquery does not support -f !
let args = ["-q", "--qf=%{name}", "-f"]
- out <- if qt == Rpm then cmd "rpm" (args ++ [file]) else repoquery args file
+ out <- if backend == Rpm
+ then cmd "rpm" (args ++ [file])
+ else repoquery args file
let pkgs = nub $ words out
-- EL5 repoquery can return "No package provides <file>"
case pkgs of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.4/src/PackageUtils.hs new/cabal-rpm-0.9.5/src/PackageUtils.hs
--- old/cabal-rpm-0.9.4/src/PackageUtils.hs 2015-02-17 14:43:22.000000000 +0100
+++ new/cabal-rpm-0.9.5/src/PackageUtils.hs 2015-04-20 15:24:51.000000000 +0200
@@ -1,6 +1,6 @@
-- |
-- Module : PackageUtils
--- Copyright : (C) 2013-2014 Jens Petersen
+-- Copyright : (C) 2013-2015 Jens Petersen
--
-- Maintainer : Jens Petersen <petersen(a)fedoraproject.org>
-- Stability : alpha
@@ -53,20 +53,28 @@
import Distribution.PackageDescription.Configuration (finalizePackageDescription)
import Distribution.PackageDescription.Parse (readPackageDescription)
-import Distribution.Simple.Compiler (Compiler (..))
+import Distribution.Simple.Compiler (
+#if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,22,0)
+ compilerInfo
+#else
+ Compiler (..)
+#endif
+ )
import Distribution.Simple.Configure (
#if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,18,0)
- configCompilerEx)
+ configCompilerEx
#else
- configCompiler)
+ configCompiler
#endif
+ )
import Distribution.Simple.Program (defaultProgramConfiguration)
import Distribution.Simple.Utils (die, findPackageDesc)
import Distribution.System (Platform (..), buildArch, buildOS)
-import System.Directory (copyFile, doesDirectoryExist, doesFileExist,
- getCurrentDirectory, setCurrentDirectory)
+import System.Directory (copyFile, createDirectoryIfMissing,doesDirectoryExist,
+ doesFileExist, getCurrentDirectory,
+ setCurrentDirectory)
import System.Environment (getEnv)
import System.FilePath ((</>), (<.>), takeBaseName, takeFileName)
import System.Posix.Files (accessTime, fileMode, getFileStatus,
@@ -95,7 +103,12 @@
#endif
(Just GHC) Nothing Nothing defaultProgramConfiguration verbose
case finalizePackageDescription (rpmConfigurationsFlags opts)
- (const True) (Platform buildArch buildOS) (compilerId compiler)
+ (const True) (Platform buildArch buildOS)
+#if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,22,0)
+ (compilerInfo compiler)
+#else
+ (compilerId compiler)
+#endif
[] genPkgDesc of
Left e -> die $ "finalize failed: " ++ show e
Right (pd, _) -> return pd
@@ -245,7 +258,11 @@
checkForSpecFile :: Maybe String -> IO (Maybe FilePath)
checkForSpecFile Nothing = do
- specs <- filter (\ f -> head f /= '.') <$> filesWithExtension "." ".spec"
+ -- emacs makes ".#*.spec" tmp files
+ allSpecs <- filesWithExtension "." ".spec"
+ let specs = filter (\ f -> head f /= '.') allSpecs
+ when (specs /= allSpecs) $
+ putStrLn "Warning: dir contains a hidden spec file"
case specs of
[one] -> return $ Just one
_ -> return Nothing
@@ -299,6 +316,7 @@
cmd_ "cabal" ["fetch", "-v0", "--no-dependencies", n ++ "-" ++ v]
copyTarball n v True dir
else do
+ createDirectoryIfMissing True dir
copyFile (head tarballs) dest
-- cabal fetch creates tarballs with mode 0600
stat <- getFileStatus dest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.4/src/SysCmd.hs new/cabal-rpm-0.9.5/src/SysCmd.hs
--- old/cabal-rpm-0.9.4/src/SysCmd.hs 2015-02-17 14:43:22.000000000 +0100
+++ new/cabal-rpm-0.9.5/src/SysCmd.hs 2015-04-20 15:24:51.000000000 +0200
@@ -1,6 +1,6 @@
-- |
-- Module : SysCmd
--- Copyright : (C) 2013-2014 Jens Petersen
+-- Copyright : (C) 2013-2015 Jens Petersen
--
-- Maintainer : Jens Petersen <petersen(a)fedoraproject.org>
-- Stability : alpha
@@ -33,7 +33,7 @@
import Control.Monad (unless, void, when)
import Data.Functor ((<$>))
import Data.List ((\\))
-import Data.Maybe (fromMaybe, isJust, isNothing, maybeToList)
+import Data.Maybe (fromMaybe, isJust, isNothing)
import Distribution.Simple.Utils (die, warn, findProgramLocation)
import Distribution.Verbosity (normal)
@@ -132,8 +132,8 @@
repoquery :: [String] -> String -> IO String
repoquery args key = do
havednf <- optionalProgram "dnf"
- let (prog, subcmd) = if havednf then ("dnf", Just "repoquery") else ("repoquery", Nothing)
- cmd prog (maybeToList subcmd ++ args ++ [key])
+ let (prog, subcmd) = if havednf then ("dnf", ["repoquery", "-q"]) else ("repoquery", [])
+ cmd prog (subcmd ++ args ++ [key])
pkgInstall :: [String] -> Bool -> IO ()
pkgInstall [] _ = return ()
@@ -162,7 +162,7 @@
putStrLn $ "Running:" +-+ fromMaybe "" maybeSudo +-+ pkginstaller +-+ "install" +-+ unwords args
let exec = if hard then cmd_ else trySystem
fedora <- cmd "rpm" ["--eval", "%fedora"]
- let nogpgcheck = ["--nogpgcheck" | fedora `elem` ["21", "22"]]
+ let nogpgcheck = ["--nogpgcheck" | fedora `elem` ["22", "23"]]
exec (fromMaybe pkginstaller maybeSudo) $ maybe [] (const pkginstaller) maybeSudo : "install" : args ++ nogpgcheck
showPkg :: String -> String
1
0
Hello community,
here is the log from the commit of package u-boot for openSUSE:Factory checked in at 2015-04-30 11:51:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/u-boot (Old)
and /work/SRC/openSUSE:Factory/.u-boot.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "u-boot"
Changes:
--------
u-boot-a13-olinuxino.changes: same change
u-boot-a13-olinuxinom.changes: same change
u-boot-a20-olinuxino-lime.changes: same change
u-boot-a20-olinuxino-lime2.changes: same change
u-boot-a20-olinuxinomicro.changes: same change
u-boot-am335xevm.changes: same change
u-boot-arndale.changes: same change
u-boot-bananapi.changes: same change
u-boot-colibrit20.changes: same change
u-boot-cubieboard.changes: same change
u-boot-cubieboard2.changes: same change
u-boot-cubietruck.changes: same change
u-boot-highbank.changes: same change
u-boot-melea1000.changes: same change
u-boot-mx53loco.changes: same change
u-boot-mx6qsabrelite.changes: same change
u-boot-omap3beagle.changes: same change
u-boot-omap4panda.changes: same change
u-boot-paz00.changes: same change
u-boot-pcm051rev3.changes: same change
u-boot-rpi.changes: same change
u-boot-rpi2.changes: same change
u-boot-snow.changes: same change
--- /work/SRC/openSUSE:Factory/u-boot/u-boot.changes 2015-04-25 11:26:03.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.u-boot.new/u-boot.changes 2015-04-30 11:51:04.000000000 +0200
@@ -1,0 +2,5 @@
+Wed Apr 29 07:51:25 UTC 2015 - dmueller(a)suse.com
+
+- adjust copyright headers
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
u-boot-a13-olinuxino.spec: same change
u-boot-a13-olinuxinom.spec: same change
u-boot-a20-olinuxino-lime.spec: same change
u-boot-a20-olinuxino-lime2.spec: same change
u-boot-a20-olinuxinomicro.spec: same change
u-boot-am335xevm.spec: same change
u-boot-arndale.spec: same change
u-boot-bananapi.spec: same change
u-boot-colibrit20.spec: same change
u-boot-cubieboard.spec: same change
u-boot-cubieboard2.spec: same change
u-boot-cubietruck.spec: same change
u-boot-highbank.spec: same change
u-boot-melea1000.spec: same change
u-boot-mx53loco.spec: same change
u-boot-mx6qsabrelite.spec: same change
u-boot-omap3beagle.spec: same change
u-boot-omap4panda.spec: same change
u-boot-paz00.spec: same change
u-boot-pcm051rev3.spec: same change
u-boot-rpi.spec: same change
u-boot-rpi2.spec: same change
u-boot-snow.spec: same change
u-boot.spec: same change
++++++ u-boot.spec.in ++++++
--- /var/tmp/diff_new_pack.hmBP5U/_old 2015-04-30 11:51:06.000000000 +0200
+++ /var/tmp/diff_new_pack.hmBP5U/_new 2015-04-30 11:51:06.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package u-boot-BOARDNAME
#
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2010 Texas Instruments Inc by Nishanth Menon
# Copyright (c) 2007-2010 by Silvan Calarco <silvan.calarco(a)mambasoft.it>
#
1
0
Hello community,
here is the log from the commit of package aria2 for openSUSE:Factory checked in at 2015-04-30 11:51:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aria2 (Old)
and /work/SRC/openSUSE:Factory/.aria2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aria2"
Changes:
--------
--- /work/SRC/openSUSE:Factory/aria2/aria2.changes 2015-04-18 10:41:18.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.aria2.new/aria2.changes 2015-04-30 11:51:02.000000000 +0200
@@ -1,0 +2,6 @@
+Sun Apr 26 20:04:40 UTC 2015 - mpluskal(a)suse.com
+
+- Add dependency on libuv for current Tumbleweed
+- Remove _DATE_ and _TIME_
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aria2.spec ++++++
--- /var/tmp/diff_new_pack.mTngKR/_old 2015-04-30 11:51:03.000000000 +0200
+++ /var/tmp/diff_new_pack.mTngKR/_new 2015-04-30 11:51:03.000000000 +0200
@@ -27,6 +27,7 @@
Group: Productivity/Networking/Other
Url: http://aria2.sourceforge.net/
Source0: http://prdownloads.sourceforge.net/aria2/aria2-%{version}.tar.xz
+Source1: %{name}.changes
BuildRequires: gcc-c++
BuildRequires: pkgconfig
BuildRequires: pkgconfig(gnutls)
@@ -45,6 +46,9 @@
%if 0%{?suse_version} >= 1130
Recommends: ca-certificates
%endif
+%if 0%{?suse_version} > 1310
+Recommends: pkgconfig(libuv)
+%endif
Recommends: %{name}-lang
%description
@@ -62,6 +66,12 @@
%prep
%setup -q
+# Do not use current date
+modified="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{SOURCE1}")"
+DATE="\"$(date -d "${modified}" "+%%b %%e %%Y")\""
+TIME="\"$(date -d "${modified}" "+%%R")\""
+find . -name '*.cc' |\
+ xargs sed -i "s/__DATE__/${DATE}/g;s/__TIME__/${TIME}/g"
%build
%configure --docdir=%{_defaultdocdir}/%{name}/ \
1
0
Hello community,
here is the log from the commit of package python-cairocffi for openSUSE:Factory checked in at 2015-04-30 11:50:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-cairocffi (Old)
and /work/SRC/openSUSE:Factory/.python-cairocffi.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-cairocffi"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-cairocffi/python-cairocffi.changes 2014-09-10 17:03:13.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-cairocffi.new/python-cairocffi.changes 2015-04-30 11:51:00.000000000 +0200
@@ -1,0 +2,8 @@
+Tue Apr 28 21:13:22 UTC 2015 - benoit.monin(a)gmx.fr
+
+- update to version 0.6:
+ * #39 Add :class:xcb.XCBSurface.
+ * #42 Add :class:Win32PrintingSurface.
+- add Group field to subpackage python-cairocffi-pixbuf
+
+-------------------------------------------------------------------
Old:
----
cairocffi-0.5.4.tar.gz
New:
----
cairocffi-0.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-cairocffi.spec ++++++
--- /var/tmp/diff_new_pack.exVVbj/_old 2015-04-30 11:51:00.000000000 +0200
+++ /var/tmp/diff_new_pack.exVVbj/_new 2015-04-30 11:51:00.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-cairocffi
#
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: python-cairocffi
-Version: 0.5.4
+Version: 0.6
Release: 0
Summary: Python cairo bindings based on cffi
License: BSD-3-Clause
@@ -46,8 +46,9 @@
%package pixbuf
Summary: Python cairo bindings based on cffi - pixbuf image loader
-Requires: gdk-pixbuf
+Group: Development/Languages/Python
Requires: %{name} = %{version}
+Requires: gdk-pixbuf
%description pixbuf
cairocffi is a CFFI-based drop-in replacement for Pycairo,
++++++ cairocffi-0.5.4.tar.gz -> cairocffi-0.6.tar.gz ++++++
++++ 3133 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-bugzillatools for openSUSE:Factory checked in at 2015-04-30 11:50:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-bugzillatools (Old)
and /work/SRC/openSUSE:Factory/.python-bugzillatools.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-bugzillatools"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-bugzillatools/python-bugzillatools.changes 2013-12-18 16:54:56.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-bugzillatools.new/python-bugzillatools.changes 2015-04-30 11:50:58.000000000 +0200
@@ -1,0 +2,26 @@
+Tue Apr 28 20:56:37 UTC 2015 - benoit.monin(a)gmx.fr
+
+- update to version 0.5.5:
+ * comment command learned the --private option
+ * fix comment enumeration order
+ * fix string encoding error when invoking editor which could lead
+ to invalid XML being sent to server
+- additional changes from version 0.5.4:
+ * better error messages on missing server/account configuration
+ (#3)
+ * remove fields without name data from bug records (#5)
+ * make user and password configuration optional (#12)
+- additional changes from version 0.5.3.1:
+ * fix installation error
+- additional changes from version 0.5.3:
+ * editor: fix incorrect path to vi(1) when EDITOR is not defined
+ * create command: treat "defaulted" fields as mandatory in case
+ no default is set
+ * ui: fix some unicode encoding errors
+ * fields command: handle minor changes in result format in 4.4
+ * correct the name of the platform field
+ (platform -> rep_platform)
+ * expand bzr plugin documentation
+- replace README with README.rst: changed upstream
+
+-------------------------------------------------------------------
Old:
----
bugzillatools-0.5.2.tar.gz
New:
----
bugzillatools-0.5.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-bugzillatools.spec ++++++
--- /var/tmp/diff_new_pack.TxuZpo/_old 2015-04-30 11:50:58.000000000 +0200
+++ /var/tmp/diff_new_pack.TxuZpo/_new 2015-04-30 11:50:58.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-bugzillatools
#
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -13,15 +13,16 @@
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
+#
Name: python-bugzillatools
-Version: 0.5.2
+Version: 0.5.5
Release: 0
-License: GPL-3.0+
Summary: Bugzilla CLI client, XML-RPC binding and VCS plugins
-Url: https://github.com/frasertweedale/bugzillatools
+License: GPL-3.0+
Group: Development/Languages/Python
+Url: https://github.com/frasertweedale/bugzillatools
Source: https://pypi.python.org/packages/source/b/bugzillatools/bugzillatools-%{ver…
BuildRequires: python-devel
#Recommends: bzr
@@ -51,7 +52,7 @@
%files
%defattr(-,root,root,-)
-%doc CHANGES README gpl-3.0.txt
+%doc CHANGES README.rst gpl-3.0.txt
%{_bindir}/bugzilla
%{python_sitelib}/bzlib
%{python_sitelib}/bzrlib
++++++ bugzillatools-0.5.2.tar.gz -> bugzillatools-0.5.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bugzillatools-0.5.2/CHANGES new/bugzillatools-0.5.5/CHANGES
--- old/bugzillatools-0.5.2/CHANGES 2012-02-07 13:06:24.000000000 +0100
+++ new/bugzillatools-0.5.5/CHANGES 2015-04-25 10:09:05.000000000 +0200
@@ -1,15 +1,66 @@
Changelog
=========
-bugzillatools-0.5.2 :: Tue Feb 7 2012
--------------------------------------
+v0.5.5 :: Sat Apr 25 2015
+-------------------------
+
+New features:
+
+- ``comment`` command learned the ``--private`` option
+ (contributed by Johannes Segitz)
+
+Bug fixes:
+
+- fix comment enumeration order
+- fix string encoding error when invoking editor which could lead to invalid
+ XML being sent to server
+
+
+v0.5.4 :: Sun Nov 23 2014
+-------------------------
+
+Bug fixes:
+
+- better error messages on missing server/account configuration (#3)
+- remove fields without name data from bug records (#5)
+- make user and password configuration optional (#12)
+
+
+v0.5.3.1 :: Sun Nov 24 2013
+---------------------------
+
+Bug fixes:
+
+- fix installation error
+
+
+v0.5.3 :: Sat Nov 23 2013
+-------------------------
+
+Bug fixes:
+
+- editor: fix incorrect path to vi(1) when EDITOR is not defined
+ (issues/1; reported by @taa1)
+- ``create`` command: treat "defaulted" fields as mandatory in case
+ no default is set (issues/2; reported by @taa1)
+- ui: fix some unicode encoding errors
+- ``fields`` command: handle minor changes in result format in 4.4
+- correct the name of the platform field (platform -> rep_platform)
+
+Other changes:
+
+- expand bzr plugin documentation
+
+
+v0.5.2 :: Tue Feb 7 2012
+------------------------
New features:
- ``priority`` command: set the priority of the given bugs.
- ``comment`` command learned the ``--which`` argument, for limiting
output to only the given comment(s).
-- ``search`` learned the --version argument.
+- ``search`` learned the ``--version`` argument.
- ``edit`` command: edit the product version of a bug.
Bug fixes:
@@ -22,16 +73,16 @@
information.
-bugzillatools-0.5.1 :: Tue Jan 10 2012
---------------------------------------
+v0.5.1 :: Tue Jan 10 2012
+-------------------------
Bug fixes:
- ``new`` command: fix assigned_to user matching.
-bugzillatools-0.5 :: Tue Jan 3 2012
------------------------------------
+v0.5 :: Tue Jan 3 2012
+----------------------
New features:
@@ -48,8 +99,8 @@
- ``time`` command: calculate the hours worked on a bug.
-bugzillatools-0.4 :: Wed Nov 30 2011
-------------------------------------
+v0.4 :: Wed Nov 30 2011
+-----------------------
New features:
@@ -76,8 +127,8 @@
``ConfigParser``). JSON configuration is no longer supported.
-bugzillatools-0.3 :: Sun Aug 7 2011
------------------------------------
+v0.3 :: Sun Aug 7 2011
+----------------------
New features:
@@ -102,8 +153,8 @@
contains only one item.
-bugzillatools-0.2.1 :: Tue Jul 12 2011
---------------------------------------
+v0.2.1 :: Tue Jul 12 2011
+-------------------------
Bug fixes:
@@ -112,8 +163,8 @@
- Add global arguments to subcommand ``--help`` output.
-bugzillatools-0.2 :: Sat Jul 2 2011
------------------------------------
+v0.2 :: Sat Jul 2 2011
+----------------------
New features:
@@ -149,16 +200,16 @@
(formerly ~/.bugrc).
-bugzillatools-0.1.2 :: Fri Jun 17 2011
---------------------------------------
+v0.1.2 :: Fri Jun 17 2011
+-------------------------
Bug fixes:
- Fix Bugzilla construction args
-bugzillatools-0.1.1 :: Tue Jun 14 2011
---------------------------------------
+v0.1.1 :: Tue Jun 14 2011
+-------------------------
New features:
@@ -170,8 +221,8 @@
- Handle server lookup failure when no servers are defined.
-bugzillatools-0.1 :: Sun Jun 12 2011
-------------------------------------
+v0.1 :: Sun Jun 12 2011
+-----------------------
New features:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bugzillatools-0.5.2/MANIFEST.in new/bugzillatools-0.5.5/MANIFEST.in
--- old/bugzillatools-0.5.2/MANIFEST.in 2011-11-30 12:48:16.000000000 +0100
+++ new/bugzillatools-0.5.5/MANIFEST.in 2013-11-24 06:50:21.000000000 +0100
@@ -1,3 +1,4 @@
include MANIFEST.in
+include README.rst
include gpl-3.0.txt
include CHANGES
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bugzillatools-0.5.2/PKG-INFO new/bugzillatools-0.5.5/PKG-INFO
--- old/bugzillatools-0.5.2/PKG-INFO 2012-02-07 13:13:34.000000000 +0100
+++ new/bugzillatools-0.5.5/PKG-INFO 2015-04-25 10:13:06.000000000 +0200
@@ -1,24 +1,52 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
Name: bugzillatools
-Version: 0.5.2
+Version: 0.5.5
Summary: Bugzilla CLI client, XML-RPC binding and VCS plugins
-Home-page: https://gitorious.org/bugzillatools
+Home-page: https://github.com/frasertweedale/bugzillatools
Author: Fraser Tweedale
-Author-email: frasert(a)jumbolotteries.com
+Author-email: frase(a)frase.id.au
License: UNKNOWN
-Description: Bugzilla CLI client and XML-RPC binding and VCS plugins
- =======================================================
+Description: bugzillatools consists of the ``bugzilla`` CLI program and a Python
+ library for interacting with the Bugzilla_ bug tracking system, and
+ plugins for version control systems that enable interaction with
+ Bugzilla installations.
- Provides a CLI program and Python library for interacting with the
- Bugzilla_ bug tracking system, and plugins for version control
- systems that enable interaction with Bugzilla installations.
+ The only dependency is Python_ 2.7 and bugzillatools works with
+ Bugzilla_ 4.0 or later where the XML-RPC feature is enabled.
- Requires Python_ 2.7 and works with Bugzilla_ 4.0 or later.
+ .. _Bugzilla: http://www.bugzilla.org/
+ .. _Python: http://python.org/
- The Bazaar_ plugin requires Bazaar 2.0 or later.
- ``bugzilla``
- ------------
+ Installation
+ ============
+
+ ::
+
+ # via pip
+ pip install bugzillatools # as superuser
+ -or-
+ pip install bugzillatools --user # user site-packages installation
+
+ # from source
+ python setup.py install # as superuser
+ -or-
+ python setup.py install --user # user site-packages installation
+
+ The ``bin/`` directory in your user base directory will need to appear
+ on the ``PATH`` if installing to user site-packages. This directory is
+ system dependent; see :pep:`370`.
+
+ If installing to user site-packages, some manual moving or symlinking
+ of files will be required for the Bazaar plugin to be detected by
+ Bazaar. :pep:`402` speaks to this shortcoming.
+
+
+ Components
+ ==========
+
+ ``bugzilla`` program
+ --------------------
Command-line application for interacting with Bugzilla servers.
The following subcommands are available:
@@ -52,6 +80,7 @@
interface. Supports bug creation, bug information and comment
retrieval, updating bug fields and appending comments to bugs.
+
Bazaar_ plugin
--------------
@@ -60,72 +89,43 @@
It also adds a comment to the bug that includes the branch location, the
commit message, the list of changed files and other details about the commit.
+ The Bazaar_ plugin requires Bazaar 2.0 or later.
.. _Bazaar: http://bazaar.canonical.com/
- .. _Bugzilla: http://www.bugzilla.org/
- .. _Python: http://python.org/
-
-
- Installation
- ============
-
- ::
-
- # via pip
- pip install bugzillatools # as superuser
- -or-
- pip install bugzillatools --user # user site-packages installation
-
- # via easy_install
- easy_install bugzillatools # as superuser
-
- # from source
- python setup.py install # as superuser
- -or-
- python setup.py install --user # user site-packages installation
-
- The ``bin/`` directory in your user base directory will need to appear
- on the ``PATH`` if installing to user site-packages. This directory is
- system dependent; see `PEP 370`__.
-
- __ http://www.python.org/dev/peps/pep-0370/
-
- If installing to user site-packages, some manual moving or symlinking
- of files will be required for the Bazaar plugin to be detected by
- Bazaar. `PEP 402`__ speaks to this shortcoming.
-
- __ http://www.python.org/dev/peps/pep-0402/
Configuration
=============
- A configuration file is looked for at ``~/.bugzillarc``. Its format is
- INI-like; the following configuration objects are understood:
+ ``.bugzillarc``
+ ---------------
+
+ The ``bugzilla`` program looks for its configuration in
+ ``~/.bugzillarc``, which uses ini-style configuration.
``core``
- --------
+ ^^^^^^^^
``server``
Name of the default server
``alias``
- ---------
+ ^^^^^^^^^
Option names are aliases; their values are the replacement.
``server.<name>``
- -----------------
+ ^^^^^^^^^^^^^^^^^
Define a server. bugzillatools supports multiple servers; the
``--server=<name>`` argument can be used to select a server.
``url``
- Base URL of the Bugzilla server.
+ Base URL of the Bugzilla server (mandatory)
``user``
- Bugzilla username.
+ Bugzilla username (optional)
``password``
- Bugzilla password
+ Bugzilla password (optional)
``assign_status``
When the ``assign`` command is used, if the current status of a bug
is in the first list, the status will be updated to the second item.
@@ -139,7 +139,7 @@
Example ``.bugzillarc``
- -----------------------
+ ^^^^^^^^^^^^^^^^^^^^^^^
::
@@ -157,18 +157,116 @@
confirm = status --status CONFIRMED
+ Bazaar plugin
+ -------------
+
+ To enable the Bazaar bugzillatools plugin, include following
+ configuration directives in either ``~/.bazaar/bazaar.conf`` (global
+ configuration) or ``.bzr/branch/branch.conf`` (within a branch)::
+
+ bugzilla_<server>_bugzillatools_enable = True
+ bugzilla_<server>_url = <bugzilla url>
+ bugzilla_<server>_status = RESOLVED
+ bugzilla_<server>_resolution = FIXED
+
+ Such a configuration assumes that a section ``[server.<server>]``
+ has been defined in your ``.bugzillarc``.
+
+ You can now set the status of bugs (using the status and resolution
+ defined in the Bazaar config) directly::
+
+ bzr commit -m 'fix bug 123' --fixes <server>:123
+
+
+ License
+ =======
+
+ bugzillatools is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+
+ Contributing
+ ============
+
+ The bugzillatools source code is available from
+ https://github.com/frasertweedale/bugzillatools.
+
+ Bug reports, patches, feature requests, code review and
+ documentation are welcomed.
+
+ To submit a patch, please use ``git send-email`` or generate a pull
+ request. Write a `well formed commit message`_. If your patch is
+ nontrivial, update the copyright notice at the top of each changed
+ file.
+
+ .. _well formed commit message: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
+
+
Changelog
=========
- bugzillatools-0.5.2 :: Tue Feb 7 2012
- -------------------------------------
+ v0.5.5 :: Sat Apr 25 2015
+ -------------------------
+
+ New features:
+
+ - ``comment`` command learned the ``--private`` option
+ (contributed by Johannes Segitz)
+
+ Bug fixes:
+
+ - fix comment enumeration order
+ - fix string encoding error when invoking editor which could lead to invalid
+ XML being sent to server
+
+
+ v0.5.4 :: Sun Nov 23 2014
+ -------------------------
+
+ Bug fixes:
+
+ - better error messages on missing server/account configuration (#3)
+ - remove fields without name data from bug records (#5)
+ - make user and password configuration optional (#12)
+
+
+ v0.5.3.1 :: Sun Nov 24 2013
+ ---------------------------
+
+ Bug fixes:
+
+ - fix installation error
+
+
+ v0.5.3 :: Sat Nov 23 2013
+ -------------------------
+
+ Bug fixes:
+
+ - editor: fix incorrect path to vi(1) when EDITOR is not defined
+ (issues/1; reported by @taa1)
+ - ``create`` command: treat "defaulted" fields as mandatory in case
+ no default is set (issues/2; reported by @taa1)
+ - ui: fix some unicode encoding errors
+ - ``fields`` command: handle minor changes in result format in 4.4
+ - correct the name of the platform field (platform -> rep_platform)
+
+ Other changes:
+
+ - expand bzr plugin documentation
+
+
+ v0.5.2 :: Tue Feb 7 2012
+ ------------------------
New features:
- ``priority`` command: set the priority of the given bugs.
- ``comment`` command learned the ``--which`` argument, for limiting
output to only the given comment(s).
- - ``search`` learned the --version argument.
+ - ``search`` learned the ``--version`` argument.
- ``edit`` command: edit the product version of a bug.
Bug fixes:
@@ -181,16 +279,16 @@
information.
- bugzillatools-0.5.1 :: Tue Jan 10 2012
- --------------------------------------
+ v0.5.1 :: Tue Jan 10 2012
+ -------------------------
Bug fixes:
- ``new`` command: fix assigned_to user matching.
- bugzillatools-0.5 :: Tue Jan 3 2012
- -----------------------------------
+ v0.5 :: Tue Jan 3 2012
+ ----------------------
New features:
@@ -207,8 +305,8 @@
- ``time`` command: calculate the hours worked on a bug.
- bugzillatools-0.4 :: Wed Nov 30 2011
- ------------------------------------
+ v0.4 :: Wed Nov 30 2011
+ -----------------------
New features:
@@ -235,8 +333,8 @@
``ConfigParser``). JSON configuration is no longer supported.
- bugzillatools-0.3 :: Sun Aug 7 2011
- -----------------------------------
+ v0.3 :: Sun Aug 7 2011
+ ----------------------
New features:
@@ -261,8 +359,8 @@
contains only one item.
- bugzillatools-0.2.1 :: Tue Jul 12 2011
- --------------------------------------
+ v0.2.1 :: Tue Jul 12 2011
+ -------------------------
Bug fixes:
@@ -271,8 +369,8 @@
- Add global arguments to subcommand ``--help`` output.
- bugzillatools-0.2 :: Sat Jul 2 2011
- -----------------------------------
+ v0.2 :: Sat Jul 2 2011
+ ----------------------
New features:
@@ -308,16 +406,16 @@
(formerly ~/.bugrc).
- bugzillatools-0.1.2 :: Fri Jun 17 2011
- --------------------------------------
+ v0.1.2 :: Fri Jun 17 2011
+ -------------------------
Bug fixes:
- Fix Bugzilla construction args
- bugzillatools-0.1.1 :: Tue Jun 14 2011
- --------------------------------------
+ v0.1.1 :: Tue Jun 14 2011
+ -------------------------
New features:
@@ -329,19 +427,20 @@
- Handle server lookup failure when no servers are defined.
- bugzillatools-0.1 :: Sun Jun 12 2011
- ------------------------------------
+ v0.1 :: Sun Jun 12 2011
+ -----------------------
New features:
- First release of bugzillatools
Platform: UNKNOWN
-Classifier: Development Status :: 3 - Alpha
+Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
-Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Software Development :: Bug Tracking
+Classifier: Topic :: Software Development :: Version Control
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bugzillatools-0.5.2/README new/bugzillatools-0.5.5/README
--- old/bugzillatools-0.5.2/README 2012-02-07 12:55:01.000000000 +0100
+++ new/bugzillatools-0.5.5/README 1970-01-01 01:00:00.000000000 +0100
@@ -1,149 +0,0 @@
-Bugzilla CLI client and XML-RPC binding and VCS plugins
-=======================================================
-
-Provides a CLI program and Python library for interacting with the
-Bugzilla_ bug tracking system, and plugins for version control
-systems that enable interaction with Bugzilla installations.
-
-Requires Python_ 2.7 and works with Bugzilla_ 4.0 or later.
-
-The Bazaar_ plugin requires Bazaar 2.0 or later.
-
-``bugzilla``
-------------
-
-Command-line application for interacting with Bugzilla servers.
-The following subcommands are available:
-
-:assign: Assign bugs to the given user.
-:block: Show or update block list of given bugs.
-:cc: Show or update CC List.
-:comment: List comments or file a comment on the given bugs.
-:config: Show or update configuration.
-:depend: Show or update dependencies of given bugs.
-:desc: Show the description of the given bug(s).
-:dump: Print internal representation of bug data.
-:edit: Edit the given bugs.
-:fields: List valid values for bug fields.
-:help: Show help.
-:history: Show the history of the given bugs.
-:info: Show detailed information about the given bugs.
-:list: Show a one-line summary of the given bugs.
-:new: File a new bug.
-:priority: Set the priority on the given bugs.
-:products: List the products of a Bugzilla instance.
-:search: Search for bugs matching given criteria.
-:status: Set the status of the given bugs.
-:time: Show or adjust times and estimates for the given bugs.
-
-
-``bzlib``
----------
-
-Library providing access to Bugzilla instances through the XML-RPC
-interface. Supports bug creation, bug information and comment
-retrieval, updating bug fields and appending comments to bugs.
-
-Bazaar_ plugin
---------------
-
-This plugin, when enabled for Bugzilla bugtrackers, marks bugs fixed on
-those trackers when ``bzr commit`` is invoked with the ``--fixes`` argument.
-It also adds a comment to the bug that includes the branch location, the
-commit message, the list of changed files and other details about the commit.
-
-
-.. _Bazaar: http://bazaar.canonical.com/
-.. _Bugzilla: http://www.bugzilla.org/
-.. _Python: http://python.org/
-
-
-Installation
-============
-
-::
-
- # via pip
- pip install bugzillatools # as superuser
- -or-
- pip install bugzillatools --user # user site-packages installation
-
- # via easy_install
- easy_install bugzillatools # as superuser
-
- # from source
- python setup.py install # as superuser
- -or-
- python setup.py install --user # user site-packages installation
-
-The ``bin/`` directory in your user base directory will need to appear
-on the ``PATH`` if installing to user site-packages. This directory is
-system dependent; see `PEP 370`__.
-
-__ http://www.python.org/dev/peps/pep-0370/
-
-If installing to user site-packages, some manual moving or symlinking
-of files will be required for the Bazaar plugin to be detected by
-Bazaar. `PEP 402`__ speaks to this shortcoming.
-
-__ http://www.python.org/dev/peps/pep-0402/
-
-
-Configuration
-=============
-
-A configuration file is looked for at ``~/.bugzillarc``. Its format is
-INI-like; the following configuration objects are understood:
-
-``core``
---------
-
-``server``
- Name of the default server
-
-``alias``
----------
-
-Option names are aliases; their values are the replacement.
-
-``server.<name>``
------------------
-
-Define a server. bugzillatools supports multiple servers; the
-``--server=<name>`` argument can be used to select a server.
-
-``url``
- Base URL of the Bugzilla server.
-``user``
- Bugzilla username.
-``password``
- Bugzilla password
-``assign_status``
- When the ``assign`` command is used, if the current status of a bug
- is in the first list, the status will be updated to the second item.
- The format is: ``<oldstatus>[,<oldstatus>]* <newstatus>``. An
- appropriate value for the default Bugzilla workflow might be:
- ``"UNCONFIRMED,CONFIRMED IN_PROGRESS"``.
-``default_product``
- If provided and if the provided string corresponds to the name of a
- product on this server, use that product as the default. The user
- will still be prompted to confirm.
-
-
-Example ``.bugzillarc``
------------------------
-
-::
-
- [core]
- server = example
-
- [server.example]
- url = http://bugzilla.example.com
- user = user(a)example.com
- password = sekrit
-
- [alias]
- fix = status --status RESOLVED --resolution FIXED
- wfm = status --status RESOLVED --resolution WORKSFORME
- confirm = status --status CONFIRMED
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bugzillatools-0.5.2/README.rst new/bugzillatools-0.5.5/README.rst
--- old/bugzillatools-0.5.2/README.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/bugzillatools-0.5.5/README.rst 2014-11-23 06:53:04.000000000 +0100
@@ -0,0 +1,196 @@
+bugzillatools consists of the ``bugzilla`` CLI program and a Python
+library for interacting with the Bugzilla_ bug tracking system, and
+plugins for version control systems that enable interaction with
+Bugzilla installations.
+
+The only dependency is Python_ 2.7 and bugzillatools works with
+Bugzilla_ 4.0 or later where the XML-RPC feature is enabled.
+
+.. _Bugzilla: http://www.bugzilla.org/
+.. _Python: http://python.org/
+
+
+Installation
+============
+
+::
+
+ # via pip
+ pip install bugzillatools # as superuser
+ -or-
+ pip install bugzillatools --user # user site-packages installation
+
+ # from source
+ python setup.py install # as superuser
+ -or-
+ python setup.py install --user # user site-packages installation
+
+The ``bin/`` directory in your user base directory will need to appear
+on the ``PATH`` if installing to user site-packages. This directory is
+system dependent; see :pep:`370`.
+
+If installing to user site-packages, some manual moving or symlinking
+of files will be required for the Bazaar plugin to be detected by
+Bazaar. :pep:`402` speaks to this shortcoming.
+
+
+Components
+==========
+
+``bugzilla`` program
+--------------------
+
+Command-line application for interacting with Bugzilla servers.
+The following subcommands are available:
+
+:assign: Assign bugs to the given user.
+:block: Show or update block list of given bugs.
+:cc: Show or update CC List.
+:comment: List comments or file a comment on the given bugs.
+:config: Show or update configuration.
+:depend: Show or update dependencies of given bugs.
+:desc: Show the description of the given bug(s).
+:dump: Print internal representation of bug data.
+:edit: Edit the given bugs.
+:fields: List valid values for bug fields.
+:help: Show help.
+:history: Show the history of the given bugs.
+:info: Show detailed information about the given bugs.
+:list: Show a one-line summary of the given bugs.
+:new: File a new bug.
+:priority: Set the priority on the given bugs.
+:products: List the products of a Bugzilla instance.
+:search: Search for bugs matching given criteria.
+:status: Set the status of the given bugs.
+:time: Show or adjust times and estimates for the given bugs.
+
+
+``bzlib``
+---------
+
+Library providing access to Bugzilla instances through the XML-RPC
+interface. Supports bug creation, bug information and comment
+retrieval, updating bug fields and appending comments to bugs.
+
+
+Bazaar_ plugin
+--------------
+
+This plugin, when enabled for Bugzilla bugtrackers, marks bugs fixed on
+those trackers when ``bzr commit`` is invoked with the ``--fixes`` argument.
+It also adds a comment to the bug that includes the branch location, the
+commit message, the list of changed files and other details about the commit.
+
+The Bazaar_ plugin requires Bazaar 2.0 or later.
+
+.. _Bazaar: http://bazaar.canonical.com/
+
+
+Configuration
+=============
+
+``.bugzillarc``
+---------------
+
+The ``bugzilla`` program looks for its configuration in
+``~/.bugzillarc``, which uses ini-style configuration.
+
+``core``
+^^^^^^^^
+
+``server``
+ Name of the default server
+
+``alias``
+^^^^^^^^^
+
+Option names are aliases; their values are the replacement.
+
+``server.<name>``
+^^^^^^^^^^^^^^^^^
+
+Define a server. bugzillatools supports multiple servers; the
+``--server=<name>`` argument can be used to select a server.
+
+``url``
+ Base URL of the Bugzilla server (mandatory)
+``user``
+ Bugzilla username (optional)
+``password``
+ Bugzilla password (optional)
+``assign_status``
+ When the ``assign`` command is used, if the current status of a bug
+ is in the first list, the status will be updated to the second item.
+ The format is: ``<oldstatus>[,<oldstatus>]* <newstatus>``. An
+ appropriate value for the default Bugzilla workflow might be:
+ ``"UNCONFIRMED,CONFIRMED IN_PROGRESS"``.
+``default_product``
+ If provided and if the provided string corresponds to the name of a
+ product on this server, use that product as the default. The user
+ will still be prompted to confirm.
+
+
+Example ``.bugzillarc``
+^^^^^^^^^^^^^^^^^^^^^^^
+
+::
+
+ [core]
+ server = example
+
+ [server.example]
+ url = http://bugzilla.example.com
+ user = user(a)example.com
+ password = sekrit
+
+ [alias]
+ fix = status --status RESOLVED --resolution FIXED
+ wfm = status --status RESOLVED --resolution WORKSFORME
+ confirm = status --status CONFIRMED
+
+
+Bazaar plugin
+-------------
+
+To enable the Bazaar bugzillatools plugin, include following
+configuration directives in either ``~/.bazaar/bazaar.conf`` (global
+configuration) or ``.bzr/branch/branch.conf`` (within a branch)::
+
+ bugzilla_<server>_bugzillatools_enable = True
+ bugzilla_<server>_url = <bugzilla url>
+ bugzilla_<server>_status = RESOLVED
+ bugzilla_<server>_resolution = FIXED
+
+Such a configuration assumes that a section ``[server.<server>]``
+has been defined in your ``.bugzillarc``.
+
+You can now set the status of bugs (using the status and resolution
+defined in the Bazaar config) directly::
+
+ bzr commit -m 'fix bug 123' --fixes <server>:123
+
+
+License
+=======
+
+bugzillatools is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+
+Contributing
+============
+
+The bugzillatools source code is available from
+https://github.com/frasertweedale/bugzillatools.
+
+Bug reports, patches, feature requests, code review and
+documentation are welcomed.
+
+To submit a patch, please use ``git send-email`` or generate a pull
+request. Write a `well formed commit message`_. If your patch is
+nontrivial, update the copyright notice at the top of each changed
+file.
+
+.. _well formed commit message: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bugzillatools-0.5.2/bzlib/__init__.py new/bugzillatools-0.5.5/bzlib/__init__.py
--- old/bugzillatools-0.5.2/bzlib/__init__.py 2012-02-07 13:00:58.000000000 +0100
+++ new/bugzillatools-0.5.5/bzlib/__init__.py 2015-04-25 10:10:28.000000000 +0200
@@ -1,5 +1,6 @@
# This file is part of bugzillatools
-# Copyright (C) 2011, 2012 Benon Technologies Pty Ltd, Fraser Tweedale
+# Copyright (C) 2011, 2012, 2013, 2014, 2015 Fraser Tweedale
+# Copyright (C) 2011, 2012 Benon Technologies Pty Ltd
#
# bugzillatools is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -14,11 +15,13 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-version_info = (0, 5, 2, 'final', 0)
+version_info = (0, 5, 5, 'final', 0)
version_fmt = '{0}.{1}'
if version_info[2]:
version_fmt += '.{2}'
if version_info[3] != 'final':
version_fmt += '{3}{4}'
+elif version_info[4]:
+ version_fmt += '.{4}'
version = version_fmt.format(*version_info)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bugzillatools-0.5.2/bzlib/bug.py new/bugzillatools-0.5.5/bzlib/bug.py
--- old/bugzillatools-0.5.2/bzlib/bug.py 2012-02-07 13:09:13.000000000 +0100
+++ new/bugzillatools-0.5.5/bzlib/bug.py 2015-04-25 08:32:22.000000000 +0200
@@ -1,6 +1,6 @@
# This file is part of bugzillatools
+# Copyright (C) 2011, 2012, 2013 Fraser Tweedale
# Copyright (C) 2011, 2012 Benon Technologies Pty Ltd
-# Copyright (C) 2011, 2012 Fraser Tweedale
#
# bugzillatools is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -74,7 +74,7 @@
"""
fields = frozenset([
'alias', 'assigned_to', 'component', 'creation_time', 'creator',
- 'id', 'last_change_time', 'op_sys', 'platform', 'priority',
+ 'id', 'last_change_time', 'op_sys', 'rep_platform', 'priority',
'product', 'resolution', 'severity', 'status', 'summary',
'target_milestone', 'qa_contact', 'url', 'version', 'whiteboard',
'limit', 'offset',
@@ -166,8 +166,8 @@
self.bugno = result['id']
return self.bugno
- def add_comment(self, comment):
- self.rpc('add_comment', id=self.bugno, comment=comment)
+ def add_comment(self, comment, is_private=False):
+ self.rpc('add_comment', id=self.bugno, comment=comment, is_private=is_private)
self.comments = None # comments are stale
self.history = None # history is stale
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bugzillatools-0.5.2/bzlib/bugzilla.py new/bugzillatools-0.5.5/bzlib/bugzilla.py
--- old/bugzillatools-0.5.2/bzlib/bugzilla.py 2012-01-03 13:03:02.000000000 +0100
+++ new/bugzillatools-0.5.5/bzlib/bugzilla.py 2014-11-23 07:00:42.000000000 +0100
@@ -1,5 +1,6 @@
# This file is part of bugzillatools
# Copyright (C) 2011 Benon Technologies Pty Ltd, Fraser Tweedale
+# Copyright (C) 2014 Fraser Tweedale
#
# bugzillatools is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -74,9 +75,16 @@
"No configuration for server '{}'."
.format(kwargs['server'])
)
- _server.update(
- {k: kwargs[k] for k in ('url', 'user', 'password') if kwargs[k]}
- )
+
+ for k in {'url', 'user', 'password'}:
+ if k in kwargs and kwargs[k]:
+ _server[k] = kwargs[k]
+
+ mandatory_kwargs = {'url'}
+ if mandatory_kwargs - _server.viewkeys():
+ missing_args = ', '.join(mandatory_kwargs - _server.viewkeys())
+ raise UserWarning("missing args: {}".format(missing_args))
+
return cls(**_server)
def __init__(self, url=None, user=None, password=None, **config):
@@ -109,7 +117,11 @@
)
url = url + 'xmlrpc.cgi' if url[-1] == '/' else url + '/xmlrpc.cgi'
# httplib explodes if url is unicode
- self.server = xmlrpclib.ServerProxy(str(url), use_datetime=True)
+ self.server = xmlrpclib.ServerProxy(
+ str(url),
+ use_datetime=True,
+ allow_none=True
+ )
def rpc(self, *args, **kwargs):
"""Do an RPC on the Bugzilla server.
@@ -160,7 +172,7 @@
effect. If not supplied, no effect.
"""
field = filter(lambda x: x['name'] == name, self.get_fields())[0]
- values = field['values']
+ values = [value for value in field['values'] if 'name' in value]
if omit_empty:
values = filter(lambda x: x['name'], values)
value_field = field.get('value_field')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bugzillatools-0.5.2/bzlib/command.py new/bugzillatools-0.5.5/bzlib/command.py
--- old/bugzillatools-0.5.2/bzlib/command.py 2012-02-07 13:11:54.000000000 +0100
+++ new/bugzillatools-0.5.5/bzlib/command.py 2015-04-25 08:43:49.000000000 +0200
@@ -1,6 +1,6 @@
# This file is part of bugzillatools
+# Copyright (C) 2011, 2012, 2013 Fraser Tweedale
# Copyright (C) 2011, 2012 Benon Technologies Pty Ltd
-# Copyright (C) 2011, 2012 Fraser Tweedale
#
# bugzillatools is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -352,6 +352,10 @@
lambda x: x.add_argument('--include-empty', action='store_false',
dest='omit_empty',
help='Include empty comments.'),
+ lambda x: x.add_argument('--private', action='store_true',
+ default=False,
+ dest='is_private',
+ help='Make comment private.'),
lambda x: x.add_argument('--which', type=int, nargs='+', metavar='N',
help='show only the given comment numbers'),
]
@@ -363,21 +367,17 @@
message = editor.input('Enter your comment.') \
if args.message is True else args.message
if message:
- map(lambda x: self.bz.bug(x).add_comment(message), args.bugs)
+ map(lambda x: self.bz.bug(x).add_comment(message, args.is_private), args.bugs)
else:
def cmtfmt(bug):
comments = sorted(
- self.bz.bug(bug).comments,
- key=lambda x: int(x['id']),
- reverse=True # initially reverse to apply limit
+ enumerate(self.bz.bug(bug).comments),
+ key=lambda x: int(x[1]['id'])
)
-
- # apply limit, if one given
- comments = comments[:abs(args.limit)] \
- if args.limit else comments
-
- # re-reverse if reversed comments were /not/ wanted
- comments = reversed(comments) if not args.reverse else comments
+ if args.reverse:
+ comments = list(reversed(comments))
+ if args.limit:
+ comments = comments[:abs(args.limit)]
return '=====\nBUG {}\n\n-----\n{}'.format(
bug,
@@ -385,8 +385,8 @@
self.formatstring.format(
'comment: {}'.format(n) if n else 'description',
**comment)
- for n, comment in enumerate(comments)
- if not (args.omit_empty and not comment['text']) \
+ for n, comment in comments
+ if not (args.omit_empty and not comment['text'])
and not (args.which and n not in args.which)
)
)
@@ -475,21 +475,23 @@
args = self._args
fields = filter(lambda x: 'values' in x, self.bz.get_fields())
for field in fields:
- keyfn = lambda x: x['visibility_values']
+ keyfn = lambda x: x.get('visibility_values')
groups = itertools.groupby(
sorted(field['values'], None, keyfn),
keyfn
)
print field['name'], ':'
for key, group in groups:
- values = sorted(group, None, lambda x: int(x['sortkey']))
+ keyfn = lambda x: int(x.get('sortkey', -1))
+ values = sorted(group, None, keyfn)
if key:
print ' {}: {}'.format(
- key,
+ ','.join(key),
','.join(map(lambda x: x['name'], values))
)
else:
- print ' ', ','.join(map(lambda x: x['name'], values))
+ value_names = (v.get('name') for v in values)
+ print ' ', ','.join(s for s in value_names if s)
def _format_history(history):
@@ -558,7 +560,11 @@
# get mandatory fields
fields = self.bz.get_fields()
- mandatory_fields = filter(lambda x: x['is_mandatory'], fields)
+ defaulted_fields = [
+ 'description', 'op_sys', 'rep_platform', 'priority', 'severity']
+ mandatory_fields = filter(
+ lambda x: x['is_mandatory'] or x['name'] in defaulted_fields,
+ fields)
# first choose the product
products = [x['name'] for x in self.bz.get_products()]
@@ -599,7 +605,7 @@
# (this info is not introspectable as of Bugzilla 4.0)
create_fields = [
'product', 'component', 'summary', 'version', 'comment',
- 'op_sys', 'platform', 'priority', 'severity', 'alias',
+ 'op_sys', 'rep_platform', 'priority', 'severity', 'alias',
'assigned_to', 'cc', 'comment_is_private', 'groups',
'qa_contact', 'status', 'target_milestone',
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bugzillatools-0.5.2/bzlib/editor.py new/bugzillatools-0.5.5/bzlib/editor.py
--- old/bugzillatools-0.5.2/bzlib/editor.py 2011-06-25 01:48:15.000000000 +0200
+++ new/bugzillatools-0.5.5/bzlib/editor.py 2015-04-25 09:17:05.000000000 +0200
@@ -1,5 +1,6 @@
# This file is part of bugzillatools
-# Copyright (C) 2011 Benon Technologies Pty Ltd, Fraser Tweedale
+# Copyright (C) 2011, 2013 Fraser Tweedale
+# Copyright (C) 2011 Benon Technologies Pty Ltd
#
# bugzillatools is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -25,32 +26,35 @@
def input(message, remove_comments=True):
- """Invoke $EDITOR for message input.
+ """Invoke ``$EDITOR`` for message input.
- Invoke $EDITOR or /bin/vi on a temporary file for user input.
+ Invoke ``$EDITOR`` or vi(1) on a temporary file for user input.
+
+ ``message``
+ A message describing what the user is inputting. Should be
+ terminated with a full stop.
+ ``remove_comments``
+ Remove lines starting with '#' from the data.
- message: A message describing what the user is inputting. Should be
- terminated with a full stop.
- remove_comments: Remove lines starting with '#' from the data.
"""
try:
- editor = os.environ['EDITOR']
+ editor = [os.environ['EDITOR']]
except KeyError:
- editor = '/bin/vi'
+ editor = ['/usr/bin/env', 'vi']
# build initial text
- text = [message]
+ text = [message.encode('utf-8')]
if remove_comments:
text.append("Lines starting with '#' will be ignored.")
text.append('An empty message aborts the operation.')
lines = ['\n'] # start with a single empty line
- lines += map(lambda x: '# ' + x + '\n', textwrap.wrap(' '.join(text)))
+ lines += map('# {}\n'.format, textwrap.wrap(' '.join(text)))
with tempfile.NamedTemporaryFile() as fh:
fh.writelines(lines)
fh.flush()
- returncode = subprocess.call([editor, fh.name])
+ returncode = subprocess.call(editor + [fh.name])
if returncode:
raise IOError('Editor did not exit cleanly')
fh.seek(0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bugzillatools-0.5.2/bzlib/test_bug.py new/bugzillatools-0.5.5/bzlib/test_bug.py
--- old/bugzillatools-0.5.2/bzlib/test_bug.py 2012-01-03 13:03:02.000000000 +0100
+++ new/bugzillatools-0.5.5/bzlib/test_bug.py 2013-11-23 06:24:01.000000000 +0100
@@ -1,4 +1,5 @@
# This file is part of bugzillatools
+# Copyright (C) 2013 Fraser Tweedale
# Copyright (C) 2011 Benon Technologies Pty Ltd
#
# bugzillatools is free software: you can redistribute it and/or modify
@@ -32,7 +33,7 @@
bug.Bug.search(self.bz, not_foobar='baz')
fields = frozenset([
'alias', 'assigned_to', 'component', 'creation_time', 'creator',
- 'id', 'last_change_time', 'op_sys', 'platform', 'priority',
+ 'id', 'last_change_time', 'op_sys', 'rep_platform', 'priority',
'product', 'resolution', 'severity', 'status', 'summary',
'target_milestone', 'qa_contact', 'url', 'version', 'whiteboard',
'limit', 'offset',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bugzillatools-0.5.2/bzlib/ui.py new/bugzillatools-0.5.5/bzlib/ui.py
--- old/bugzillatools-0.5.2/bzlib/ui.py 2012-01-03 13:59:44.000000000 +0100
+++ new/bugzillatools-0.5.5/bzlib/ui.py 2013-11-23 06:19:46.000000000 +0100
@@ -1,5 +1,6 @@
# This file is part of bugzillatools
-# Copyright (C) 2011, 2012 Fraser Tweedale, Benon Technologies Pty Ltd
+# Copyright (C) 2011, 2012, 2013 Fraser Tweedale
+# Copyright (C) 2011, 2012 Benon Technologies Pty Ltd
#
# bugzillatools is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -14,6 +15,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from __future__ import unicode_literals
+
import functools
import math
import re
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bugzillatools-0.5.2/setup.py new/bugzillatools-0.5.5/setup.py
--- old/bugzillatools-0.5.2/setup.py 2011-11-30 12:35:05.000000000 +0100
+++ new/bugzillatools-0.5.5/setup.py 2013-07-04 11:13:32.000000000 +0200
@@ -3,7 +3,7 @@
import bzlib # import version info
-with open('README') as fh:
+with open('README.rst') as fh:
readme = fh.read()
with open('CHANGES') as fh:
changes = fh.read()
@@ -14,8 +14,8 @@
version=bzlib.version,
description='Bugzilla CLI client, XML-RPC binding and VCS plugins',
author='Fraser Tweedale',
- author_email='frasert(a)jumbolotteries.com',
- url='https://gitorious.org/bugzillatools',
+ author_email='frase(a)frase.id.au',
+ url='https://github.com/frasertweedale/bugzillatools',
packages=['bzlib', 'bzrlib.plugins.bugzillatools'],
package_dir={
'bzlib': 'bzlib',
@@ -26,14 +26,15 @@
('doc/bugzillatools', ['doc/.bugzillarc.sample']),
],
classifiers=[
- 'Development Status :: 3 - Alpha',
+ 'Development Status :: 4 - Beta',
'Environment :: Console',
'Intended Audience :: Developers',
'Intended Audience :: Information Technology',
- 'License :: OSI Approved :: GNU General Public License (GPL)',
+ 'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)',
'Operating System :: OS Independent',
'Programming Language :: Python :: 2.7',
'Topic :: Software Development :: Bug Tracking',
+ 'Topic :: Software Development :: Version Control',
],
long_description=long_description,
)
1
0
Hello community,
here is the log from the commit of package openslide for openSUSE:Factory checked in at 2015-04-30 11:50:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openslide (Old)
and /work/SRC/openSUSE:Factory/.openslide.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openslide"
Changes:
--------
--- /work/SRC/openSUSE:Factory/openslide/openslide.changes 2014-01-30 11:36:42.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.openslide.new/openslide.changes 2015-04-30 11:50:55.000000000 +0200
@@ -1,0 +2,26 @@
+Tue Apr 28 20:26:50 UTC 2015 - dmitry_r(a)opensuse.org
+
+- Update to version 3.4.1
+ * New formats: Philips TIFF, Ventana TIFF
+ * Support OpenJPEG 2.1.0
+ * Improve performance of JPEG and JP2K decoding
+ * Add openslide.region[i].* properties
+ * Improve MATLAB compatibility
+ * Enable function deprecation warnings with MSVC
+ * Many portability fixes
+ * aperio: Detect OpenJPEG chroma subsampling breakage during open
+ * aperio: Fill in missing tiles with downsampled data
+ * aperio: Report MPP for slides scanned in locales with decimal comma
+ * hamamatsu: Support NDPI files > 4 GB
+ * hamamatsu: Properly detect NDPI slides produced by NDP.toolkit
+ * hamamatsu: Support VMS/VMU slides without a NoLayers key
+ * hamamatsu: Report MPP for VMS/VMU
+ * leica: Support slides with 2010/03/10 XML namespace
+ * leica: Base64-decode leica.barcode property in 2010/10/01 namespace
+ * sakura: Support slides with multiple focal planes
+ * sakura: Support slides without tile table
+ * ventana: Support slides with multiple focal planes
+ * ventana: Improve positioning of AOIs within level
+ * ventana: Fix failure to recognize macro image on some slides
+
+-------------------------------------------------------------------
Old:
----
openslide-3.4.0.tar.xz
New:
----
openslide-3.4.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openslide.spec ++++++
--- /var/tmp/diff_new_pack.t8Pop0/_old 2015-04-30 11:50:55.000000000 +0200
+++ /var/tmp/diff_new_pack.t8Pop0/_new 2015-04-30 11:50:55.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package openslide
#
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
%define libname lib%{name}
Name: openslide
-Version: 3.4.0
+Version: 3.4.1
Release: 0
Summary: C library for reading virtual slides
License: LGPL-2.1
@@ -35,7 +35,8 @@
BuildRequires: libpng-devel
BuildRequires: libtiff-devel
BuildRequires: libxml2-devel
-BuildRequires: openjpeg-devel
+BuildRequires: openjpeg2-devel
+BuildRequires: pkg-config
BuildRequires: sqlite3-devel
BuildRequires: xz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ openslide-3.4.0.tar.xz -> openslide-3.4.1.tar.xz ++++++
++++ 19897 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package ansible for openSUSE:Factory checked in at 2015-04-30 11:50:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ansible (Old)
and /work/SRC/openSUSE:Factory/.ansible.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ansible"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ansible/ansible.changes 2015-04-02 16:03:34.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ansible.new/ansible.changes 2015-04-30 11:50:52.000000000 +0200
@@ -1,0 +2,14 @@
+Tue Apr 28 19:03:01 UTC 2015 - boris(a)steki.net
+
+- updated to version 1.9.1
+ * Fixed a bug related to Kerberos auth when using winrm with a domain account.
+ * Fixing several bugs in the s3 module.
+ * Fixed a bug with upstart service detection in the service module.
+ * Fixed several bugs with the user module when used on OSX.
+ * Fixed unicode handling in some module situations (assert and shell/command execution).
+ * Fixed a bug in redhat_subscription when using the activationkey parameter.
+ * Fixed a traceback in the gce module on EL6 distros when multiple pycrypto installations are available.
+ * Added support for PostgreSQL 9.4 in rds_param_group
+ * Several other minor fixes.
+
+-------------------------------------------------------------------
Old:
----
ansible-1.9.0.1.tar.gz
New:
----
ansible-1.9.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ansible.spec ++++++
--- /var/tmp/diff_new_pack.kr7Xn8/_old 2015-04-30 11:50:53.000000000 +0200
+++ /var/tmp/diff_new_pack.kr7Xn8/_new 2015-04-30 11:50:53.000000000 +0200
@@ -19,7 +19,7 @@
Name: ansible
-Version: 1.9.0.1
+Version: 1.9.1
Release: 0
Summary: Radically simple IT automation
License: GPL-3.0
++++++ ansible-1.9.0.1.tar.gz -> ansible-1.9.1.tar.gz ++++++
++++ 1641 lines of diff (skipped)
1
0