Alexander Pyhalov
2018-12-05 db2ae300899858fdda044a86f0b84920de6b391e
qt5: avoid using relative runpaths
4 files modified
49 ■■■■ changed files
components/library/qt5/Makefile 27 ●●●●● patch | view | raw | blame | history
components/library/qt5/manifests/sample-manifest.p5m 6 ●●●● patch | view | raw | blame | history
components/library/qt5/qt5.p5m 3 ●●●●● patch | view | raw | blame | history
tools/userland-mangler 13 ●●●●● patch | view | raw | blame | history
components/library/qt5/Makefile
@@ -18,7 +18,7 @@
COMPONENT_NAME=           qt
COMPONENT_VERSION=        5.8.0
COMPONENT_REVISION=       4
COMPONENT_REVISION=       5
COMPONENT_VERSION_MJR=    5.8
COMPONENT_FMRI=           library/qt5
COMPONENT_PROJECT_URL=    https://www.qt.io/
@@ -73,32 +73,22 @@
COMPONENT_INSTALL_ENV+=    INSTALL_ROOT=$(PROTO_DIR)
# Set relative runpath to sql plugins
# Set runpaths to sql/egl plugins
QT_LIBDIR    =$(QT_PREFIX)/lib/$(QT_ARCHSUBDIR.$(BITS))
QT_SQLDIR    =$(QT_PREFIX)/plugins/$(QT_ARCHSUBDIR.$(BITS))/sqldrivers
QT_QTSQLRPATH=$(shell realpath -m --relative-to=$(QT_SQLDIR) $(QT_LIBDIR))
QT_MYSQLRPATH=$(shell realpath -m --relative-to=$(QT_SQLDIR) $(MYSQL_LIBDIR.$(BITS)))
QT_PGSQLRPATH=$(shell realpath -m --relative-to=$(QT_SQLDIR) $(PG_LIBDIR.$(BITS)))
# Set relative runpath to eql plugins
QT_XORGDIR   =$(QT_PREFIX)/lib/xorg/$(QT_ARCHSUBDIR.$(BITS))
QT_EGLDIR    =$(QT_PREFIX)/plugins/$(QT_ARCHSUBDIR.$(BITS))/egldeviceintegrations
QT_QTEGLRPATH=$(shell realpath -m --relative-to=$(QT_EGLDIR) $(QT_LIBDIR))
QT_EGLSORPATH=$(shell realpath -m --relative-to=$(QT_EGLDIR) $(QT_XORGDIR))
# Set relative runpath to eql libraries
QT_DRMSORPATH=$(shell realpath -m --relative-to=$(QT_LIBDIR) $(QT_XORGDIR))
GCC_LIBDIR=$(GCC_ROOT)/lib/$(ARCHLIBSUBDIR)
QT_XORGDIR   =$(QT_PREFIX)/lib/xorg/$(QT_ARCHSUBDIR.$(BITS))
COMPONENT_POST_INSTALL_ACTION= ( \
/usr/bin/elfedit -e 'dyn:runpath "$(GCC_LIBDIR):$$ORIGIN/$(QT_QTSQLRPATH):$$ORIGIN/$(QT_MYSQLRPATH)"' \
/usr/bin/elfedit -e 'dyn:runpath "$(GCC_LIBDIR):$(QT_LIBDIR):$(MYSQL_LIBDIR.$(BITS))"' \
    $(PROTO_DIR)$(QT_SQLDIR)/libqsqlmysql.so; \
/usr/bin/elfedit -e 'dyn:runpath "$(GCC_LIBDIR):$$ORIGIN/$(QT_QTSQLRPATH):$$ORIGIN/$(QT_PGSQLRPATH)"' \
/usr/bin/elfedit -e 'dyn:runpath "$(GCC_LIBDIR):$(QT_LIBDIR):$(PG_LIBDIR.$(BITS))"' \
    $(PROTO_DIR)$(QT_SQLDIR)/libqsqlpsql.so; \
/usr/bin/elfedit -e 'dyn:runpath "$(GCC_LIBDIR):$$ORIGIN/$(QT_QTEGLRPATH):$$ORIGIN/$(QT_EGLSORPATH)"' \
/usr/bin/elfedit -e 'dyn:runpath "$(GCC_LIBDIR):$(QT_LIBDIR):$(QT_XORGDIR)"' \
    $(PROTO_DIR)$(QT_EGLDIR)/libqeglfs-kms-integration.so; \
/usr/bin/elfedit -e 'dyn:runpath "$(GCC_LIBDIR):$$ORIGIN/$(QT_QTEGLRPATH):$$ORIGIN/$(QT_EGLSORPATH)"' \
/usr/bin/elfedit -e 'dyn:runpath "$(GCC_LIBDIR):$(QT_LIBDIR):$(QT_XORGDIR)"' \
    $(PROTO_DIR)$(QT_EGLDIR)/libqeglfs-kms-egldevice-integration.so; \
/usr/bin/elfedit -e 'dyn:runpath "$(GCC_LIBDIR):$$ORIGIN:$$ORIGIN/$(QT_DRMSORPATH)"' \
/usr/bin/elfedit -e 'dyn:runpath "$(GCC_LIBDIR):$(QT_LIBDIR)"' \
    $(PROTO_DIR)$(QT_LIBDIR)/libQt5EglFsKmsSupport.so.$(COMPONENT_VERSION); \
)
@@ -133,6 +123,7 @@
REQUIRED_PACKAGES += library/freetds
REQUIRED_PACKAGES += library/glib2
REQUIRED_PACKAGES += library/icu
REQUIRED_PACKAGES += library/libwebp
REQUIRED_PACKAGES += library/print/cups-libs
REQUIRED_PACKAGES += library/sdl2
REQUIRED_PACKAGES += library/zlib
components/library/qt5/manifests/sample-manifest.p5m
@@ -10,7 +10,7 @@
#
#
# Copyright 2017 <contributor>
# Copyright 2018 <contributor>
#
set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
@@ -6394,6 +6394,7 @@
file path=usr/lib/qt/5.8/lib/$(MACH64)/cmake/Qt5Designer/Qt5Designer_QQuickWidgetPlugin.cmake
file path=usr/lib/qt/5.8/lib/$(MACH64)/cmake/Qt5Gamepad/Qt5GamepadConfig.cmake
file path=usr/lib/qt/5.8/lib/$(MACH64)/cmake/Qt5Gamepad/Qt5GamepadConfigVersion.cmake
file path=usr/lib/qt/5.8/lib/$(MACH64)/cmake/Qt5Gamepad/Qt5Gamepad_QSdl2GamepadBackendPlugin.cmake
file path=usr/lib/qt/5.8/lib/$(MACH64)/cmake/Qt5Gui/Qt5GuiConfig.cmake
file path=usr/lib/qt/5.8/lib/$(MACH64)/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake
file path=usr/lib/qt/5.8/lib/$(MACH64)/cmake/Qt5Gui/Qt5GuiConfigVersion.cmake
@@ -7139,6 +7140,7 @@
file path=usr/lib/qt/5.8/lib/cmake/Qt5Designer/Qt5Designer_QQuickWidgetPlugin.cmake
file path=usr/lib/qt/5.8/lib/cmake/Qt5Gamepad/Qt5GamepadConfig.cmake
file path=usr/lib/qt/5.8/lib/cmake/Qt5Gamepad/Qt5GamepadConfigVersion.cmake
file path=usr/lib/qt/5.8/lib/cmake/Qt5Gamepad/Qt5Gamepad_QSdl2GamepadBackendPlugin.cmake
file path=usr/lib/qt/5.8/lib/cmake/Qt5Gui/Qt5GuiConfig.cmake
file path=usr/lib/qt/5.8/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake
file path=usr/lib/qt/5.8/lib/cmake/Qt5Gui/Qt5GuiConfigVersion.cmake
@@ -8498,6 +8500,7 @@
file path=usr/lib/qt/5.8/plugins/$(MACH64)/egldeviceintegrations/libqeglfs-kms-egldevice-integration.so
file path=usr/lib/qt/5.8/plugins/$(MACH64)/egldeviceintegrations/libqeglfs-kms-integration.so
file path=usr/lib/qt/5.8/plugins/$(MACH64)/egldeviceintegrations/libqeglfs-x11-integration.so
file path=usr/lib/qt/5.8/plugins/$(MACH64)/gamepads/libsdl2gamepad.so
file path=usr/lib/qt/5.8/plugins/$(MACH64)/generic/libqtuiotouchplugin.so
file path=usr/lib/qt/5.8/plugins/$(MACH64)/geoservices/libqtgeoservices_esri.so
file path=usr/lib/qt/5.8/plugins/$(MACH64)/geoservices/libqtgeoservices_mapbox.so
@@ -8559,6 +8562,7 @@
file path=usr/lib/qt/5.8/plugins/egldeviceintegrations/libqeglfs-kms-egldevice-integration.so
file path=usr/lib/qt/5.8/plugins/egldeviceintegrations/libqeglfs-kms-integration.so
file path=usr/lib/qt/5.8/plugins/egldeviceintegrations/libqeglfs-x11-integration.so
file path=usr/lib/qt/5.8/plugins/gamepads/libsdl2gamepad.so
file path=usr/lib/qt/5.8/plugins/generic/libqtuiotouchplugin.so
file path=usr/lib/qt/5.8/plugins/geoservices/libqtgeoservices_esri.so
file path=usr/lib/qt/5.8/plugins/geoservices/libqtgeoservices_mapbox.so
components/library/qt5/qt5.p5m
@@ -22,9 +22,6 @@
license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
# Ignore pkglint error with runpath including $ORIGIN
<transform file path=.*.so.* -> default pkg.linted.userland.action001.3 true >
file path=usr/lib/qt/5.8/bin/$(MACH64)/assistant
file path=usr/lib/qt/5.8/bin/$(MACH64)/canbusutil
file path=usr/lib/qt/5.8/bin/$(MACH64)/designer
tools/userland-mangler
@@ -207,6 +207,7 @@
    #
    # Strip any runtime linker default search path elements from the file
    # and replace relative paths with absolute paths
    #
    ELFEDIT = '/usr/bin/elfedit'
@@ -238,7 +239,17 @@
            for dir in original_dirs:
                if dir not in rtld_default_dirs:
                    keep_dirs.append(dir)
                    if dir.startswith('$ORIGIN'):
                        path = action.attrs['path']
                        dirname = os.path.dirname(path)
                        if dirname[0] != '/':
                            dirname = '/' + dirname
                        corrected_dir = dir.replace('$ORIGIN', dirname)
                        corrected_dir = os.path.realpath(corrected_dir)
                        matched_dirs.append(dir)
                        keep_dirs.append(corrected_dir)
                                    else:
                        keep_dirs.append(dir)
                else:
                    matched_dirs.append(dir)