From: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
To: Leon Romanovsky <leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
ewg-ZwoEplunGu1OwGhvXhtEPSCwEArCW2h5@public.gmane.org
Subject: Re: OFED-4.8, rdma-core, and library paths
Date: Wed, 8 Feb 2017 11:18:20 -0700 [thread overview]
Message-ID: <20170208181820.GA31664@obsidianresearch.com> (raw)
In-Reply-To: <20170208180104.GG6005-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
On Wed, Feb 08, 2017 at 08:01:04PM +0200, Leon Romanovsky wrote:
> On Wed, Feb 08, 2017 at 10:33:35AM -0700, Jason Gunthorpe wrote:
> Thanks for the help, my final version which works correctly for build in place, install from
> sources and packages for centos6/centos6 is below:
Looks good
> # Create a special provider with exported symbols in it
> function(rdma_shared_provider DEST VERSION_SCRIPT SOVERSION VERSION)
> # Installed driver file
> file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${DEST}.driver" "driver ${DEST}\n")
> install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${DEST}.driver" DESTINATION "${CONFIG_DIR}")
>
> # Uninstalled driver file
> file(MAKE_DIRECTORY "${BUILD_ETC}/libibverbs.d/")
> file(WRITE "${BUILD_ETC}/libibverbs.d/${DEST}.driver" "driver ${BUILD_LIB}/lib${DEST}\n")
>
> # Create a static provider library
> if (ENABLE_STATIC)
> add_library(${DEST} STATIC ${ARGN})
> set_target_properties(${DEST} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${BUILD_LIB}")
> install(TARGETS ${DEST} DESTINATION "${CMAKE_INSTALL_LIBDIR}")
>
> list(APPEND RDMA_STATIC_LIBS ${DEST}-rdmav2 ${DEST})
> set(RDMA_STATIC_LIBS "${RDMA_STATIC_LIBS}" CACHE INTERNAL "")
> endif()
>
> # Create the plugin shared library
> add_library(${DEST} SHARED ${ARGN})
> # Even though these are modules we still want to use Wl,--no-undefined
> set_target_properties(${DEST} PROPERTIES LINK_FLAGS ${CMAKE_SHARED_LINKER_FLAGS})
> rdma_set_library_map(${DEST} ${VERSION_SCRIPT})
>
> target_link_libraries(${DEST} LINK_PRIVATE ${COMMON_LIBS_PIC})
> target_link_libraries(${DEST} LINK_PRIVATE ibverbs)
> target_link_libraries(${DEST} LINK_PRIVATE ${CMAKE_THREAD_LIBS_INIT})
> set_target_properties(${DEST} PROPERTIES
> SOVERSION ${SOVERSION}
> VERSION ${VERSION}
> LIBRARY_OUTPUT_DIRECTORY "${BUILD_LIB}")
> add_custom_target(share_link ALL DEPENDS "${DEST}" COMMAND ${CMAKE_COMMAND} -E create_symlink "lib${DEST}.so.${VERSION}"
> "${BUILD_LIB}/lib${DEST}-rdmav2.so")
> add_dependencies(share_link ${DEST})
Except this really shouldn't be a rule. The non-rule method is used
everywhere else (eg man pages), so it must work here, it doesn't make
sense that ninja vs make would be any different. When you get
everything working put it back to execute_process..
> install(TARGETS ${DEST} DESTINATION "${CMAKE_INSTALL_LIBDIR}")
> execute_process(COMMAND python ${CMAKE_SOURCE_DIR}/buildlib/relpath
> ${CMAKE_INSTALL_LIBDIR}/lib${DEST}.so.${VERSION} ${VERBS_PROVIDER_DIR}
> OUTPUT_VARIABLE DEST_LINK_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
> rdma_install_symlink("${DEST_LINK_PATH}" "${VERBS_PROVIDER_DIR}/lib${DEST}-rdmav2.so")
> and buildlib/relpath
> import os
> import sys
>
> print(os.path.relpath(sys.argv[1], sys.argv[2]))
Sure, yes, doing the escaping right would probably be quite hard, that is the
usual nightmare with shell stuff unfortunately.
> But I still have issues with DEB package.
> It creates absolute (and wrong) symlink instead of relative one.
Hmm. Can you update your github? I'll look for you.
> -rw-r--r-- 1 leonro leonro 46K Feb 8 17:13 libmlx4-rdmav2.so
> lrwxrwxrwx 1 leonro leonro 65 Feb 8 17:13 libmlx5-rdmav2.so -> /home/leonro/src/build-deb/lib/x86_64-linux-gnu/libmlx5.so.1.0.13
Most likely this means that DEST_LINK_PATH passed to
rdma_install_symlink is not correct. Which suggests python relpath is
not working..
relpath in python is done textually, from these args:
> ${CMAKE_INSTALL_LIBDIR}/lib${DEST}.so.${VERSION} ${VERBS_PROVIDER_DIR}
But
set(VERBS_PROVIDER_DIR "${CMAKE_INSTALL_FULL_LIBDIR}/libibverbs"
So if CMAKE_INSTALL_FULL_LIBDIR != CMAKE_INSTALL_LIBDIR (which depends
on how the distro build script configures cmake) then it will fail.
Switch to:
${CMAKE_INSTALL_FULL_LIBDIR}/lib${DEST}.so.${VERSION} ${VERBS_PROVIDER_DIR}
Jason
_______________________________________________
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/mailman/listinfo/ewg
next prev parent reply other threads:[~2017-02-08 18:18 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-07 15:07 OFED-4.8, rdma-core, and library paths Steve Wise
2017-02-07 14:18 ` Vladimir Sokolovsky
[not found] ` <5899D735.3060503-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2017-02-07 15:37 ` Steve Wise
2017-02-07 17:11 ` Jason Gunthorpe
[not found] ` <20170207171145.GB1077-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-02-07 17:19 ` Steve Wise
2017-02-07 17:27 ` Jason Gunthorpe
[not found] ` <20170207172752.GA12315-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-02-07 18:06 ` Leon Romanovsky
[not found] ` <20170207180642.GQ6005-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-02-07 18:18 ` Jason Gunthorpe
[not found] ` <20170207181814.GA13368-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-02-07 18:35 ` Leon Romanovsky
[not found] ` <20170207183538.GT6005-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-02-07 18:42 ` Jason Gunthorpe
[not found] ` <20170207184206.GA14102-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-02-07 19:47 ` Leon Romanovsky
[not found] ` <20170207194759.GU6005-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-02-07 20:14 ` Leon Romanovsky
[not found] ` <20170207201428.GV6005-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-02-07 20:59 ` Jason Gunthorpe
[not found] ` <20170207205930.GA28922-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-02-08 6:37 ` Leon Romanovsky
[not found] ` <20170208063758.GZ6005-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-02-08 8:09 ` Leon Romanovsky
2017-02-08 17:33 ` Jason Gunthorpe
[not found] ` <20170208173335.GB30720-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-02-08 18:01 ` Leon Romanovsky
[not found] ` <20170208180104.GG6005-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-02-08 18:18 ` Jason Gunthorpe [this message]
[not found] ` <20170208181820.GA31664-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-02-08 18:54 ` Leon Romanovsky
[not found] ` <20170208185446.GH6005-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-02-08 20:56 ` Jason Gunthorpe
[not found] ` <20170208205622.GA32427-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-02-09 5:31 ` Leon Romanovsky
2017-02-09 9:53 ` Benjamin Drung
[not found] ` <1486634006.3632.5.camel-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2017-02-09 12:32 ` Leon Romanovsky
2017-02-08 19:39 ` Leon Romanovsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170208181820.GA31664@obsidianresearch.com \
--to=jgunthorpe-epgobjl8dl3ta4ec/59zmfatqe2ktcn/@public.gmane.org \
--cc=ewg-ZwoEplunGu1OwGhvXhtEPSCwEArCW2h5@public.gmane.org \
--cc=leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox