[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