aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/scripts/install.py
diff options
context:
space:
mode:
Diffstat (limited to 'linden/scripts/install.py')
-rwxr-xr-xlinden/scripts/install.py51
1 files changed, 27 insertions, 24 deletions
diff --git a/linden/scripts/install.py b/linden/scripts/install.py
index 69f0c64..a16034f 100755
--- a/linden/scripts/install.py
+++ b/linden/scripts/install.py
@@ -564,40 +564,43 @@ windows/i686/vs/2003 -- specify a windows visual studio 2003 package"""
564 tar.extractall(path=install_dir) 564 tar.extractall(path=install_dir)
565 except AttributeError: 565 except AttributeError:
566 _extractall(tar, path=install_dir) 566 _extractall(tar, path=install_dir)
567 if _get_platform() == 'linux' or _get_platform() == 'linux64': 567 symlinks = []
568 first = 1 568 if _get_platform() == 'linux' or _get_platform() == 'linux64':
569 for tfile in tar.getnames(): 569 first = 1
570 if tfile.find('.so.') > 0: 570 for tfile in tar.getnames():
571 LINK = re.sub(r'\.so\.[0-9.]*$', '.so', tfile) 571 if tfile.find('.so.') > 0:
572 link_name = "../" + LINK 572 LINK = re.sub(r'\.so\.[0-9.]*$', '.so', tfile)
573 if not os.path.exists(link_name): 573 link_name = install_dir + "/" + LINK
574 if first == 1: 574 if not os.path.exists(link_name):
575 first = 0 575 if first == 1:
576 print "Adding missing symlink(s) for package %s:" % ifile.filename 576 first = 0
577 target = os.path.basename(tfile) 577 print "Adding missing symlink(s) for package %s:" % ifile.filename
578 soname = os.popen("readelf -d \"../%(tfile)s\" " 578 target = os.path.basename(tfile)
579 " | grep SONAME " 579 soname = os.popen("readelf -d \"%(install_dir)s/%(tfile)s\" %(stderr_redirect)s"
580 " | sed -e 's/.*\[//;s/\].*//'" % {"tfile": tfile}).read() 580 " | grep SONAME | sed -e 's/.*\[//;s/\].*//'" %
581 soname = soname.strip() 581 {"install_dir": install_dir, "tfile": tfile, "stderr_redirect": ("2>/dev/null" if self._dryrun else "")}).read()
582 if soname: # not empty 582 soname = soname.strip()
583 tmpfname = os.path.dirname(LINK) + "/" + soname 583 if soname: # not empty
584 if os.path.exists("../" + tmpfname): 584 tmpfname = os.path.dirname(LINK) + "/" + soname
585 target = soname 585 if os.path.exists(install_dir + "/" + tmpfname):
586 else: 586 target = soname
587 print "WARNING: SONAME %s doesn't exist!" % tmpfname 587 else:
588 print "WARNING: SONAME %s doesn't exist!" % tmpfname
589 if not self._dryrun:
588 os.symlink(target, link_name) 590 os.symlink(target, link_name)
589 print " %s --> %s" % (LINK, target) 591 symlinks += [LINK]
592 print " %s --> %s" % (LINK, target)
590 if ifile.pkgname in self._installed: 593 if ifile.pkgname in self._installed:
591 self._installed[ifile.pkgname].add_files( 594 self._installed[ifile.pkgname].add_files(
592 ifile.url, 595 ifile.url,
593 tar.getnames()) 596 tar.getnames() + symlinks)
594 self._installed[ifile.pkgname].set_md5sum( 597 self._installed[ifile.pkgname].set_md5sum(
595 ifile.url, 598 ifile.url,
596 ifile.md5sum) 599 ifile.md5sum)
597 else: 600 else:
598 # *HACK: this understands the installed package syntax. 601 # *HACK: this understands the installed package syntax.
599 definition = { ifile.url : 602 definition = { ifile.url :
600 {'files': tar.getnames(), 603 {'files': tar.getnames() + symlinks,
601 'md5sum' : ifile.md5sum } } 604 'md5sum' : ifile.md5sum } }
602 self._installed[ifile.pkgname] = InstalledPackage(definition) 605 self._installed[ifile.pkgname] = InstalledPackage(definition)
603 self._installed_changed = True 606 self._installed_changed = True