Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 36556 Details for
Bug 46096
fixdbentries breaks vardb and binaries
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
Script to fix /var/db/pkg
fixvardbentries (text/plain), 2.33 KB, created by
Jason Stubbs (RETIRED)
on 2004-07-31 21:55:49 UTC
(
hide
)
Description:
Script to fix /var/db/pkg
Filename:
MIME Type:
Creator:
Jason Stubbs (RETIRED)
Created:
2004-07-31 21:55:49 UTC
Size:
2.33 KB
patch
obsolete
>#!/usr/bin/python -O > >import os >import sys > >def fix_entries(path): > path += "/" > > # Find the ebuild > contents = os.listdir(path) > ebuild = None > for fn in contents: > if fn[-7:] == ".ebuild": > ebuild = fn > break > if ebuild is None: > print "missing ebuild in",path > return > > # Read it > ebuildfile = open(path+ebuild) > orig = ebuildfile.readlines() > ebuildfile.close() > > # Quickly check it > if "\1" not in " ".join(orig): > return > > # Read the original environment > os.system("bunzip2 -k "+path+"environment.bz2") > envfile = open(path+"environment") > lines = envfile.readlines() > envfile.close() > os.remove(path+"environment") > > # Parse it > env = {} > for line in lines: > line = " ".join(line.split()) > values = line.split("=") > if len(values) == 1: > break > key = values[0] > value = "=".join(values[1:]) > if value and value[0] == "$": > value = value[1:] > if value and value[0] == "'": > value = value[1:-1] > value = value.replace("\\n","\n") > value = value.replace("\\t","\t") > env[key] = value > > # Revert the *DEPEND files to their originals > for key in ["DEPEND","RDEPEND","PDEPEND"]: > if not env.has_key(key): > env[key] = "" > f = open(path+key, "w") > f.write(env[key]) > f.close() > > # Check and fix unbalanced quotes > quotecount = 0 > for l in orig: > quotecount += l.count('"') > if quotecount/2 != int(quotecount/2): > for x in range(len(orig)-1,-1,-1): > if "\1" in orig[x]: > for y in range(len(orig[x])-1,-1,-1): > if orig[x][y]=="\1": > orig[x][y]=='"' > break > break > > # Replace *DEPEND in the ebuild with their originals > fixed = [] > x=0 > while x != len(orig): > for key in ["DEPEND","RDEPEND","PDEPEND"]: > if orig[x].startswith(key): > quotes = orig[x].count('"') > while quotes != 2: > if quotes > 2: > print "broken ebuild",ebuild > return > x += 1 > quotes += orig[x].count('"') > fixed += [key+'="'+env[key]+'"\n'] > x += 1 > break > if x != len(orig): > fixed += orig[x] > x += 1 > ebuildfile = open(path+ebuild,"w") > ebuildfile.writelines(fixed) > ebuildfile.close() > > > >vardb = "/var/db/pkg/" >for cat in os.listdir(vardb): > if os.path.isdir(vardb+cat): > for pkg in os.listdir(vardb+cat): > if pkg[0] != "-" and os.path.isdir(vardb+cat+"/"+pkg) and \ > os.access(vardb+cat+"/"+pkg+"/environment.bz2",os.F_OK): > fix_entries(vardb+cat+"/"+pkg) > >import portage >del portage.mtimedb["updates"]
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 46096
:
28274
|
28275
|
28929
|
29014
|
29020
|
36556
|
37209
|
37526
|
37536
|
37537
|
37541
|
37591