| OLD | NEW |
| 1 # Copyright 2010-2011 Gentoo Foundation | 1 # Copyright 2010-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__ = ['doebuild', 'doebuild_environment', 'spawn', 'spawnebuild'] | 4 __all__ = ['doebuild', 'doebuild_environment', 'spawn', 'spawnebuild'] |
| 5 | 5 |
| 6 import codecs | 6 import codecs |
| 7 import fileinput |
| 7 import gzip | 8 import gzip |
| 8 from itertools import chain | 9 from itertools import chain |
| 9 import logging | 10 import logging |
| 10 import os as _os | 11 import os as _os |
| 11 import re | 12 import re |
| 12 import shutil | 13 import shutil |
| 13 import signal | 14 import signal |
| 14 import stat | 15 import stat |
| 15 import sys | 16 import sys |
| 16 import tempfile | 17 import tempfile |
| (...skipping 1360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1377 os.system("mtree -c -p %s -k flags > %s" % \ | 1378 os.system("mtree -c -p %s -k flags > %s" % \ |
| 1378 (_shell_quote(mysettings["D"]), | 1379 (_shell_quote(mysettings["D"]), |
| 1379 _shell_quote(os.path.join(mysettings["T"], "bsdflags.mtr
ee")))) | 1380 _shell_quote(os.path.join(mysettings["T"], "bsdflags.mtr
ee")))) |
| 1380 os.system("chflags -R noschg,nouchg,nosappnd,nouappnd %s" % \ | 1381 os.system("chflags -R noschg,nouchg,nosappnd,nouappnd %s" % \ |
| 1381 (_shell_quote(mysettings["D"]),)) | 1382 (_shell_quote(mysettings["D"]),)) |
| 1382 os.system("chflags -R nosunlnk,nouunlnk %s 2>/dev/null" % \ | 1383 os.system("chflags -R nosunlnk,nouunlnk %s 2>/dev/null" % \ |
| 1383 (_shell_quote(mysettings["D"]),)) | 1384 (_shell_quote(mysettings["D"]),)) |
| 1384 | 1385 |
| 1385 destdir = mysettings["D"] | 1386 destdir = mysettings["D"] |
| 1386 unicode_errors = [] | 1387 unicode_errors = [] |
| 1388 fix_files = [] |
| 1387 | 1389 |
| 1388 while True: | 1390 while True: |
| 1389 | 1391 |
| 1390 unicode_error = False | 1392 unicode_error = False |
| 1391 size = 0 | 1393 size = 0 |
| 1392 counted_inodes = set() | 1394 counted_inodes = set() |
| 1393 fixlafiles_announced = False | 1395 fixlafiles_announced = False |
| 1394 fixlafiles = "fixlafiles" in mysettings.features | 1396 fixlafiles = "fixlafiles" in mysettings.features |
| 1395 | 1397 |
| 1396 for parent, dirs, files in os.walk(destdir): | 1398 for parent, dirs, files in os.walk(destdir): |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1465 writemsg("Fixing .la fil
es\n", fd=out) | 1467 writemsg("Fixing .la fil
es\n", fd=out) |
| 1466 writemsg(" %s\n" % fpath[len(d
estdir):], fd=out) | 1468 writemsg(" %s\n" % fpath[len(d
estdir):], fd=out) |
| 1467 # write_atomic succeeds even in
some cases in which | 1469 # write_atomic succeeds even in
some cases in which |
| 1468 # a normal write might fail due
to file permission | 1470 # a normal write might fail due
to file permission |
| 1469 # settings on some operating sys
tems such as HP-UX | 1471 # settings on some operating sys
tems such as HP-UX |
| 1470 write_atomic(_unicode_encode(fpa
th, | 1472 write_atomic(_unicode_encode(fpa
th, |
| 1471 encoding=_encodings['mer
ge'], errors='strict'), | 1473 encoding=_encodings['mer
ge'], errors='strict'), |
| 1472 new_contents, mode='wb') | 1474 new_contents, mode='wb') |
| 1473 | 1475 |
| 1474 mystat = os.lstat(fpath) | 1476 mystat = os.lstat(fpath) |
| 1475 » » » » if stat.S_ISREG(mystat.st_mode) and \ | 1477 » » » » if stat.S_ISREG(mystat.st_mode): |
| 1476 » » » » » mystat.st_ino not in counted_inodes: | 1478 » » » » » if fname.endswith(".pc") or fname.endswi
th(".la"): |
| 1477 » » » » » counted_inodes.add(mystat.st_ino) | 1479 » » » » » » fix_files.append(fpath) |
| 1478 » » » » » size += mystat.st_size | 1480 » » » » » if mystat.st_ino not in counted_inodes: |
| 1481 » » » » » » counted_inodes.add(mystat.st_ino
) |
| 1482 » » » » » » size += mystat.st_size |
| 1479 if mystat.st_uid != portage_uid and \ | 1483 if mystat.st_uid != portage_uid and \ |
| 1480 mystat.st_gid != portage_gid: | 1484 mystat.st_gid != portage_gid: |
| 1481 continue | 1485 continue |
| 1482 myuid = -1 | 1486 myuid = -1 |
| 1483 mygid = -1 | 1487 mygid = -1 |
| 1484 if mystat.st_uid == portage_uid: | 1488 if mystat.st_uid == portage_uid: |
| 1485 myuid = inst_uid | 1489 myuid = inst_uid |
| 1486 if mystat.st_gid == portage_gid: | 1490 if mystat.st_gid == portage_gid: |
| 1487 mygid = inst_gid | 1491 mygid = inst_gid |
| 1488 apply_secpass_permissions( | 1492 apply_secpass_permissions( |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1536 try: | 1540 try: |
| 1537 os.unlink(filename) | 1541 os.unlink(filename) |
| 1538 except OSError: | 1542 except OSError: |
| 1539 pass | 1543 pass |
| 1540 continue | 1544 continue |
| 1541 codecs.open(_unicode_encode(os.path.join(build_info_dir, | 1545 codecs.open(_unicode_encode(os.path.join(build_info_dir, |
| 1542 k), encoding=_encodings['fs'], errors='strict'), | 1546 k), encoding=_encodings['fs'], errors='strict'), |
| 1543 mode='w', encoding=_encodings['repo.content'], | 1547 mode='w', encoding=_encodings['repo.content'], |
| 1544 errors='strict').write(v + '\n') | 1548 errors='strict').write(v + '\n') |
| 1545 | 1549 |
| 1550 re_root = mysettings["ROOT"].strip("/") |
| 1551 if fix_files and re_root: |
| 1552 # Replace references to our sysroot with references to "/" in bi
npkg. |
| 1553 # Sysroot will be re-appended when the package is installed. |
| 1554 pat = re.compile(r"([' =](-[IL])?/)%s/" % re.escape(re_root)) |
| 1555 for line in fileinput.input(fix_files, inplace=1): |
| 1556 sys.stdout.write(pat.sub(r"\1", line)) |
| 1557 |
| 1546 if bsd_chflags: | 1558 if bsd_chflags: |
| 1547 # Restore all of the flags saved above. | 1559 # Restore all of the flags saved above. |
| 1548 os.system("mtree -e -p %s -U -k flags < %s > /dev/null" % \ | 1560 os.system("mtree -e -p %s -U -k flags < %s > /dev/null" % \ |
| 1549 (_shell_quote(mysettings["D"]), | 1561 (_shell_quote(mysettings["D"]), |
| 1550 _shell_quote(os.path.join(mysettings["T"], "bsdflags.mtr
ee")))) | 1562 _shell_quote(os.path.join(mysettings["T"], "bsdflags.mtr
ee")))) |
| 1551 | 1563 |
| 1552 def _merge_unicode_error(errors): | 1564 def _merge_unicode_error(errors): |
| 1553 lines = [] | 1565 lines = [] |
| 1554 | 1566 |
| 1555 msg = _("This package installs one or more file names containing " | 1567 msg = _("This package installs one or more file names containing " |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1567 msg = _("For best results, UTF-8 encoding is recommended. See " | 1579 msg = _("For best results, UTF-8 encoding is recommended. See " |
| 1568 "the Gentoo Linux Localization Guide for instructions " | 1580 "the Gentoo Linux Localization Guide for instructions " |
| 1569 "about how to configure your locale for UTF-8 encoding:"
) | 1581 "about how to configure your locale for UTF-8 encoding:"
) |
| 1570 lines.extend(wrap(msg, 72)) | 1582 lines.extend(wrap(msg, 72)) |
| 1571 lines.append("") | 1583 lines.append("") |
| 1572 lines.append("\t" + \ | 1584 lines.append("\t" + \ |
| 1573 "http://www.gentoo.org/doc/en/guide-localization.xml") | 1585 "http://www.gentoo.org/doc/en/guide-localization.xml") |
| 1574 lines.append("") | 1586 lines.append("") |
| 1575 | 1587 |
| 1576 return lines | 1588 return lines |
| OLD | NEW |