From e49bb38f542262f0bd3ec34ff8cdda1da8a32531 Mon Sep 17 00:00:00 2001 From: Yaroslav Brustinov Date: Fri, 25 Nov 2016 20:11:42 +0200 Subject: TRex build: add message on missing libz files, add rpath to dummy libs (libnl-route-3.so.200 for Ubuntu16) Signed-off-by: Yaroslav Brustinov --- linux_dpdk/ws_main.py | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) (limited to 'linux_dpdk/ws_main.py') diff --git a/linux_dpdk/ws_main.py b/linux_dpdk/ws_main.py index c6e09676..3d96c750 100755 --- a/linux_dpdk/ws_main.py +++ b/linux_dpdk/ws_main.py @@ -12,6 +12,7 @@ import copy; import re import uuid import subprocess +import platform # these variables are mandatory ('/' are converted automatically) top = '../' @@ -98,9 +99,28 @@ def options(opt): opt.add_option('--pkg-file', '--pkg_file', dest='pkg_file', default=False, action='store', help="Destination filename for 'pkg' option.") opt.add_option('--publish-commit', '--publish_commit', dest='publish_commit', default=False, action='store', help="Specify commit id for 'publish_both' option (Please make sure it's good!)") + +def missing_pkg_msg(fedora, ubuntu): + msg = 'not found\n' + fedora_install = 'Fedora install:\nsudo yum install %s\n' % fedora + ubuntu_install = 'Ubuntu install:\nsudo apt install %s\n' % ubuntu + try: + if platform.linux_distribution()[0].capitalize() == 'Ubuntu': + msg += ubuntu_install + elif platform.linux_distribution()[0].capitalize() == 'Fedora': + msg += fedora_install + else: + raise + except: + msg += 'Could not determine Linux distribution.\n%s\n%s' % (ubuntu_install, fedora_install) + return msg + + def configure(conf): conf.load('g++') conf.load('gcc') + conf.check_cxx(lib = 'z', errmsg = missing_pkg_msg(fedora = 'zlib-devel', ubuntu = 'zlib1g-dev')) + def getstatusoutput(cmd): """ Return (status, output) of executing cmd in a shell. Taken from Python3 subprocess.getstatusoutput""" @@ -749,12 +769,6 @@ build_types = [ def build_prog (bld, build_obj): - zmq_lib_path='external_libs/zmq/' - bld.read_shlib( name='zmq' , paths=[top+zmq_lib_path] ) - - ibverbs_lib_path='external_libs/ibverbs/' - bld.read_shlib( name='ibverbs' , paths=[top+ibverbs_lib_path] ) - #rte_libs =[ # 'dpdk']; @@ -778,6 +792,8 @@ def build_prog (bld, build_obj): target=build_obj.get_dpdk_target() ); + dumy_libs_path = os.path.abspath(os.path.join(top, 'scripts', 'dumy_libs')) + bld.program(features='cxx cxxprogram', includes =includes_path, cxxflags =(build_obj.get_cxx_flags()+['-std=gnu++11',]), @@ -785,6 +801,7 @@ def build_prog (bld, build_obj): lib=['pthread','dl', 'z'], use =[build_obj.get_dpdk_target(),'zmq','ibverbs'], source = bp.file_list(top) + debug_file_list, + rpath = [dumy_libs_path], target = build_obj.get_target()) @@ -802,6 +819,12 @@ def post_build(bld): def build(bld): bld.add_pre_fun(pre_build) bld.add_post_fun(post_build); + + zmq_lib_path='external_libs/zmq/' + bld.read_shlib( name='zmq' , paths=[top+zmq_lib_path] ) + ibverbs_lib_path='external_libs/ibverbs/' + bld.read_shlib( name='ibverbs' , paths=[top+ibverbs_lib_path] ) + for obj in build_types: build_type(bld,obj); -- cgit 1.2.3-korg From 1b8f2702752f6e0d2edb96978e493f091b77274f Mon Sep 17 00:00:00 2001 From: Yaroslav Brustinov Date: Sun, 27 Nov 2016 10:47:18 +0200 Subject: building script: add rpath of dumy_libs only if needed Signed-off-by: Yaroslav Brustinov --- linux_dpdk/ws_main.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'linux_dpdk/ws_main.py') diff --git a/linux_dpdk/ws_main.py b/linux_dpdk/ws_main.py index 3d96c750..b89328a9 100755 --- a/linux_dpdk/ws_main.py +++ b/linux_dpdk/ws_main.py @@ -100,6 +100,17 @@ def options(opt): opt.add_option('--publish-commit', '--publish_commit', dest='publish_commit', default=False, action='store', help="Specify commit id for 'publish_both' option (Please make sure it's good!)") +def check_ibverbs_deps(bld): + cmd = '%s %s/external_libs/ibverbs/libibverbs.so' % (bld.env['LDD'][0], top) + ret, out = getstatusoutput(cmd) + if ret or not out: + bld.fatal("Command of checking libraries '%s' failed.\nReturn status: %s\nOutput: %s" % (cmd, ret, out)) + if '=> not found' in out: + dumy_libs_path = os.path.abspath(top + 'scripts/dumy_libs') + print('Adding rpath %s' % dumy_libs_path) + rpath_linkage.append(dumy_libs_path) + + def missing_pkg_msg(fedora, ubuntu): msg = 'not found\n' fedora_install = 'Fedora install:\nsudo yum install %s\n' % fedora @@ -119,6 +130,7 @@ def missing_pkg_msg(fedora, ubuntu): def configure(conf): conf.load('g++') conf.load('gcc') + conf.find_program('ldd') conf.check_cxx(lib = 'z', errmsg = missing_pkg_msg(fedora = 'zlib-devel', ubuntu = 'zlib1g-dev')) @@ -636,6 +648,7 @@ client_external_libs = [ 'texttable-0.8.4', ] +rpath_linkage = [] RELEASE_ = "release" DEBUG_ = "debug" @@ -792,8 +805,6 @@ def build_prog (bld, build_obj): target=build_obj.get_dpdk_target() ); - dumy_libs_path = os.path.abspath(os.path.join(top, 'scripts', 'dumy_libs')) - bld.program(features='cxx cxxprogram', includes =includes_path, cxxflags =(build_obj.get_cxx_flags()+['-std=gnu++11',]), @@ -801,7 +812,7 @@ def build_prog (bld, build_obj): lib=['pthread','dl', 'z'], use =[build_obj.get_dpdk_target(),'zmq','ibverbs'], source = bp.file_list(top) + debug_file_list, - rpath = [dumy_libs_path], + rpath = rpath_linkage, target = build_obj.get_target()) @@ -819,6 +830,7 @@ def post_build(bld): def build(bld): bld.add_pre_fun(pre_build) bld.add_post_fun(post_build); + check_ibverbs_deps(bld) zmq_lib_path='external_libs/zmq/' bld.read_shlib( name='zmq' , paths=[top+zmq_lib_path] ) -- cgit 1.2.3-korg From d9c0afbe77386f359d2ba90f1cdbef65f2dfae94 Mon Sep 17 00:00:00 2001 From: Yaroslav Brustinov Date: Sun, 27 Nov 2016 13:37:03 +0200 Subject: Building script: verify 'LDD' key exists Signed-off-by: Yaroslav Brustinov --- linux_dpdk/ws_main.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'linux_dpdk/ws_main.py') diff --git a/linux_dpdk/ws_main.py b/linux_dpdk/ws_main.py index b89328a9..28a8f4c1 100755 --- a/linux_dpdk/ws_main.py +++ b/linux_dpdk/ws_main.py @@ -101,6 +101,8 @@ def options(opt): def check_ibverbs_deps(bld): + if 'LDD' not in bld.env or not len(bld.env['LDD']): + bld.fatal('Please run configure. Missing key LDD.') cmd = '%s %s/external_libs/ibverbs/libibverbs.so' % (bld.env['LDD'][0], top) ret, out = getstatusoutput(cmd) if ret or not out: -- cgit 1.2.3-korg