/usr/share/pyshared/AptFs/download.py is in aptfs 1:0+git201108031956-38fb8dc-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | # -*- coding: utf-8 -*-
# aptfs -- FUSE filesystem for APT source repositories
# Copyright (C) 2008 Chris Lamb <lamby@debian.org>
#
# This program 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.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import tempfile
import commands
import os
class DownloadError(Exception):
def __init__(self, output, dir):
super(DownloadError, self).__init__(self, output)
self.dir = dir
def download(srcpkg, tempdir=None, secure=False):
'''
Download and the specified source package and returns the base directory
of the package, ie. just below 'download/'.
Other apt-related information, including the diff.gz and original tarball
are deleted.
'''
base_path = None
dir = tempfile.mkdtemp('_%s' % srcpkg, 'aptfs_', tempdir)
if secure:
cmds = (
'cd "%s"' % dir,
'apt-get source "%s"' % srcpkg,
)
else:
cmds = (
'cd "%s"' % dir,
'dget --quiet --download-only --allow-unauthenticated $(apt-get source ' + \
'--print-uris "%s" | sed -n "s/\'\(http[^\']*.dsc\).*/\\1/p")' % srcpkg,
# Break the signature such that dpkg-source does not attempt to verify it.
'awk -v X=0 \'/^[ ]*$/ { X=1 } { if (X) print }\' *.dsc > src.dsc',
'dpkg-source -x src.dsc unpacked',
)
status, output = commands.getstatusoutput(' && '.join(cmds))
if status != 0:
raise DownloadError(output, dir)
for fname in os.listdir(dir):
path = os.path.join(dir, fname)
# Delete everything except unpacked source tree
if os.path.isdir(path):
base_path = path
else:
os.unlink(path)
if base_path is None:
# No source directory found
raise DownloadError
return base_path
|