Hello community,

here is the log from the commit of package salt for openSUSE:Factory checked in 
at 2014-07-31 10:04:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/salt (Old)
 and      /work/SRC/openSUSE:Factory/.salt.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "salt"

Changes:
--------
--- /work/SRC/openSUSE:Factory/salt/salt.changes        2014-07-25 
12:27:54.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.salt.new/salt.changes   2014-07-31 
10:04:38.000000000 +0200
@@ -1,0 +2,11 @@
+Wed Jul 30 20:22:09 UTC 2014 - abo...@gmail.com
+
+- Updated to 2014.1.8:
+  + Ensure salt-ssh will not continue if permissions on a temporary directory 
are not correct.
+  + Use the bootstrap script distributed with Salt instead of relying on an 
external resource
+  + Remove unused testing code
+  + Ensure salt states are placed into the .salt directory in salt-ssh
+  + Use a randomized path for temporary files in a salt-cloud deployment
+  + Clean any stale directories to ensure a fresh copy of salt-ssh during a 
deployment
+
+-------------------------------------------------------------------

Old:
----
  salt-2014.1.7.tar.gz

New:
----
  salt-2014.1.8.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ salt.spec ++++++
--- /var/tmp/diff_new_pack.c7tU4M/_old  2014-07-31 10:04:40.000000000 +0200
+++ /var/tmp/diff_new_pack.c7tU4M/_new  2014-07-31 10:04:40.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           salt
-Version:        2014.1.7
+Version:        2014.1.8
 Release:        0
 Summary:        A parallel remote execution system
 License:        Apache-2.0

++++++ salt-2014.1.7.tar.gz -> salt-2014.1.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/PKG-INFO new/salt-2014.1.8/PKG-INFO
--- old/salt-2014.1.7/PKG-INFO  2014-07-09 23:02:13.000000000 +0200
+++ new/salt-2014.1.8/PKG-INFO  2014-07-30 21:56:06.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: salt
-Version: 2014.1.7
+Version: 2014.1.8
 Summary: Portable, distributed, remote execution and configuration management 
system
 Home-page: http://saltstack.org
 Author: Thomas S Hatch
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/doc/topics/releases/2014.1.8.rst 
new/salt-2014.1.8/doc/topics/releases/2014.1.8.rst
--- old/salt-2014.1.7/doc/topics/releases/2014.1.8.rst  1970-01-01 
01:00:00.000000000 +0100
+++ new/salt-2014.1.8/doc/topics/releases/2014.1.8.rst  2014-07-30 
21:48:40.000000000 +0200
@@ -0,0 +1,18 @@
+===========================
+Salt 2014.1.8 Release Notes
+===========================
+
+:release: 2014-07-30
+
+Version 2014.1.8 is another bugfix release for :doc:`2014.1.0
+</topics/releases/2014.1.0>`.  Changes include:
+
+- Ensure salt-ssh will not continue if permissions on a temporary directory are
+  not correct.
+- Use the bootstrap script distributed with Salt instead of relying on an
+  external resource
+- Remove unused testing code
+- Ensure salt states are placed into the ``.salt`` directory in salt-ssh
+- Use a randomized path for temporary files in a salt-cloud deployment
+- Clean any stale directories to ensure a fresh copy of salt-ssh during a
+  deployment
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/pkg/smartos/esky/BUILD_ENVIRONMENT.md 
new/salt-2014.1.8/pkg/smartos/esky/BUILD_ENVIRONMENT.md
--- old/salt-2014.1.7/pkg/smartos/esky/BUILD_ENVIRONMENT.md     2014-06-24 
22:07:36.000000000 +0200
+++ new/salt-2014.1.8/pkg/smartos/esky/BUILD_ENVIRONMENT.md     2014-07-29 
18:03:05.000000000 +0200
@@ -13,7 +13,7 @@
 
 mv /opt/local /opt/local.backup ; hash -r
 cd /
-curl 
http://pkgsrc.joyent.com/packages/SmartOS/bootstrap/bootstrap-2013Q3-x86_64.tar.gz
 | gtar xz
+curl 
http://pkgsrc.joyent.com/packages/SmartOS/bootstrap/bootstrap-2013Q4-x86_64.tar.gz
 | gtar xz
 hash -r
 
 pkgin -y up
@@ -23,13 +23,8 @@
 cd /opt/local/bin
 curl -kO 'https://us-east.manta.joyent.com/nahamu/public/smartos/bins/patchelf'
 chmod +x patchelf
-cat >swig <<"EOF"
-#!/bin/bash
-exec /opt/local/bin/swig2.0 -I/opt/local/include "$@"
-EOF
 
-pip install esky
-yes | pip uninstall bbfreeze
+pip install esky bbfreeze
 
 cd $HERE
 curl -kO 
'https://pypi.python.org/packages/source/b/bbfreeze-loader/bbfreeze-loader-1.1.0.zip'
@@ -41,16 +36,17 @@
 gcc $HERE/console.o $HERE/getpath.o 
/opt/local/lib/python2.7/config/libpython2.7.a -L/opt/local/lib 
-L/opt/local/lib/python2.7/config -L/opt/local/lib -lsocket -lnsl -ldl -lrt -lm 
-static-libgcc -o $HERE/console.exe
 patchelf --set-rpath '$ORIGIN:$ORIGIN/../lib' $HERE/console.exe
 
-git clone git://github.com/schmir/bbfreeze -b master
-( cd $HERE/bbfreeze && easy_install-2.7 . )
 find /opt/local -name console.exe -exec mv $HERE/console.exe {} \;
 
-git clone git://github.com/saltstack/salt -b 0.17
-( cd $HERE/salt && python2.7 setup.py bdist && python2.7 setup.py bdist_esky )
-
-mv /opt/local /opt/local.build ; hash -r
-mv /opt/local.backup /opt/local ; hash -r
+git clone git://github.com/saltstack/salt -b 2014.1
+cd $HERE/salt
+pip install -r requirements.txt
+# packages not in main requirements file that are nice to have
+pip install -r pkg/smartos/esky/requirements.txt
+bash pkg/smartos/esky/build-tarball.sh
 
+# Upload packages into Manta
+pkgin -y in sdc-manta
 mmkdir -p /$MANTA_USER/public/salt
-mput /$MANTA_USER/public/salt -f $(ls salt/dist/*.zip)
+for file in dist/salt*; do mput -m /$MANTA_USER/public/salt -f $file; done;
 ```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/pkg/smartos/esky/install.sh 
new/salt-2014.1.8/pkg/smartos/esky/install.sh
--- old/salt-2014.1.7/pkg/smartos/esky/install.sh       2014-06-24 
22:07:36.000000000 +0200
+++ new/salt-2014.1.8/pkg/smartos/esky/install.sh       2014-07-29 
18:03:05.000000000 +0200
@@ -2,17 +2,50 @@
 
 HERE=$(dirname $0)
 TOP=$(cd $HERE/.. ; pwd)
+OUTPUT=$HERE/output
+GZ_SMF=/opt/custom/smf
+MASTER=$1
 
-mkdir $HERE/output
+# process the manifests
+mkdir $OUTPUT
 for file in $HERE/*.xml
 do
-  sed "s#SALT_PREFIX#$TOP#" <$file >$HERE/output/$(basename $file)
-  svccfg import $HERE/output/$(basename $file)
+  sed "s#SALT_PREFIX#$TOP#" <$file >$OUTPUT/$(basename $file)
 done
-rm -rf $HERE/output
 
-echo "To enable services, invoke any of"
-echo "    svcadm enable salt-minion"
-echo "    svcadm enable salt-master"
-echo "    svcadm enable salt-syndic"
-echo "as appropriate"
+# detect global or non-global zone
+if [[ $(zonename) == global ]]
+then
+  # we assume global zones are always minions only
+  # and we assume that they want to have the service come back on reboot
+  mkdir -p $GZ_SMF
+  sed 's/false/true/' < $OUTPUT/salt-minion.xml > $GZ_SMF/salt-minion.xml
+  svccfg import $OUTPUT/salt-minion.xml
+  echo "Minion is set to be launched at boot"
+else
+  # non global zones get all three services imported
+  # and the user can enable whichever ones they want
+  for file in $OUTPUT/*.xml
+  do
+    svccfg import $file
+  done
+  echo "To enable master service, invoke either of"
+  echo "    svcadm enable salt-master"
+  echo "    svcadm enable salt-syndic"
+  echo "as appropriate"
+fi
+
+# if the user provided the name of the master as an argument
+# configure a minimal minion file and start the minion
+if [[ -n $MASTER ]]
+then
+  [[ -f $TOP/etc/minion.example ]] || mv $TOP/etc/minion{,.example}
+  echo "master: $MASTER" > $TOP/etc/minion
+  echo "Minion configured to talk to master $MASTER. Enabling minion now."
+  svcadm enable salt-minion
+else
+  echo "To enable minion service, invoke:"
+  echo "    svcadm enable salt-minion"
+fi
+
+rm -rf $OUTPUT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/pkg/smartos/esky/requirements.txt 
new/salt-2014.1.8/pkg/smartos/esky/requirements.txt
--- old/salt-2014.1.7/pkg/smartos/esky/requirements.txt 1970-01-01 
01:00:00.000000000 +0100
+++ new/salt-2014.1.8/pkg/smartos/esky/requirements.txt 2014-07-30 
21:48:57.000000000 +0200
@@ -0,0 +1,3 @@
+GitPython==0.3.2.RC1
+halite
+cherrypy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/pkg/smartos/esky/salt-minion.xml 
new/salt-2014.1.8/pkg/smartos/esky/salt-minion.xml
--- old/salt-2014.1.7/pkg/smartos/esky/salt-minion.xml  2014-06-24 
22:07:36.000000000 +0200
+++ new/salt-2014.1.8/pkg/smartos/esky/salt-minion.xml  2014-07-29 
18:03:05.000000000 +0200
@@ -28,7 +28,7 @@
 
       <exec_method type="method"
                    name="start"
-                   exec="SALT_PREFIX/bin/salt-minion"
+                   exec="auditconfig -setaudit 0 lo 0,0,localhost 5417 
SALT_PREFIX/bin/salt-minion"
                    timeout_seconds="60">
         <method_context>
           <method_environment>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/salt/client/ssh/__init__.py 
new/salt-2014.1.8/salt/client/ssh/__init__.py
--- old/salt-2014.1.7/salt/client/ssh/__init__.py       2014-06-24 
23:41:29.000000000 +0200
+++ new/salt-2014.1.8/salt/client/ssh/__init__.py       2014-07-30 
21:49:32.000000000 +0200
@@ -137,6 +137,16 @@
             if [ $? -ne 0 ]; then
                 exit 1
             fi
+            if [ "$(stat -c %a /tmp/.salt)" != "700" ]
+            then
+                echo "Permissions for /tmp/.salt not correct. Exiting!"
+                exit 1
+            fi
+            if [ "$(stat -c %u /tmp/.salt)" != "0" ] 
+            then
+                echo "Ownership for /tmp/.salt not correct. Exiting!"
+                exit 1
+            fi
             echo "{1}"
             echo "deploy"
             exit 1
@@ -158,7 +168,7 @@
                  exit 1
              fi
          else
-             mkdir -m 0700 -p /tmp/.salt
+             rm -rf /tmp/.salt && mkdir -m 0700 -p /tmp/.salt
              echo "{1}"
              echo "deploy"
              exit 1
@@ -284,6 +294,7 @@
         '''
         The ssh-copy-id routine
         '''
+        ret = {}
         arg_str = 'ssh.set_auth_key {0} {1}'.format(
                 target.get('user', 'root'),
                 self.get_pubkey())
@@ -806,8 +817,8 @@
         trans_tar = prep_trans_tar(self.opts, chunks, file_refs)
         self.shell.send(
                 trans_tar,
-                '/tmp/salt_state.tgz')
-        self.arg_str = 'state.pkg /tmp/salt_state.tgz test={0}'.format(test)
+                '/tmp/.salt/salt_state.tgz')
+        self.arg_str = 'state.pkg /tmp/.salt/salt_state.tgz 
test={0}'.format(test)
 
 
 class SSHState(salt.state.State):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/salt/cloud/libcloudfuncs.py 
new/salt-2014.1.8/salt/cloud/libcloudfuncs.py
--- old/salt-2014.1.7/salt/cloud/libcloudfuncs.py       2014-06-24 
22:07:36.000000000 +0200
+++ new/salt-2014.1.8/salt/cloud/libcloudfuncs.py       2014-07-30 
21:48:57.000000000 +0200
@@ -43,7 +43,7 @@
     return states[id_]
 
 
-def check_libcloud_version(reqver='0.13.2', why=None):
+def check_libcloud_version(reqver=(0, 13, 2), why=None):
     '''
     Compare different libcloud versions
     '''
@@ -52,11 +52,7 @@
     except ImportError:
         raise ImportError('salt-cloud requires >= libcloud {0}'.format(reqver))
 
-    reqver = reqver.replace('-', '.')
-    comps = reqver.split('.')
-    required_version = []
-    for number in comps[:3]:
-        required_version.append(int(number))
+    required_version = list(reqver)
     ver = libcloud.__version__
     ver = ver.replace('-', '.')
     comps = ver.split('.')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/salt/modules/config.py 
new/salt-2014.1.8/salt/modules/config.py
--- old/salt-2014.1.7/salt/modules/config.py    2014-06-24 22:07:36.000000000 
+0200
+++ new/salt-2014.1.8/salt/modules/config.py    2014-07-30 21:49:32.000000000 
+0200
@@ -250,22 +250,3 @@
         if key.startswith('{0}.'.format(value)):
             ret[key] = val
     return ret
-
-
-def gather_bootstrap_script(replace=False):
-    '''
-    Download the salt-bootstrap script, set replace to True to refresh the
-    script if it has already been downloaded
-
-    CLI Example:
-
-    .. code-block:: bash
-
-        salt '*' config.gather_bootstrap_script True
-    '''
-    fn_ = os.path.join(__opts__['cachedir'], 'bootstrap.sh')
-    if not replace and os.path.isfile(fn_):
-        return fn_
-    with salt.utils.fopen(fn_, 'w+') as fp_:
-        fp_.write(urllib2.urlopen('http://bootstrap.saltstack.org').read())
-    return fn_
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/salt/modules/seed.py 
new/salt-2014.1.8/salt/modules/seed.py
--- old/salt-2014.1.7/salt/modules/seed.py      2014-06-24 23:41:29.000000000 
+0200
+++ new/salt-2014.1.8/salt/modules/seed.py      2014-07-30 21:49:32.000000000 
+0200
@@ -15,6 +15,7 @@
 import salt.crypt
 import salt.utils
 import salt.config
+import salt.syspaths
 
 
 # Set up logging
@@ -149,17 +150,11 @@
     install it.
     Return True if install is successful or already installed.
     '''
-
     # Verify that the boostrap script is downloaded
-    bs_ = __salt__['config.gather_bootstrap_script']()
-    log.warn('bootstrap: {0}'.format(bs_))
-    # Apply the minion config
-    # Copy script into tmp
-    shutil.copy(bs_, os.path.join(mpt, 'tmp'))
     _check_resolv(mpt)
     # Exec the chroot command
     cmd = 'if type salt-minion; then exit 0; '
-    cmd += 'else sh /tmp/bootstrap.sh -c /tmp; fi'
+    cmd += 'else sh {0} -c /tmp; fi'.format(salt.syspaths.BOOTSTRAP)
     return not _chroot_exec(mpt, cmd)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/salt/modules/smf.py 
new/salt-2014.1.8/salt/modules/smf.py
--- old/salt-2014.1.7/salt/modules/smf.py       2014-06-24 23:41:29.000000000 
+0200
+++ new/salt-2014.1.8/salt/modules/smf.py       2014-07-30 21:48:24.000000000 
+0200
@@ -51,7 +51,7 @@
         salt '*' service.get_running
     '''
     ret = set()
-    cmd = '/usr/bin/svcs -H -o SVC,STATE -s SVC'
+    cmd = '/usr/bin/svcs -H -o FMRI,STATE -s FMRI'
     lines = __salt__['cmd.run'](cmd).splitlines()
     for line in lines:
         comps = line.split()
@@ -73,7 +73,7 @@
         salt '*' service.get_stopped
     '''
     ret = set()
-    cmd = '/usr/bin/svcs -aH -o SVC,STATE -s SVC'
+    cmd = '/usr/bin/svcs -aH -o FMRI,STATE -s FMRI'
     lines = __salt__['cmd.run'](cmd).splitlines()
     for line in lines:
         comps = line.split()
@@ -89,12 +89,17 @@
     Returns ``True`` if the specified service is available, otherwise returns
     ``False``.
 
+    We look up the name with the svcs command to get back the FMRI
+    This allows users to use simpler service names
+
     CLI Example:
 
     .. code-block:: bash
 
         salt '*' service.available net-snmp
     '''
+    cmd = '/usr/bin/svcs -H -o FMRI {0}'.format(name)
+    name = __salt__['cmd.run'](cmd)
     return name in get_all()
 
 
@@ -110,6 +115,8 @@
 
         salt '*' service.missing net-snmp
     '''
+    cmd = '/usr/bin/svcs -H -o FMRI {0}'.format(name)
+    name = __salt__['cmd.run'](cmd)
     return name not in get_all()
 
 
@@ -124,7 +131,7 @@
         salt '*' service.get_all
     '''
     ret = set()
-    cmd = '/usr/bin/svcs -aH -o SVC,STATE -s SVC'
+    cmd = '/usr/bin/svcs -aH -o FMRI,STATE -s FMRI'
     lines = __salt__['cmd.run'](cmd).splitlines()
     for line in lines:
         comps = line.split()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/salt/pillar/git_pillar.py 
new/salt-2014.1.8/salt/pillar/git_pillar.py
--- old/salt-2014.1.7/salt/pillar/git_pillar.py 2014-06-24 23:41:29.000000000 
+0200
+++ new/salt-2014.1.8/salt/pillar/git_pillar.py 2014-07-30 21:48:57.000000000 
+0200
@@ -99,26 +99,27 @@
 
         for idx, opts_dict in enumerate(self.opts['ext_pillar']):
 
-            # self.opts['ext_pillar'] always contains full ext_pillar list
-            if 'git' not in opts_dict:
-                continue
-
+            # self.opts['ext_pillar'] always contains the full list of
+            # ext_pillar options specified in the master config file.
+            # We iterate over that list until we find the branch and location
+            # that match the options passed in via the 'opts' variable.
+            # The reason this is done in a loop is to set the 'idx' variable,
+            # which is used to form the path to the cached local copy of the
+            # git repository.
             parts = opts_dict.get('git', '').split()
 
-            # parts = 2: 'master' 'git_repo_uri'
-            # parts = 3: 'master' 'git_repo_uri' 'root=pillars_dir'
-            if len(parts) == 2:
-                self.branch = parts[0]
-                self.rp_location = parts[1]
-            elif len(parts) == 3:
-                self.branch = parts[0]
-                self.rp_location = parts[1]
-                self.root = parts[2]
-            else:
-                log.error("Unable to initilize GitPillar with ext_pillar: %s",
+            # expected option format:
+            # len(parts) = 2: 'master' 'git_repo_uri'
+            # len(parts) = 3: 'master' 'git_repo_uri' 'root=pillars_dir'
+            if len(parts) < 2 or len(parts) > 3:
+                log.error("Unable to initilize GitPillar with invalid \
+                          ext_pillar option format: %s",
                           opts_dict.get('git', None))
                 break
 
+            if self.branch != parts[0] or self.rp_location != parts[1]:
+                continue
+
             rp_ = os.path.join(self.opts['cachedir'],
                                'pillar_gitfs', str(idx))
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/salt/syspaths.py 
new/salt-2014.1.8/salt/syspaths.py
--- old/salt-2014.1.7/salt/syspaths.py  2014-06-24 22:07:36.000000000 +0200
+++ new/salt-2014.1.8/salt/syspaths.py  2014-07-30 21:49:32.000000000 +0200
@@ -58,3 +58,6 @@
     BASE_MASTER_ROOTS_DIR = os.path.join(SRV_ROOT_DIR, 'salt-master')
     LOGS_DIR = os.path.join(ROOT_DIR, 'var', 'log', 'salt')
     PIDFILE_DIR = os.path.join(ROOT_DIR, 'var', 'run')
+    INSTALL_DIR = os.path.dirname(os.path.realpath(__file__))
+    CLOUD_DIR = os.path.join(INSTALL_DIR, 'cloud')
+    BOOTSTRAP = os.path.join(CLOUD_DIR, 'deploy', 'bootstrap-salt.sh')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/salt/utils/cloud.py 
new/salt-2014.1.8/salt/utils/cloud.py
--- old/salt-2014.1.7/salt/utils/cloud.py       2014-06-27 22:26:23.000000000 
+0200
+++ new/salt-2014.1.8/salt/utils/cloud.py       2014-07-30 21:49:32.000000000 
+0200
@@ -16,6 +16,7 @@
 import logging
 import pipes
 import re
+import uuid
 
 # Let's import pwd and catch the ImportError. We'll raise it if this is not
 # Windows
@@ -553,6 +554,8 @@
     '''
     Copy a deploy script to a remote server, execute it, and remove it
     '''
+    tmp_dir = '{0}-{1}'.format(tmp_dir, uuid.uuid4())
+    deploy_command = os.path.join(tmp_dir, 'deploy.sh')
     if key_filename is not None and not os.path.isfile(key_filename):
         raise SaltCloudConfigError(
             'The defined key_filename {0!r} does not exist'.format(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/salt/utils/filebuffer.py 
new/salt-2014.1.8/salt/utils/filebuffer.py
--- old/salt-2014.1.7/salt/utils/filebuffer.py  2014-06-24 22:07:36.000000000 
+0200
+++ new/salt-2014.1.8/salt/utils/filebuffer.py  2014-07-30 21:49:32.000000000 
+0200
@@ -99,62 +99,3 @@
 
     def __exit__(self, exc_type, exc_value, traceback):
         pass
-
-
-def _main():
-    def timeit_string(fpath, max_size, chunk_size):
-
-        breader = BufferedReader(fpath, max_size, chunk_size)
-        for chunk in breader:
-            chunk  # pylint: disable=W0104
-        return
-
-    def sizeof_fmt(num):
-        for unit in ['bytes', 'KB', 'MB', 'GB']:
-            if num < 1024.0:
-                return '{0:3.1f}{1}'.format(num, unit)
-            num /= 1024.0
-        return '{0:3.1f}{1}'.format(num, 'TB')
-
-    import os
-    import timeit
-    fpath = os.path.normpath(os.path.join(
-        os.path.dirname(__file__),
-        "../../doc/topics/tutorials/starting_states.rst"
-    ))
-
-    tpath = "/tmp/starting_states.rst"
-
-    for fmultiplier in (1, 10, 50, 100, 800, 3200):
-        ffile = salt.utils.fopen(tpath, 'w')
-        while fmultiplier > 0:
-            ffile.write(salt.utils.fopen(fpath).read())
-            fmultiplier -= 1
-
-        ffile.close()
-
-        tnumber = 1000
-
-        print('Running tests against a file with the size of {0}'.format(
-            sizeof_fmt(os.stat(tpath).st_size))
-        )
-
-        for multiplier in [4, 8, 16, 32, 64, 128, 256]:
-            chunk_size = multiplier * 1024
-            max_size = chunk_size * 5
-            timer = timeit.Timer(
-                "timeit_string('{0}', {1:d}, {2:d})".format(
-                    tpath, max_size, chunk_size
-                ), "from __main__ import timeit_string"
-            )
-            print("timeit_string ({0: >7} chunks; max: {1: >7}):".format(
-                sizeof_fmt(chunk_size), sizeof_fmt(max_size))),
-            print(u"{0: >6} \u00B5sec/pass".format(u"{0:0.2f}".format(
-                tnumber * timer.timeit(number=tnumber) / tnumber
-            )))
-
-        print
-
-
-if __name__ == '__main__':
-    _main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/salt/version.py 
new/salt-2014.1.8/salt/version.py
--- old/salt-2014.1.7/salt/version.py   2014-07-09 22:57:34.000000000 +0200
+++ new/salt-2014.1.8/salt/version.py   2014-07-30 21:48:57.000000000 +0200
@@ -19,7 +19,22 @@
 
 # ----- ATTENTION 
--------------------------------------------------------------------------------------------------->
 #
-# For version bumps, please update `__saltstack_version__` below
+# ALL major version bumps, new release codenames, MUST be defined in the 
SaltStackVersion.NAMES dictionary, ie:
+#
+#    class SaltStackVersion(object):
+#
+#        NAMES = {
+#            'Hydrogen': (2014, 1),   # <- This is the tuple to bump versions
+#            ( ... )
+#        }
+#
+#
+# ONLY UPDATE CODENAMES AFTER BRANCHING
+#
+# As an example, The Helium codename must only be properly defined with 
"(2014, 7)" after Hydrogen, "(2014, 1)", has
+# been branched out into it's own branch.
+#
+# ALL OTHER VERSION INFORMATION IS EXTRACTED FROM THE GIT TAGS
 #
 # <---- ATTENTION 
----------------------------------------------------------------------------------------------------
 
@@ -32,13 +47,17 @@
     and also supports version comparison.
     '''
 
-    __slots__ = ('name', 'major', 'minor', 'bugfix', 'rc', 'noc', 'sha')
+    __slots__ = ('name', 'major', 'minor', 'bugfix', 'mbugfix', 'rc', 'noc', 
'sha')
 
     git_describe_regex = re.compile(
-        r'(?:[^\d]+)?(?P<major>[\d]{1,4})\.(?P<minor>[\d]{1,2})'
-        r'(?:\.(?P<bugfix>[\d]{0,2}))?(?:rc(?P<rc>[\d]{1}))?'
-        r'(?:(?:.*)-(?P<noc>[\d]+)-(?P<sha>[a-z0-9]{8}))?'
+        r'(?:[^\d]+)?(?P<major>[\d]{1,4})'
+        r'\.(?P<minor>[\d]{1,2})'
+        r'(?:\.(?P<bugfix>[\d]{0,2}))?'
+        r'(?:\.(?P<mbugfix>[\d]{0,2}))?'
+        r'(?:rc(?P<rc>[\d]{1}))?'
+        r'(?:(?:.*)-(?P<noc>(?:[\d]+|n/a))-(?P<sha>[a-z0-9]{8}))?'
     )
+    git_sha_regex = re.compile(r'(?P<sha>[a-z0-9]{7})')
 
     # Salt versions after 0.17.0 will be numbered like:
     #   <4-digit-year>.<month>.<bugfix>
@@ -52,119 +71,121 @@
         # latest release so we can map deprecation warnings to versions.
 
 
-        # ----- Please refrain from fixing PEP-8 E203 
--------------------------------------------------------------->
+        # pylint: disable=E8203,E8265
+        # ----- Please refrain from fixing PEP-8 E203 and E265 
------------------------------------------------------>
         # The idea is keep this readable
         # 
------------------------------------------------------------------------------------------------------------
-        'Hydrogen': (2014, 1, 7, 0),
-        'Helium': (sys.maxint - 107, 0, 0, 0),
-        'Lithium': (sys.maxint - 106, 0, 0, 0),
-        'Beryllium': (sys.maxint - 105, 0, 0, 0),
-        'Boron': (sys.maxint - 104, 0, 0, 0),
-        #'Carbon'       : (sys.maxint - 103, 0, 0, 0),
-        #'Nitrogen'     : (sys.maxint - 102, 0, 0, 0),
-        #'Oxygen'       : (sys.maxint - 101, 0, 0, 0),
-        #'Fluorine'     : (sys.maxint - 100, 0, 0, 0),
-        #'Neon'         : (sys.maxint - 99 , 0, 0, 0),
-        #'Sodium'       : (sys.maxint - 98 , 0, 0, 0),
-        #'Magnesium'    : (sys.maxint - 97 , 0, 0, 0),
-        #'Aluminium'    : (sys.maxint - 96 , 0, 0, 0),
-        #'Silicon'      : (sys.maxint - 95 , 0, 0, 0),
-        #'Phosphorus'   : (sys.maxint - 94 , 0, 0, 0),
-        #'Sulfur'       : (sys.maxint - 93 , 0, 0, 0),
-        #'Chlorine'     : (sys.maxint - 92 , 0, 0, 0),
-        #'Argon'        : (sys.maxint - 91 , 0, 0, 0),
-        #'Potassium'    : (sys.maxint - 90 , 0, 0, 0),
-        #'Calcium'      : (sys.maxint - 89 , 0, 0, 0),
-        #'Scandium'     : (sys.maxint - 88 , 0, 0, 0),
-        #'Titanium'     : (sys.maxint - 87 , 0, 0, 0),
-        #'Vanadium'     : (sys.maxint - 86 , 0, 0, 0),
-        #'Chromium'     : (sys.maxint - 85 , 0, 0, 0),
-        #'Manganese'    : (sys.maxint - 84 , 0, 0, 0),
-        #'Iron'         : (sys.maxint - 83 , 0, 0, 0),
-        #'Cobalt'       : (sys.maxint - 82 , 0, 0, 0),
-        #'Nickel'       : (sys.maxint - 81 , 0, 0, 0),
-        #'Copper'       : (sys.maxint - 80 , 0, 0, 0),
-        #'Zinc'         : (sys.maxint - 79 , 0, 0, 0),
-        #'Gallium'      : (sys.maxint - 78 , 0, 0, 0),
-        #'Germanium'    : (sys.maxint - 77 , 0, 0, 0),
-        #'Arsenic'      : (sys.maxint - 76 , 0, 0, 0),
-        #'Selenium'     : (sys.maxint - 75 , 0, 0, 0),
-        #'Bromine'      : (sys.maxint - 74 , 0, 0, 0),
-        #'Krypton'      : (sys.maxint - 73 , 0, 0, 0),
-        #'Rubidium'     : (sys.maxint - 72 , 0, 0, 0),
-        #'Strontium'    : (sys.maxint - 71 , 0, 0, 0),
-        #'Yttrium'      : (sys.maxint - 70 , 0, 0, 0),
-        #'Zirconium'    : (sys.maxint - 69 , 0, 0, 0),
-        #'Niobium'      : (sys.maxint - 68 , 0, 0, 0),
-        #'Molybdenum'   : (sys.maxint - 67 , 0, 0, 0),
-        #'Technetium'   : (sys.maxint - 66 , 0, 0, 0),
-        #'Ruthenium'    : (sys.maxint - 65 , 0, 0, 0),
-        #'Rhodium'      : (sys.maxint - 64 , 0, 0, 0),
-        #'Palladium'    : (sys.maxint - 63 , 0, 0, 0),
-        #'Silver'       : (sys.maxint - 62 , 0, 0, 0),
-        #'Cadmium'      : (sys.maxint - 61 , 0, 0, 0),
-        #'Indium'       : (sys.maxint - 60 , 0, 0, 0),
-        #'Tin'          : (sys.maxint - 59 , 0, 0, 0),
-        #'Antimony'     : (sys.maxint - 58 , 0, 0, 0),
-        #'Tellurium'    : (sys.maxint - 57 , 0, 0, 0),
-        #'Iodine'       : (sys.maxint - 56 , 0, 0, 0),
-        #'Xenon'        : (sys.maxint - 55 , 0, 0, 0),
-        #'Caesium'      : (sys.maxint - 54 , 0, 0, 0),
-        #'Barium'       : (sys.maxint - 53 , 0, 0, 0),
-        #'Lanthanum'    : (sys.maxint - 52 , 0, 0, 0),
-        #'Cerium'       : (sys.maxint - 51 , 0, 0, 0),
-        #'Praseodymium' : (sys.maxint - 50 , 0, 0, 0),
-        #'Neodymium'    : (sys.maxint - 49 , 0, 0, 0),
-        #'Promethium'   : (sys.maxint - 48 , 0, 0, 0),
-        #'Samarium'     : (sys.maxint - 47 , 0, 0, 0),
-        #'Europium'     : (sys.maxint - 46 , 0, 0, 0),
-        #'Gadolinium'   : (sys.maxint - 45 , 0, 0, 0),
-        #'Terbium'      : (sys.maxint - 44 , 0, 0, 0),
-        #'Dysprosium'   : (sys.maxint - 43 , 0, 0, 0),
-        #'Holmium'      : (sys.maxint - 42 , 0, 0, 0),
-        #'Erbium'       : (sys.maxint - 41 , 0, 0, 0),
-        #'Thulium'      : (sys.maxint - 40 , 0, 0, 0),
-        #'Ytterbium'    : (sys.maxint - 39 , 0, 0, 0),
-        #'Lutetium'     : (sys.maxint - 38 , 0, 0, 0),
-        #'Hafnium'      : (sys.maxint - 37 , 0, 0, 0),
-        #'Tantalum'     : (sys.maxint - 36 , 0, 0, 0),
-        #'Tungsten'     : (sys.maxint - 35 , 0, 0, 0),
-        #'Rhenium'      : (sys.maxint - 34 , 0, 0, 0),
-        #'Osmium'       : (sys.maxint - 33 , 0, 0, 0),
-        #'Iridium'      : (sys.maxint - 32 , 0, 0, 0),
-        #'Platinum'     : (sys.maxint - 31 , 0, 0, 0),
-        #'Gold'         : (sys.maxint - 30 , 0, 0, 0),
-        #'Mercury'      : (sys.maxint - 29 , 0, 0, 0),
-        #'Thallium'     : (sys.maxint - 28 , 0, 0, 0),
-        #'Lead'         : (sys.maxint - 27 , 0, 0, 0),
-        #'Bismuth'      : (sys.maxint - 26 , 0, 0, 0),
-        #'Polonium'     : (sys.maxint - 25 , 0, 0, 0),
-        #'Astatine'     : (sys.maxint - 24 , 0, 0, 0),
-        #'Radon'        : (sys.maxint - 23 , 0, 0, 0),
-        #'Francium'     : (sys.maxint - 22 , 0, 0, 0),
-        #'Radium'       : (sys.maxint - 21 , 0, 0, 0),
-        #'Actinium'     : (sys.maxint - 20 , 0, 0, 0),
-        #'Thorium'      : (sys.maxint - 19 , 0, 0, 0),
-        #'Protactinium' : (sys.maxint - 18 , 0, 0, 0),
-        #'Uranium'      : (sys.maxint - 17 , 0, 0, 0),
-        #'Neptunium'    : (sys.maxint - 16 , 0, 0, 0),
-        #'Plutonium'    : (sys.maxint - 15 , 0, 0, 0),
-        #'Americium'    : (sys.maxint - 14 , 0, 0, 0),
-        #'Curium'       : (sys.maxint - 13 , 0, 0, 0),
-        #'Berkelium'    : (sys.maxint - 12 , 0, 0, 0),
-        #'Californium'  : (sys.maxint - 11 , 0, 0, 0),
-        #'Einsteinium'  : (sys.maxint - 10 , 0, 0, 0),
-        #'Fermium'      : (sys.maxint - 9  , 0, 0, 0),
-        #'Mendelevium'  : (sys.maxint - 8  , 0, 0, 0),
-        #'Nobelium'     : (sys.maxint - 7  , 0, 0, 0),
-        #'Lawrencium'   : (sys.maxint - 6  , 0, 0, 0),
-        #'Rutherfordium': (sys.maxint - 5  , 0, 0, 0),
-        #'Dubnium'      : (sys.maxint - 4  , 0, 0, 0),
-        #'Seaborgium'   : (sys.maxint - 3  , 0, 0, 0),
-        #'Bohrium'      : (sys.maxint - 2  , 0, 0, 0),
-        #'Hassium'      : (sys.maxint - 1  , 0, 0, 0),
-        #'Meitnerium'   : (sys.maxint - 0  , 0, 0, 0),
-        # <---- Please refrain from fixing PEP-8 E203 
----------------------------------------------------------------
+        'Hydrogen'      : (2014, 1),
+        'Helium'        : (sys.maxint - 107, 0),
+        'Lithium'       : (sys.maxint - 106, 0),
+        'Beryllium'     : (sys.maxint - 105, 0),
+        'Boron'         : (sys.maxint - 104, 0),
+        #'Carbon'       : (sys.maxint - 103, 0),
+        #'Nitrogen'     : (sys.maxint - 102, 0),
+        #'Oxygen'       : (sys.maxint - 101, 0),
+        #'Fluorine'     : (sys.maxint - 100, 0),
+        #'Neon'         : (sys.maxint - 99 , 0),
+        #'Sodium'       : (sys.maxint - 98 , 0),
+        #'Magnesium'    : (sys.maxint - 97 , 0),
+        #'Aluminium'    : (sys.maxint - 96 , 0),
+        #'Silicon'      : (sys.maxint - 95 , 0),
+        #'Phosphorus'   : (sys.maxint - 94 , 0),
+        #'Sulfur'       : (sys.maxint - 93 , 0),
+        #'Chlorine'     : (sys.maxint - 92 , 0),
+        #'Argon'        : (sys.maxint - 91 , 0),
+        #'Potassium'    : (sys.maxint - 90 , 0),
+        #'Calcium'      : (sys.maxint - 89 , 0),
+        #'Scandium'     : (sys.maxint - 88 , 0),
+        #'Titanium'     : (sys.maxint - 87 , 0),
+        #'Vanadium'     : (sys.maxint - 86 , 0),
+        #'Chromium'     : (sys.maxint - 85 , 0),
+        #'Manganese'    : (sys.maxint - 84 , 0),
+        #'Iron'         : (sys.maxint - 83 , 0),
+        #'Cobalt'       : (sys.maxint - 82 , 0),
+        #'Nickel'       : (sys.maxint - 81 , 0),
+        #'Copper'       : (sys.maxint - 80 , 0),
+        #'Zinc'         : (sys.maxint - 79 , 0),
+        #'Gallium'      : (sys.maxint - 78 , 0),
+        #'Germanium'    : (sys.maxint - 77 , 0),
+        #'Arsenic'      : (sys.maxint - 76 , 0),
+        #'Selenium'     : (sys.maxint - 75 , 0),
+        #'Bromine'      : (sys.maxint - 74 , 0),
+        #'Krypton'      : (sys.maxint - 73 , 0),
+        #'Rubidium'     : (sys.maxint - 72 , 0),
+        #'Strontium'    : (sys.maxint - 71 , 0),
+        #'Yttrium'      : (sys.maxint - 70 , 0),
+        #'Zirconium'    : (sys.maxint - 69 , 0),
+        #'Niobium'      : (sys.maxint - 68 , 0),
+        #'Molybdenum'   : (sys.maxint - 67 , 0),
+        #'Technetium'   : (sys.maxint - 66 , 0),
+        #'Ruthenium'    : (sys.maxint - 65 , 0),
+        #'Rhodium'      : (sys.maxint - 64 , 0),
+        #'Palladium'    : (sys.maxint - 63 , 0),
+        #'Silver'       : (sys.maxint - 62 , 0),
+        #'Cadmium'      : (sys.maxint - 61 , 0),
+        #'Indium'       : (sys.maxint - 60 , 0),
+        #'Tin'          : (sys.maxint - 59 , 0),
+        #'Antimony'     : (sys.maxint - 58 , 0),
+        #'Tellurium'    : (sys.maxint - 57 , 0),
+        #'Iodine'       : (sys.maxint - 56 , 0),
+        #'Xenon'        : (sys.maxint - 55 , 0),
+        #'Caesium'      : (sys.maxint - 54 , 0),
+        #'Barium'       : (sys.maxint - 53 , 0),
+        #'Lanthanum'    : (sys.maxint - 52 , 0),
+        #'Cerium'       : (sys.maxint - 51 , 0),
+        #'Praseodymium' : (sys.maxint - 50 , 0),
+        #'Neodymium'    : (sys.maxint - 49 , 0),
+        #'Promethium'   : (sys.maxint - 48 , 0),
+        #'Samarium'     : (sys.maxint - 47 , 0),
+        #'Europium'     : (sys.maxint - 46 , 0),
+        #'Gadolinium'   : (sys.maxint - 45 , 0),
+        #'Terbium'      : (sys.maxint - 44 , 0),
+        #'Dysprosium'   : (sys.maxint - 43 , 0),
+        #'Holmium'      : (sys.maxint - 42 , 0),
+        #'Erbium'       : (sys.maxint - 41 , 0),
+        #'Thulium'      : (sys.maxint - 40 , 0),
+        #'Ytterbium'    : (sys.maxint - 39 , 0),
+        #'Lutetium'     : (sys.maxint - 38 , 0),
+        #'Hafnium'      : (sys.maxint - 37 , 0),
+        #'Tantalum'     : (sys.maxint - 36 , 0),
+        #'Tungsten'     : (sys.maxint - 35 , 0),
+        #'Rhenium'      : (sys.maxint - 34 , 0),
+        #'Osmium'       : (sys.maxint - 33 , 0),
+        #'Iridium'      : (sys.maxint - 32 , 0),
+        #'Platinum'     : (sys.maxint - 31 , 0),
+        #'Gold'         : (sys.maxint - 30 , 0),
+        #'Mercury'      : (sys.maxint - 29 , 0),
+        #'Thallium'     : (sys.maxint - 28 , 0),
+        #'Lead'         : (sys.maxint - 27 , 0),
+        #'Bismuth'      : (sys.maxint - 26 , 0),
+        #'Polonium'     : (sys.maxint - 25 , 0),
+        #'Astatine'     : (sys.maxint - 24 , 0),
+        #'Radon'        : (sys.maxint - 23 , 0),
+        #'Francium'     : (sys.maxint - 22 , 0),
+        #'Radium'       : (sys.maxint - 21 , 0),
+        #'Actinium'     : (sys.maxint - 20 , 0),
+        #'Thorium'      : (sys.maxint - 19 , 0),
+        #'Protactinium' : (sys.maxint - 18 , 0),
+        #'Uranium'      : (sys.maxint - 17 , 0),
+        #'Neptunium'    : (sys.maxint - 16 , 0),
+        #'Plutonium'    : (sys.maxint - 15 , 0),
+        #'Americium'    : (sys.maxint - 14 , 0),
+        #'Curium'       : (sys.maxint - 13 , 0),
+        #'Berkelium'    : (sys.maxint - 12 , 0),
+        #'Californium'  : (sys.maxint - 11 , 0),
+        #'Einsteinium'  : (sys.maxint - 10 , 0),
+        #'Fermium'      : (sys.maxint - 9  , 0),
+        #'Mendelevium'  : (sys.maxint - 8  , 0),
+        #'Nobelium'     : (sys.maxint - 7  , 0),
+        #'Lawrencium'   : (sys.maxint - 6  , 0),
+        #'Rutherfordium': (sys.maxint - 5  , 0),
+        #'Dubnium'      : (sys.maxint - 4  , 0),
+        #'Seaborgium'   : (sys.maxint - 3  , 0),
+        #'Bohrium'      : (sys.maxint - 2  , 0),
+        #'Hassium'      : (sys.maxint - 1  , 0),
+        #'Meitnerium'   : (sys.maxint - 0  , 0),
+        # <---- Please refrain from fixing PEP-8 E203 and E265 
-------------------------------------------------------
+        # pylint: enable=E8203,E8265
     }
 
     LNAMES = dict((k.lower(), v) for (k, v) in NAMES.iteritems())
@@ -175,6 +196,7 @@
                  major,
                  minor,
                  bugfix=0,
+                 mbugfix=0,
                  rc=0,              # pylint: disable=C0103
                  noc=0,
                  sha=None):
@@ -190,6 +212,11 @@
         elif isinstance(bugfix, string_types):
             bugfix = int(bugfix)
 
+        if mbugfix is None:
+            mbugfix = 0
+        elif isinstance(mbugfix, string_types):
+            mbugfix = int(mbugfix)
+
         if rc is None:
             rc = 0
         elif isinstance(rc, string_types):
@@ -197,14 +224,17 @@
 
         if noc is None:
             noc = 0
+        elif isinstance(noc, string_types) and noc == 'n/a':
+            noc = -1
         elif isinstance(noc, string_types):
             noc = int(noc)
 
         self.major = major
         self.minor = minor
         self.bugfix = bugfix
+        self.mbugfix = mbugfix
         self.rc = rc  # pylint: disable=C0103
-        self.name = self.VNAMES.get((major, minor, bugfix, rc), None)
+        self.name = self.VNAMES.get((major, minor), None)
         self.noc = noc
         self.sha = sha
 
@@ -227,12 +257,28 @@
             )
         return cls(*cls.LNAMES[name.lower()])
 
+    @classmethod
+    def from_last_named_version(cls):
+        return cls.from_name(
+            cls.VNAMES[
+                max([version_info for version_info in
+                     cls.VNAMES.keys() if
+                     version_info[0] < (sys.maxint - 200)])
+            ]
+        )
+
+    @property
+    def sse(self):
+        # Higher than 0.17, lower than first date based
+        return 0 < self.major < 2014
+
     @property
     def info(self):
         return (
             self.major,
             self.minor,
-            self.bugfix
+            self.bugfix,
+            self.mbugfix
         )
 
     @property
@@ -241,6 +287,7 @@
             self.major,
             self.minor,
             self.bugfix,
+            self.mbugfix,
             self.rc
         )
 
@@ -250,6 +297,7 @@
             self.major,
             self.minor,
             self.bugfix,
+            self.mbugfix,
             self.rc,
             self.noc
         )
@@ -260,6 +308,7 @@
             self.major,
             self.minor,
             self.bugfix,
+            self.mbugfix,
             self.rc,
             self.noc,
             self.sha
@@ -272,19 +321,31 @@
             self.minor,
             self.bugfix
         )
+        if self.mbugfix:
+            version_string += '.{0}'.format(self.mbugfix)
         if self.rc:
             version_string += 'rc{0}'.format(self.rc)
         if self.noc and self.sha:
-            version_string += '-{0}-{1}'.format(self.noc, self.sha)
-        #if (self.major, self.minor) in self.RMATCH:
-        #    version_string += ' ({0})'.format(self.RMATCH[(self.major, 
self.minor)])
+            noc = self.noc
+            if noc < 0:
+                noc = 'n/a'
+            version_string += '-{0}-{1}'.format(noc, self.sha)
         return version_string
 
     @property
     def formatted_version(self):
         if self.name and self.major > 10000:
-            return '{0} (Unreleased)'.format(self.name)
-        return self.string
+            version_string = self.name
+            if self.sse:
+                version_string += ' Enterprise'
+            version_string += ' (Unreleased)'
+            return version_string
+        version_string = self.string
+        if self.sse:
+            version_string += ' Enterprise'
+        if (self.major, self.minor) in self.RMATCH:
+            version_string += ' ({0})'.format(self.RMATCH[(self.major, 
self.minor)])
+        return version_string
 
     def __str__(self):
         return self.string
@@ -326,47 +387,45 @@
             'minor={0}'.format(self.minor),
             'bugfix={0}'.format(self.bugfix)
         ])
+        if self.mbugfix:
+            parts.append('minor-bugfix={0}'.format(self.mbugfix))
         if self.rc:
             parts.append('rc={0}'.format(self.rc))
+        noc = self.noc
+        if noc == -1:
+            noc = 'n/a'
+        if noc and self.sha:
+            parts.extend([
+                'noc={0}'.format(noc),
+                'sha={0}'.format(self.sha)
+            ])
         return '<{0} {1}>'.format(self.__class__.__name__, ' '.join(parts))
 
 
-# ----- Hardcoded Salt Version Information 
-------------------------------------------------------------------------->
-#
-# ALL version bumps should be done in the SaltStackVersion.NAMES dictionary, 
ie:
-#
-#    class SaltStackVersion(object):
-#
-#        NAMES = {
-#            'Hydrogen': (2014, 1, 0, 0),   # <- This is the tuple to bump 
versions
-#            ( ... )
-#        }
+# ----- Hardcoded Salt Codename Version Information 
----------------------------------------------------------------->
 #
+#   There's no need to do anything here. The last released codename will be 
picked up
 # 
--------------------------------------------------------------------------------------------------------------------
-# There's no need to edit any of the version dunder objects below, see above 
why and where to update
-__saltstack_version__ = SaltStackVersion.from_name('Hydrogen')
-__version_info__ = __saltstack_version__.info
-__version__ = __saltstack_version__.string
+__saltstack_version__ = SaltStackVersion.from_last_named_version()
 # <---- Hardcoded Salt Version Information 
---------------------------------------------------------------------------
 
 
 # ----- Dynamic/Runtime Salt Version Information 
-------------------------------------------------------------------->
-def __get_version(version, version_info):
+def __get_version(saltstack_version):
     '''
     If we can get a version provided at installation time or from Git, use
     that instead, otherwise we carry on.
     '''
     try:
         # Try to import the version information provided at install time
-        from salt._version import __version__, __version_info__  # pylint: 
disable=E0611,F0401
-        return __version__, __version_info__
+        from salt._version import __saltstack_version__  # pylint: 
disable=E0611,F0401
+        return __saltstack_version__
     except ImportError:
         pass
 
     # This might be a 'python setup.py develop' installation type. Let's
     # discover the version information at runtime.
     import os
-    import warnings
     import subprocess
 
     if 'SETUP_DIRNAME' in globals():
@@ -374,12 +433,12 @@
         cwd = SETUP_DIRNAME  # pylint: disable=E0602
         if not os.path.exists(os.path.join(cwd, '.git')):
             # This is not a Salt git checkout!!! Don't even try to parse...
-            return version, version_info
+            return saltstack_version
     else:
         cwd = os.path.abspath(os.path.dirname(__file__))
         if not os.path.exists(os.path.join(os.path.dirname(cwd), '.git')):
             # This is not a Salt git checkout!!! Don't even try to parse...
-            return version, version_info
+            return saltstack_version
 
     try:
         kwargs = dict(
@@ -393,60 +452,46 @@
             kwargs['close_fds'] = True
 
         process = subprocess.Popen(
-                ['git', 'describe', '--tags', '--match', 'v[0-9]*'], **kwargs)
+                ['git', 'describe', '--tags', '--match', 'v[0-9]*', 
'--always'], **kwargs)
         out, err = process.communicate()
         out = out.strip()
         err = err.strip()
 
         if not out or err:
-            return version, version_info
+            return saltstack_version
 
-        parsed_version = SaltStackVersion.parse(out)
+        try:
+            return SaltStackVersion.parse(out)
+        except ValueError:
+            if not SaltStackVersion.git_sha_regex.match(out):
+                raise
+
+            # We only define the parsed SHA and set NOC as ??? (unknown)
+            saltstack_version.sha = out.strip()
+            saltstack_version.noc = -1
 
-        if parsed_version.info > version_info:
-            warnings.warn(
-                'The parsed version info, `{0}`, is bigger than the one '
-                'defined in the file, `{1}`. Missing version bump?'.format(
-                    parsed_version.info,
-                    version_info
-                ),
-                UserWarning,
-                stacklevel=2
-            )
-            return version, version_info
-        elif parsed_version.info < version_info:
-            warnings.warn(
-                'The parsed version info, `{0}`, is lower than the one '
-                'defined in the file, `{1}`.'
-                'In order to get the proper salt version with the git hash '
-                'you need to update salt\'s local git tags. Something like: '
-                '\'git fetch --tags\' or \'git fetch --tags upstream\' if '
-                'you followed salt\'s contribute documentation. The version '
-                'string WILL NOT include the git hash.'.format(
-                    parsed_version.info,
-                    version_info
-                ),
-                UserWarning,
-                stacklevel=2
-            )
-            return version, version_info
-        return parsed_version.string, parsed_version.info
     except OSError as os_err:
         if os_err.errno != 2:
             # If the errno is not 2(The system cannot find the file
             # specified), raise the exception so it can be catch by the
             # developers
             raise
-    return version, version_info
+    return saltstack_version
 
 
 # Get additional version information if available
-__version__, __version_info__ = __get_version(__version__, __version_info__)
+__saltstack_version__ = __get_version(__saltstack_version__)
 # This function has executed once, we're done with it. Delete it!
 del __get_version
 # <---- Dynamic/Runtime Salt Version Information 
---------------------------------------------------------------------
 
 
+# ----- Common version related attributes - NO NEED TO CHANGE 
------------------------------------------------------->
+__version_info__ = __saltstack_version__.info
+__version__ = __saltstack_version__.string
+# <---- Common version related attributes - NO NEED TO CHANGE 
--------------------------------------------------------
+
+
 def versions_information(include_salt_cloud=False):
     '''
     Report on all of the versions for dependent software
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/salt-2014.1.7/tests/unit/version_test.py 
new/salt-2014.1.8/tests/unit/version_test.py
--- old/salt-2014.1.7/tests/unit/version_test.py        2014-06-24 
22:07:36.000000000 +0200
+++ new/salt-2014.1.8/tests/unit/version_test.py        2014-07-30 
21:48:57.000000000 +0200
@@ -29,14 +29,17 @@
     def test_version_parsing(self):
         strip_initial_non_numbers_regex = re.compile(r'(?:[^\d]+)?(?P<vs>.*)')
         expect = (
-            ('v0.12.0-19-g767d4f9', (0, 12, 0, 0, 19, 'g767d4f9'), None),
-            ('v0.12.0-85-g2880105', (0, 12, 0, 0, 85, 'g2880105'), None),
+            ('v0.12.0-19-g767d4f9', (0, 12, 0, 0, 0, 19, 'g767d4f9'), None),
+            ('v0.12.0-85-g2880105', (0, 12, 0, 0, 0, 85, 'g2880105'), None),
             ('debian/0.11.1+ds-1-3-ga0afcbd',
-             (0, 11, 1, 0, 3, 'ga0afcbd'), '0.11.1-3-ga0afcbd'),
-            ('0.12.1', (0, 12, 1, 0, 0, None), None),
-            ('0.12.1', (0, 12, 1, 0, 0, None), None),
-            ('0.17.0rc1', (0, 17, 0, 1, 0, None), None),
-            ('v0.17.0rc1-1-g52ebdfd', (0, 17, 0, 1, 1, 'g52ebdfd'), None),
+             (0, 11, 1, 0, 0, 3, 'ga0afcbd'), '0.11.1-3-ga0afcbd'),
+            ('0.12.1', (0, 12, 1, 0, 0, 0, None), None),
+            ('0.12.1', (0, 12, 1, 0, 0, 0, None), None),
+            ('0.17.0rc1', (0, 17, 0, 0, 1, 0, None), None),
+            ('v0.17.0rc1-1-g52ebdfd', (0, 17, 0, 0, 1, 1, 'g52ebdfd'), None),
+            ('v2014.1.4.1', (2014, 1, 4, 1, 0, 0, None), None),
+            ('v2014.1.4.1rc3-n/a-abcdefgh', (2014, 1, 4, 1, 3, -1, 
'abcdefgh'), None),
+            ('v3.4.1.1', (3, 4, 1, 1, 0, 0, None), None)
 
         )
 
@@ -46,9 +49,7 @@
                 saltstack_version.full_info, full_info
             )
             if version is None:
-                version = \
-                    strip_initial_non_numbers_regex.search(vs).group('vs')
-
+                version = 
strip_initial_non_numbers_regex.search(vs).group('vs')
             self.assertEqual(saltstack_version.string, version)
 
     def test_version_comparison(self):
@@ -59,10 +60,12 @@
             ('v0.17.0', 'v0.17.0rc1'),
             ('Hydrogen', '0.17.0'),
             ('Helium', 'Hydrogen'),
+            ('v2014.1.4.1-n/a-abcdefgh', 'v2014.1.4.1rc3-n/a-abcdefgh'),
+            ('v2014.1.4.1-1-abcdefgh', 'v2014.1.4.1-n/a-abcdefgh')
         )
-        for v1, v2 in examples:
-            self.assertTrue(SaltStackVersion.parse(v1) > v2)
-            self.assertTrue(SaltStackVersion.parse(v2) < v1)
+        for higher_version, lower_version in examples:
+            self.assertTrue(SaltStackVersion.parse(higher_version) > 
lower_version)
+            self.assertTrue(SaltStackVersion.parse(lower_version) < 
higher_version)
 
     def test_unparsable_version(self):
         with self.assertRaises(ValueError):

++++++ use-forking-daemon.patch ++++++
--- /var/tmp/diff_new_pack.c7tU4M/_old  2014-07-31 10:04:41.000000000 +0200
+++ /var/tmp/diff_new_pack.c7tU4M/_new  2014-07-31 10:04:41.000000000 +0200
@@ -1,7 +1,7 @@
-Index: salt-2014.1.7/pkg/salt-master.service
+Index: salt-2014.1.8/pkg/salt-master.service
 ===================================================================
---- salt-2014.1.7.orig/pkg/salt-master.service
-+++ salt-2014.1.7/pkg/salt-master.service
+--- salt-2014.1.8.orig/pkg/salt-master.service
++++ salt-2014.1.8/pkg/salt-master.service
 @@ -3,8 +3,10 @@ Description=The Salt Master Server
  After=syslog.target network.target
  

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to