[SCM] supercollider/master: Convert upstream's post-hoc 3.5.4 tweak into a patch

danstowell-guest at users.alioth.debian.org danstowell-guest at users.alioth.debian.org
Mon Aug 13 13:38:13 UTC 2012


The following commit has been merged in the master branch:
commit 3c1278c9f79054a1d80ec96fbcb6e44946a771cb
Author: Dan Stowell <danstowell at users.sourceforge.net>
Date:   Mon Aug 13 14:14:53 2012 +0100

    Convert upstream's post-hoc 3.5.4 tweak into a patch

diff --git a/SCClassLibrary/Common/Audio/Mix.sc b/SCClassLibrary/Common/Audio/Mix.sc
index 01b348a..c6a5222 100644
--- a/SCClassLibrary/Common/Audio/Mix.sc
+++ b/SCClassLibrary/Common/Audio/Mix.sc
@@ -47,7 +47,15 @@ Mix {
 			{ \control } { result }
 			{ \scalar } { DC.kr(result) }
 			{ Error("Unsupported rate % for Mix.kr".format(result.rate)).throw };
-	}		
+	}
+
+	*arFill { |n, function|
+		^this.ar(Array.fill(n, function))
+	}
+
+	*krFill { |n, function|
+		^this.kr(Array.fill(n, function))
+	}
 }
 
 
diff --git a/debian/patches/354_upstream_tweak.patch b/debian/patches/354_upstream_tweak.patch
new file mode 100644
index 0000000..6709133
--- /dev/null
+++ b/debian/patches/354_upstream_tweak.patch
@@ -0,0 +1,218 @@
+Description: Upstream released 3.5.4 but then tweaked the tarball soon after release. This patch represents that tweak so it matches the release despite having imported the "original" 3.5.4.
+Author: Dan Stowell
+index c6a5222..01b348a 100644
+--- a/SCClassLibrary/Common/Audio/Mix.sc
++++ b/SCClassLibrary/Common/Audio/Mix.sc
+@@ -47,15 +47,7 @@ Mix {
+ 			{ \control } { result }
+ 			{ \scalar } { DC.kr(result) }
+ 			{ Error("Unsupported rate % for Mix.kr".format(result.rate)).throw };
+-	}
+-
+-	*arFill { |n, function|
+-		^this.ar(Array.fill(n, function))
+-	}
+-
+-	*krFill { |n, function|
+-		^this.kr(Array.fill(n, function))
+-	}
++	}		
+ }
+ 
+ 
+diff --git a/package/git-archive-all.py b/package/git-archive-all.py
+new file mode 100644
+index 0000000..3eff746
+--- /dev/null
++++ b/package/git-archive-all.py
+@@ -0,0 +1,190 @@
++#! /usr/bin/env python
++
++import sys
++from os import path, chdir
++from subprocess import Popen, PIPE
++from sys import argv, stdout
++from fnmatch import fnmatch
++
++
++class GitArchiver(object):
++    """
++    GitArchiver
++    
++    Scan a git repository and export all tracked files, and submodules.
++    Checks for .gitattributes files in each directory and uses 'export-ignore'
++    pattern entries for ignore files in the archive.
++    
++    Automatically detects output format extension: zip, tar, bz2, or gz
++    """
++    
++    def __init__(self, prefix='', verbose=False, exclude=True, force_sub=False, extra=[]):
++        self.prefix    = prefix
++        self.verbose   = verbose
++        self.exclude   = exclude
++        self.extra     = extra
++        self.force_sub = force_sub
++        
++        self._excludes = []
++
++
++    def create(self, output_file):
++        """
++        create(str output_file) -> None
++        
++        Creates the archive, written to the given output_file
++        Filetype may be one of:  gz, zip, bz2, tar, tgz
++        """
++        #
++        # determine the format
++        #
++        _, _, format = output_file.rpartition(".")
++        format = format.lower()
++
++        if format == 'zip':
++            from zipfile import ZipFile, ZIP_DEFLATED
++            output_archive = ZipFile(path.abspath(output_file), 'w')
++            add = lambda name, arcname: output_archive.write(name, self.prefix + arcname, ZIP_DEFLATED)
++    
++        elif format in ['tar', 'bz2', 'gz', 'tgz']:
++            import tarfile
++
++            if format == 'tar':
++                t_mode = 'w'
++            elif format == 'tgz':
++                t_mode = 'w:gz'
++            else:
++                t_mode = ('w:%s' % format)
++               
++            output_archive = tarfile.open(path.abspath(output_file), t_mode)
++            add = lambda name, arcname: output_archive.add(name, self.prefix + arcname)
++        else:
++            raise RuntimeError("Unknown format: '%s'" % format)
++        
++        #
++        # compress
++        #
++        
++        # extra files first (we may change folder later)
++        for name in self.extra:
++            if self.verbose: 
++                toPath = '=> %s%s' % (self.prefix, name) if self.prefix else ""
++                print 'Compressing %s %s ...' % (name, toPath)
++            add(name, name)
++        
++        self._excludes = []
++        
++        for name, arcname in self.listFiles(path.abspath('')):
++            if self.verbose: 
++                toPath = '=> %s%s' % (self.prefix, arcname) if self.prefix else ""
++                print 'Compressing %s %s ...' % (arcname, toPath)
++            add(name, arcname)
++      
++        output_archive.close()
++        
++            
++    def listFiles(self, git_repositary_path, baselevel=''):
++        """
++        listFiles(str git_repository_path, str baselevel='') -> iterator
++        
++        An iterator method that yields a tuple(filepath, fullpath)
++        for each file that should be included in the archive.
++        Skips those that match the exclusion patterns found in
++        any discovered .gitattributes files along the way.
++        
++        Recurses into submodules as well.
++        """
++        for filepath in self.runShell('git ls-files --cached --full-name --no-empty-directory'):
++            filepath = filepath.decode('string_escape').strip('"')
++            fullpath = path.join(baselevel, filepath)
++            filename = path.basename(filepath)
++            
++            if self.exclude and filename == '.gitattributes':
++                self._excludes = []
++                fh = open(filepath, 'r')
++                for line in fh:
++                    if not line: break
++                    tokens = line.strip().split()
++                    if 'export-ignore' in tokens[1:]:
++                        self._excludes.append(tokens[0])
++                fh.close()
++
++            # Only list symlinks and files that don't start with git
++            if not filename.startswith('.git') \
++               and (path.islink(filepath) or not path.isdir(filepath)):
++            
++                # check the patterns first
++                ignore = False
++                for pattern in self._excludes:
++                    if fnmatch(fullpath, pattern) or fnmatch(filename, pattern):
++                        if self.verbose: print 'Exclude pattern matched (%s): %s' % (pattern, fullpath)
++                        ignore = True
++                        break
++                if ignore:
++                    continue
++                
++                # baselevel is needed to tell the arhiver where it have to extract file
++                yield filepath, fullpath
++        
++        if self.force_sub :
++          self.runShell("git submodule init")
++          self.runShell("git submodule update")
++
++        # get paths for every submodule
++        for submodule in self.runShell("git submodule --quiet foreach 'pwd'"):
++            chdir(submodule)
++            # in order to get output path we need to exclude repository path from the submodule path
++            submodule = submodule[len(git_repositary_path)+1:]
++            # recursion allows us to process repositories with more than one level of submodules
++            for git_file in self.listFiles(git_repositary_path, submodule):
++                yield git_file
++    
++
++    
++    @staticmethod
++    def runShell(cmd):
++        return Popen(cmd, shell=True, stdout=PIPE).stdout.read().splitlines()
++    
++    
++    
++if __name__ == "__main__":
++    from optparse import OptionParser
++
++    parser = OptionParser(usage="usage: %prog [-v] [--prefix PREFIX] [--no-exclude] OUTPUT_FILE", version="%prog 1.3")
++    
++    parser.add_option('--prefix', type='string', dest='prefix', 
++                      default='', help="prepend PREFIX to each filename in the archive")
++                        
++    parser.add_option('-v', '--verbose', action='store_true', dest='verbose', help='enable verbose mode')
++
++    parser.add_option('--no-exclude', action='store_false', dest='exclude', 
++                      default=True, help="Don't read .gitattributes files for patterns containing export-ignore attrib")
++
++    parser.add_option('--force-submodules', action='store_true', dest='force_sub',
++                      help="Force a git submodule init && git submodule update at each level before iterating submodules.")
++
++    parser.add_option('--extra', action='append', dest='extra', default=[], 
++                      help="Any additional files to include in the archive.")
++
++    options, args = parser.parse_args()
++    
++    if len(args) != 1:
++        parser.error('You must specify exactly one output file')
++    
++    outFile = args[0]
++    
++    if path.isdir(outFile):
++        parser.error('You cannot use directory as output')
++            
++    archiver = GitArchiver(options.prefix, 
++                           options.verbose, 
++                           options.exclude,
++                           options.force_sub,
++                           options.extra)
++    
++    try:
++        archiver.create(outFile)
++    except Exception, e:
++        parser.exit(2, "%s\n" % e)
++    
++    sys.exit(0)
diff --git a/debian/patches/series b/debian/patches/series
index 5e333d6..5b4cdd1 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
+354_upstream_tweak.patch
 update_boostlockfree_prefixhpp.patch
 arm-qreal-is-float.patch
 deactivate_perf_counter.patch
diff --git a/package/git-archive-all.py b/package/git-archive-all.py
deleted file mode 100644
index 3eff746..0000000
--- a/package/git-archive-all.py
+++ /dev/null
@@ -1,190 +0,0 @@
-#! /usr/bin/env python
-
-import sys
-from os import path, chdir
-from subprocess import Popen, PIPE
-from sys import argv, stdout
-from fnmatch import fnmatch
-
-
-class GitArchiver(object):
-    """
-    GitArchiver
-    
-    Scan a git repository and export all tracked files, and submodules.
-    Checks for .gitattributes files in each directory and uses 'export-ignore'
-    pattern entries for ignore files in the archive.
-    
-    Automatically detects output format extension: zip, tar, bz2, or gz
-    """
-    
-    def __init__(self, prefix='', verbose=False, exclude=True, force_sub=False, extra=[]):
-        self.prefix    = prefix
-        self.verbose   = verbose
-        self.exclude   = exclude
-        self.extra     = extra
-        self.force_sub = force_sub
-        
-        self._excludes = []
-
-
-    def create(self, output_file):
-        """
-        create(str output_file) -> None
-        
-        Creates the archive, written to the given output_file
-        Filetype may be one of:  gz, zip, bz2, tar, tgz
-        """
-        #
-        # determine the format
-        #
-        _, _, format = output_file.rpartition(".")
-        format = format.lower()
-
-        if format == 'zip':
-            from zipfile import ZipFile, ZIP_DEFLATED
-            output_archive = ZipFile(path.abspath(output_file), 'w')
-            add = lambda name, arcname: output_archive.write(name, self.prefix + arcname, ZIP_DEFLATED)
-    
-        elif format in ['tar', 'bz2', 'gz', 'tgz']:
-            import tarfile
-
-            if format == 'tar':
-                t_mode = 'w'
-            elif format == 'tgz':
-                t_mode = 'w:gz'
-            else:
-                t_mode = ('w:%s' % format)
-               
-            output_archive = tarfile.open(path.abspath(output_file), t_mode)
-            add = lambda name, arcname: output_archive.add(name, self.prefix + arcname)
-        else:
-            raise RuntimeError("Unknown format: '%s'" % format)
-        
-        #
-        # compress
-        #
-        
-        # extra files first (we may change folder later)
-        for name in self.extra:
-            if self.verbose: 
-                toPath = '=> %s%s' % (self.prefix, name) if self.prefix else ""
-                print 'Compressing %s %s ...' % (name, toPath)
-            add(name, name)
-        
-        self._excludes = []
-        
-        for name, arcname in self.listFiles(path.abspath('')):
-            if self.verbose: 
-                toPath = '=> %s%s' % (self.prefix, arcname) if self.prefix else ""
-                print 'Compressing %s %s ...' % (arcname, toPath)
-            add(name, arcname)
-      
-        output_archive.close()
-        
-            
-    def listFiles(self, git_repositary_path, baselevel=''):
-        """
-        listFiles(str git_repository_path, str baselevel='') -> iterator
-        
-        An iterator method that yields a tuple(filepath, fullpath)
-        for each file that should be included in the archive.
-        Skips those that match the exclusion patterns found in
-        any discovered .gitattributes files along the way.
-        
-        Recurses into submodules as well.
-        """
-        for filepath in self.runShell('git ls-files --cached --full-name --no-empty-directory'):
-            filepath = filepath.decode('string_escape').strip('"')
-            fullpath = path.join(baselevel, filepath)
-            filename = path.basename(filepath)
-            
-            if self.exclude and filename == '.gitattributes':
-                self._excludes = []
-                fh = open(filepath, 'r')
-                for line in fh:
-                    if not line: break
-                    tokens = line.strip().split()
-                    if 'export-ignore' in tokens[1:]:
-                        self._excludes.append(tokens[0])
-                fh.close()
-
-            # Only list symlinks and files that don't start with git
-            if not filename.startswith('.git') \
-               and (path.islink(filepath) or not path.isdir(filepath)):
-            
-                # check the patterns first
-                ignore = False
-                for pattern in self._excludes:
-                    if fnmatch(fullpath, pattern) or fnmatch(filename, pattern):
-                        if self.verbose: print 'Exclude pattern matched (%s): %s' % (pattern, fullpath)
-                        ignore = True
-                        break
-                if ignore:
-                    continue
-                
-                # baselevel is needed to tell the arhiver where it have to extract file
-                yield filepath, fullpath
-        
-        if self.force_sub :
-          self.runShell("git submodule init")
-          self.runShell("git submodule update")
-
-        # get paths for every submodule
-        for submodule in self.runShell("git submodule --quiet foreach 'pwd'"):
-            chdir(submodule)
-            # in order to get output path we need to exclude repository path from the submodule path
-            submodule = submodule[len(git_repositary_path)+1:]
-            # recursion allows us to process repositories with more than one level of submodules
-            for git_file in self.listFiles(git_repositary_path, submodule):
-                yield git_file
-    
-
-    
-    @staticmethod
-    def runShell(cmd):
-        return Popen(cmd, shell=True, stdout=PIPE).stdout.read().splitlines()
-    
-    
-    
-if __name__ == "__main__":
-    from optparse import OptionParser
-
-    parser = OptionParser(usage="usage: %prog [-v] [--prefix PREFIX] [--no-exclude] OUTPUT_FILE", version="%prog 1.3")
-    
-    parser.add_option('--prefix', type='string', dest='prefix', 
-                      default='', help="prepend PREFIX to each filename in the archive")
-                        
-    parser.add_option('-v', '--verbose', action='store_true', dest='verbose', help='enable verbose mode')
-
-    parser.add_option('--no-exclude', action='store_false', dest='exclude', 
-                      default=True, help="Don't read .gitattributes files for patterns containing export-ignore attrib")
-
-    parser.add_option('--force-submodules', action='store_true', dest='force_sub',
-                      help="Force a git submodule init && git submodule update at each level before iterating submodules.")
-
-    parser.add_option('--extra', action='append', dest='extra', default=[], 
-                      help="Any additional files to include in the archive.")
-
-    options, args = parser.parse_args()
-    
-    if len(args) != 1:
-        parser.error('You must specify exactly one output file')
-    
-    outFile = args[0]
-    
-    if path.isdir(outFile):
-        parser.error('You cannot use directory as output')
-            
-    archiver = GitArchiver(options.prefix, 
-                           options.verbose, 
-                           options.exclude,
-                           options.force_sub,
-                           options.extra)
-    
-    try:
-        archiver.create(outFile)
-    except Exception, e:
-        parser.exit(2, "%s\n" % e)
-    
-    sys.exit(0)

-- 
supercollider packaging



More information about the pkg-multimedia-commits mailing list