170
class DebianRulesSource(UpstreamSource):
171
"""Upstream source that uses rules in debian/rules."""
173
def __init__(self, tree, top_level):
175
self.top_level = top_level
177
def _get_rule_source(self, source_dir, rule, make_vars=None):
178
command = ["make", "-f", "debian/rules", rule]
179
if make_vars is not None:
180
command.extend(["%s=%s" % item for item in make_vars.iteritems()])
182
proc = subprocess.Popen(command, cwd=source_dir)
185
note("Trying to run %s rule failed" % rule)
189
def _get_current_source(self, source_dir, package, version, target_dir):
190
rule = "get-packaged-orig-source"
191
note("Trying to use %s to retrieve needed tarball." % rule)
192
if not self._get_rule_source(source_dir, rule, {
193
"ORIG_VERSION": version,
194
"ORIG_PACKAGE": package}):
195
rule = "get-orig-source"
196
note("Trying to use %s to retrieve needed tarball (deprecated)." % rule)
197
if not self._get_rule_source(source_dir, rule):
199
filenames = gather_orig_files(package, version, source_dir)
201
note("%s did not create file for %s version %s", rule, package, version)
203
if rule == "get-orig-source":
204
warning("Using get-orig-source to retrieve the packaged orig tarball "
205
"is deprecated (see debian policy section 4.9). Provide the "
206
"'get-packaged-orig-source' target instead.")
208
for filename in filenames:
210
filename, os.path.basename(filename), target_dir=target_dir)
211
ret.append(os.path.join(target_dir, os.path.basename(filename)))
214
def _get_rules_id(self):
218
rules_name = 'debian/rules'
219
return self.tree.path2id(rules_name)
221
def fetch_tarballs(self, package, version, target_dir, components=None):
222
rules_id = self._get_rules_id()
224
note("No debian/rules file to use to retrieve upstream tarball.")
225
raise PackageVersionNotPresent(package, version, self)
226
tmpdir = tempfile.mkdtemp(prefix="builddeb-get-source-")
228
base_export_dir = os.path.join(tmpdir, "export")
229
export_dir = base_export_dir
232
export_dir = os.path.join(export_dir, "debian")
233
export(self.tree, export_dir, format="dir")
234
tarball_paths = self._get_current_source(base_export_dir,
235
package, version, target_dir)
236
if tarball_paths is None:
237
raise PackageVersionNotPresent(package, version, self)
240
shutil.rmtree(tmpdir)
243
170
class UScanSource(UpstreamSource):
244
171
"""Upstream source that uses uscan."""