提交 c3fd48b9 编写于 作者: J Joerg Jaspert

lenny-p-u

byebye symlink_dists.py
Signed-off-by: NJoerg Jaspert <joerg@debian.org>
上级 fb92047c
......@@ -350,7 +350,7 @@ Suite
Announce "debian-testing-changes@lists.debian.org";
Origin "Debian";
Description "Debian Testing distribution updates - Not Released";
CodeName "testing-proposed-updates";
CodeName "lenny-proposed-updates";
OverrideCodeName "lenny";
OverrideSuite "testing";
ValidTime 604800; // 7 days
......
#!/usr/bin/env python
# 'Fix' stable to make debian-cd and dpkg -BORGiE users happy
# Copyright (C) 2000, 2001, 2002, 2003, 2006 James Troup <james@nocrew.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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
################################################################################
# _ _ ____
# | \ | | __ )_
# | \| | _ (_)
# | |\ | |_) | This has been obsoleted since the release of woody.
# |_| \_|____(_)
#
################################################################################
import os, pg, re, sys
import apt_pkg
import daklib.database
import daklib.utils
################################################################################
re_strip_section_prefix = re.compile(r'.*/')
Cnf = None
projectB = None
################################################################################
def usage (exit_code=0):
print """Usage: dak symlink-dists [OPTIONS]
Create compatibility symlinks from legacy locations to the pool.
-v, --verbose explain what is being done
-h, --help show this help and exit"""
sys.exit(exit_code)
################################################################################
def fix_component_section (component, section):
if component == "":
component = daklib.utils.extract_component_from_section(section)[1]
# FIXME: ugly hacks to work around override brain damage
section = re_strip_section_prefix.sub('', section)
if section == "main" or section == "contrib" or section == "non-free":
section = ''
if section != '':
section += '/'
return (component, section)
################################################################################
def find_dislocated_stable(Conf, DBConn):
dislocated_files = {}
codename = Conf["Suite::Stable::Codename"]
# Source
q = DBConn.query("""
SELECT DISTINCT ON (f.id) c.name, sec.section, l.path, f.filename, f.id
FROM component c, override o, section sec, source s, files f, location l,
dsc_files df, suite su, src_associations sa, files f2, location l2
WHERE su.suite_name = 'stable' AND sa.suite = su.id AND sa.source = s.id
AND f2.id = s.file AND f2.location = l2.id AND df.source = s.id
AND f.id = df.file AND f.location = l.id AND o.package = s.source
AND sec.id = o.section AND NOT (f.filename ~ '^%s/')
AND l.component = c.id AND o.suite = su.id
""" % (codename))
# Only needed if you have files in legacy-mixed locations
# UNION SELECT DISTINCT ON (f.id) null, sec.section, l.path, f.filename, f.id
# FROM component c, override o, section sec, source s, files f, location l,
# dsc_files df, suite su, src_associations sa, files f2, location l2
# WHERE su.suite_name = 'stable' AND sa.suite = su.id AND sa.source = s.id
# AND f2.id = s.file AND f2.location = l2.id AND df.source = s.id
# AND f.id = df.file AND f.location = l.id AND o.package = s.source
# AND sec.id = o.section AND NOT (f.filename ~ '^%s/') AND o.suite = su.id
# AND NOT EXISTS (SELECT 1 FROM location l WHERE l.component IS NOT NULL AND f.location = l.id)
for i in q.getresult():
(component, section) = fix_component_section(i[0], i[1])
if Conf.FindB("Dinstall::LegacyStableHasNoSections"):
section=""
dest = "%sdists/%s/%s/source/%s%s" % (Conf["Dir::Root"], codename, component, section, os.path.basename(i[3]))
if not os.path.exists(dest):
src = i[2]+i[3]
src = daklib.utils.clean_symlink(src, dest, Conf["Dir::Root"])
if Conf.Find("Symlink-Dists::Options::Verbose"):
print src+' -> '+dest
os.symlink(src, dest)
dislocated_files[i[4]] = dest
# Binary
architectures = filter(daklib.utils.real_arch, Conf.ValueList("Suite::Stable::Architectures"))
q = DBConn.query("""
SELECT DISTINCT ON (f.id) c.name, a.arch_string, sec.section, b.package,
b.version, l.path, f.filename, f.id
FROM architecture a, bin_associations ba, binaries b, component c, files f,
location l, override o, section sec, suite su
WHERE su.suite_name = 'stable' AND ba.suite = su.id AND ba.bin = b.id
AND f.id = b.file AND f.location = l.id AND o.package = b.package
AND sec.id = o.section AND NOT (f.filename ~ '^%s/')
AND b.architecture = a.id AND l.component = c.id AND o.suite = su.id""" %
(codename))
# Only needed if you have files in legacy-mixed locations
# UNION SELECT DISTINCT ON (f.id) null, a.arch_string, sec.section, b.package,
# b.version, l.path, f.filename, f.id
# FROM architecture a, bin_associations ba, binaries b, component c, files f,
# location l, override o, section sec, suite su
# WHERE su.suite_name = 'stable' AND ba.suite = su.id AND ba.bin = b.id
# AND f.id = b.file AND f.location = l.id AND o.package = b.package
# AND sec.id = o.section AND NOT (f.filename ~ '^%s/')
# AND b.architecture = a.id AND o.suite = su.id AND NOT EXISTS
# (SELECT 1 FROM location l WHERE l.component IS NOT NULL AND f.location = l.id)
for i in q.getresult():
(component, section) = fix_component_section(i[0], i[2])
if Conf.FindB("Dinstall::LegacyStableHasNoSections"):
section=""
architecture = i[1]
package = i[3]
version = daklib.utils.re_no_epoch.sub('', i[4])
src = i[5]+i[6]
dest = "%sdists/%s/%s/binary-%s/%s%s_%s.deb" % (Conf["Dir::Root"], codename, component, architecture, section, package, version)
src = daklib.utils.clean_symlink(src, dest, Conf["Dir::Root"])
if not os.path.exists(dest):
if Conf.Find("Symlink-Dists::Options::Verbose"):
print src+' -> '+dest
os.symlink(src, dest)
dislocated_files[i[7]] = dest
# Add per-arch symlinks for arch: all debs
if architecture == "all":
for arch in architectures:
dest = "%sdists/%s/%s/binary-%s/%s%s_%s.deb" % (Conf["Dir::Root"], codename, component, arch, section, package, version)
if not os.path.exists(dest):
if Conf.Find("Symlink-Dists::Options::Verbose"):
print src+' -> '+dest
os.symlink(src, dest)
return dislocated_files
################################################################################
def main ():
global Cnf, projectB
Cnf = daklib.utils.get_conf()
Arguments = [('h',"help","Symlink-Dists::Options::Help"),
('v',"verbose","Symlink-Dists::Options::Verbose")]
for i in ["help", "verbose" ]:
if not Cnf.has_key("Symlink-Dists::Options::%s" % (i)):
Cnf["Symlink-Dists::Options::%s" % (i)] = ""
apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv)
Options = Cnf.SubTree("Symlink-Dists::Options")
if Options["Help"]:
usage()
projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"]))
daklib.database.init(Cnf, projectB)
find_dislocated_stable(Cnf, projectB)
#######################################################################################
if __name__ == '__main__':
main()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册