blob: 823890c910fcd64f1a5943bebd50cc81f3cd9209 [file] [log] [blame]
# Copyright 2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
from portage.tests import TestCase
from portage.util._dyn_libs.NeededEntry import NeededEntry
from portage.util._dyn_libs.soname_deps import SonameDepsProcessor
class SonameDepsProcessorTestCase(TestCase):
def testInternalLibsWithoutSoname(self):
"""
Test handling of internal libraries that lack an soname, which are
resolved via DT_RUNPATH, see ebtables for example (bug 646190).
"""
needed_elf_2 = """
X86_64;/sbin/ebtables;;/lib64/ebtables;libebt_802_3.so,libebtable_broute.so,libc.so.6;x86_64
X86_64;/lib64/ebtables/libebtable_broute.so;;;libc.so.6;x86_64
X86_64;/lib64/ebtables/libebt_802_3.so;;;libc.so.6;x86_64
"""
soname_deps = SonameDepsProcessor('', '')
for line in needed_elf_2.splitlines():
if not line:
continue
entry = NeededEntry.parse(None, line)
soname_deps.add(entry)
self.assertEqual(soname_deps.provides, None)
# Prior to the fix for bug 646190, REQUIRES contained references to
# the internal libebt* libraries which are resolved via a DT_RUNPATH
# entry referring to the /lib64/ebtables directory that contains the
# internal libraries.
self.assertEqual(soname_deps.requires, 'x86_64: libc.so.6\n')