Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: pym/portage/dbapi/vartree.py

Issue 6370011: Update Portage to support fixing *.la and *.pc files. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/portage_tool.git@cros-2.1.9
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pym/portage/const.py ('k') | pym/portage/package/ebuild/doebuild.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 1998-2011 Gentoo Foundation 1 # Copyright 1998-2011 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2 2 # Distributed under the terms of the GNU General Public License v2
3 3
4 __all__ = [ 4 __all__ = [
5 "vardbapi", "vartree", "dblink"] + \ 5 "vardbapi", "vartree", "dblink"] + \
6 ["write_contents", "tar_contents"] 6 ["write_contents", "tar_contents"]
7 7
8 import portage 8 import portage
9 portage.proxy.lazyimport.lazyimport(globals(), 9 portage.proxy.lazyimport.lazyimport(globals(),
10 'portage.checksum:_perform_md5_merge@perform_md5', 10 'portage.checksum:_perform_md5_merge@perform_md5',
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 from portage import _selinux_merge 51 from portage import _selinux_merge
52 from portage import _unicode_decode 52 from portage import _unicode_decode
53 from portage import _unicode_encode 53 from portage import _unicode_encode
54 54
55 from _emerge.AsynchronousLock import AsynchronousLock 55 from _emerge.AsynchronousLock import AsynchronousLock
56 from _emerge.EbuildBuildDir import EbuildBuildDir 56 from _emerge.EbuildBuildDir import EbuildBuildDir
57 from _emerge.PollScheduler import PollScheduler 57 from _emerge.PollScheduler import PollScheduler
58 from _emerge.MiscFunctionsProcess import MiscFunctionsProcess 58 from _emerge.MiscFunctionsProcess import MiscFunctionsProcess
59 59
60 import codecs 60 import codecs
61 import fileinput
61 import gc 62 import gc
62 import re, shutil, stat, errno, subprocess 63 import re, shutil, stat, errno, subprocess
63 import logging 64 import logging
64 import os as _os 65 import os as _os
65 import stat 66 import stat
66 import sys 67 import sys
67 import tempfile 68 import tempfile
68 import time 69 import time
69 import warnings 70 import warnings
70 71
(...skipping 1623 matching lines...) Expand 10 before | Expand all | Expand 10 after
1694 if log_path is not None and os.path.exists(log_path): 1695 if log_path is not None and os.path.exists(log_path):
1695 # Restore this since it gets lost somewhere above and it 1696 # Restore this since it gets lost somewhere above and it
1696 # needs to be set for _display_merge() to be able to log . 1697 # needs to be set for _display_merge() to be able to log .
1697 # Note that the log isn't necessarily supposed to exist 1698 # Note that the log isn't necessarily supposed to exist
1698 # since if PORT_LOGDIR is unset then it's a temp file 1699 # since if PORT_LOGDIR is unset then it's a temp file
1699 # so it gets cleaned above. 1700 # so it gets cleaned above.
1700 self.settings["PORTAGE_LOG_FILE"] = log_path 1701 self.settings["PORTAGE_LOG_FILE"] = log_path
1701 else: 1702 else:
1702 self.settings.pop("PORTAGE_LOG_FILE", None) 1703 self.settings.pop("PORTAGE_LOG_FILE", None)
1703 1704
1704 » » env_update(target_root=self.settings['ROOT'], 1705 » » if 'no-env-update' not in self.settings.features:
1705 » » » prev_mtimes=ldpath_mtimes, 1706 » » » env_update(target_root=self.settings['ROOT'],
1706 » » » contents=contents, env=self.settings.environ(), 1707 » » » » prev_mtimes=ldpath_mtimes,
1707 » » » writemsg_level=self._display_merge) 1708 » » » » contents=contents, env=self.settings.environ(),
1709 » » » » writemsg_level=self._display_merge)
1708 return os.EX_OK 1710 return os.EX_OK
1709 1711
1710 def _display_merge(self, msg, level=0, noiselevel=0): 1712 def _display_merge(self, msg, level=0, noiselevel=0):
1711 if not self._verbose and noiselevel >= 0 and level < logging.WAR N: 1713 if not self._verbose and noiselevel >= 0 and level < logging.WAR N:
1712 return 1714 return
1713 if self._scheduler is not None: 1715 if self._scheduler is not None:
1714 self._scheduler.dblinkDisplayMerge(self, msg, 1716 self._scheduler.dblinkDisplayMerge(self, msg,
1715 level=level, noiselevel=noiselevel) 1717 level=level, noiselevel=noiselevel)
1716 return 1718 return
1717 writemsg_level(msg, level=level, noiselevel=noiselevel) 1719 writemsg_level(msg, level=level, noiselevel=noiselevel)
(...skipping 1652 matching lines...) Expand 10 before | Expand all | Expand 10 after
3370 self, mydbapi, myebuild, "postinst") 3372 self, mydbapi, myebuild, "postinst")
3371 finally: 3373 finally:
3372 self.settings.pop("PORTAGE_UPDATE_ENV", None) 3374 self.settings.pop("PORTAGE_UPDATE_ENV", None)
3373 3375
3374 if a != os.EX_OK: 3376 if a != os.EX_OK:
3375 # It's stupid to bail out here, so keep going regardless of 3377 # It's stupid to bail out here, so keep going regardless of
3376 # phase return code. 3378 # phase return code.
3377 showMessage(_("!!! FAILED postinst: ")+str(a)+"\n", 3379 showMessage(_("!!! FAILED postinst: ")+str(a)+"\n",
3378 level=logging.ERROR, noiselevel=-1) 3380 level=logging.ERROR, noiselevel=-1)
3379 3381
3380 » » downgrade = False 3382 » » if 'no-env-update' not in self.settings.features:
3381 » » for v in otherversions: 3383 » » » downgrade = False
3382 » » » if pkgcmp(catpkgsplit(self.pkg)[1:], catpkgsplit(v)[1:]) < 0: 3384 » » » for v in otherversions:
3383 » » » » downgrade = True 3385 » » » » if pkgcmp(catpkgsplit(self.pkg)[1:], catpkgsplit (v)[1:]) < 0:
3386 » » » » » downgrade = True
3384 3387
3385 » » #update environment settings, library paths. DO NOT change symli nks. 3388 » » » #update environment settings, library paths. DO NOT chan ge symlinks.
3386 » » env_update(makelinks=(not downgrade), 3389 » » » env_update(makelinks=(not downgrade),
3387 » » » target_root=self.settings['ROOT'], prev_mtimes=prev_mtim es, 3390 » » » » target_root=self.settings['ROOT'], prev_mtimes=p rev_mtimes,
3388 » » » contents=contents, env=self.settings.environ(), 3391 » » » » contents=contents, env=self.settings.environ(),
3389 » » » writemsg_level=self._display_merge) 3392 » » » » writemsg_level=self._display_merge)
3393
3394 » » # Fix *.{la,pc} files to point to libs in target_root, if they
3395 » » # don't do so already.
3396 » » re_root = self.settings["ROOT"].strip("/")
3397 » » if re_root:
3398 » » » fix_files = []
3399 » » » for path in contents:
3400 » » » » if path.endswith(".la") or path.endswith(".pc"):
3401 » » » » » if os.path.exists(path): fix_files.appen d(path)
3402 » » » if fix_files:
3403 » » » » pat = re.compile(r"([' =](?:-[IL])?/)(usr|lib|op t)")
3404 » » » » for line in fileinput.input(fix_files, inplace=1 ):
3405 » » » » » sys.stdout.write(pat.sub(r"\1%s/\2" % re _root, line))
3390 3406
3391 # For gcc upgrades, preserved libs have to be removed after the 3407 # For gcc upgrades, preserved libs have to be removed after the
3392 # the library path has been updated. 3408 # the library path has been updated.
3393 self._linkmap_rebuild() 3409 self._linkmap_rebuild()
3394 cpv_lib_map = self._find_unused_preserved_libs() 3410 cpv_lib_map = self._find_unused_preserved_libs()
3395 if cpv_lib_map: 3411 if cpv_lib_map:
3396 self._remove_preserved_libs(cpv_lib_map) 3412 self._remove_preserved_libs(cpv_lib_map)
3397 for cpv, removed in cpv_lib_map.items(): 3413 for cpv, removed in cpv_lib_map.items():
3398 if not self.vartree.dbapi.cpv_exists(cpv): 3414 if not self.vartree.dbapi.cpv_exists(cpv):
3399 continue 3415 continue
(...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after
4143 encoding=object.__getattribute__(os, '_e ncoding'), 4159 encoding=object.__getattribute__(os, '_e ncoding'),
4144 errors='strict'), 'rb') 4160 errors='strict'), 'rb')
4145 try: 4161 try:
4146 tar.addfile(tarinfo, f) 4162 tar.addfile(tarinfo, f)
4147 finally: 4163 finally:
4148 f.close() 4164 f.close()
4149 else: 4165 else:
4150 tar.addfile(tarinfo) 4166 tar.addfile(tarinfo)
4151 if onProgress: 4167 if onProgress:
4152 onProgress(maxval, curval) 4168 onProgress(maxval, curval)
OLDNEW
« no previous file with comments | « pym/portage/const.py ('k') | pym/portage/package/ebuild/doebuild.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698