Open tsondergaard opened 2 years ago
Further observation - if I build Qt with qt:with_icu=False
then my program works, but it runtime links with my distro zlib. Since it is built with conan zlib it would be really great if it used that.
$ ldd ~/.conan/data/qt/5.15.5/ts/ev-10168/package/33326d73de8429a5b754966b7825dfbe953b4b5e/bin/uic
linux-vdso.so.1 (0x00007ffc207e5000)
libQt5Core.so.5 => /home/ts/.conan/data/qt/5.15.5/ts/ev-10168/package/33326d73de8429a5b754966b7825dfbe953b4b5e/bin/../lib/libQt5Core.so.5 (0x00007f1b81774000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f1b8152d000)
libm.so.6 => /lib64/libm.so.6 (0x00007f1b8144f000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f1b8142f000)
libc.so.6 => /lib64/libc.so.6 (0x00007f1b8122e000)
libz.so.1 => /lib64/libz.so.1 (0x00007f1b81212000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1b81d76000)
Is this a conan issue rather than just a qt recipe issue? It might be useful if Conan provided some way to automate the wrapping of binaries, ie if a packages has a bunch of binaries in bin/ then conan could generate a bin-wrapped/ folder locally and create cmake scripts that refer to the wrappers rather than directly to the executables in the cache. The bin-wrapped/ folder would then contain a bunch of shell scripts that set PATH/LD_LIBRARY_PATH before executing the real executable from the conan cache.
See also https://github.com/conan-io/conan-center-index/pull/8084 for a similar issue. Turns out there is also a conan pull request for shim-support, but it is stale/abandonded: https://github.com/conan-io/conan/pull/7324.
Package and Environment Details
Conan profile
Steps to reproduce
If the qt package is built with
icu:shared=True
which implicitly happens withicu:data_packaging=library
then theuic
andlrelease
tools fail to run because they cannot findlibicudata.so.71
. This can be fixed by running the build in virtualrunenv, but that is a problem in itself as other system provided build tools such as cmake can easily be affected by the virtualrunenv. For instance my project depends on shared versions of lz4 and zlib, which cmake also links as shared libraries on my platform.Ideally the virtualrunenv should only affect the conan-provided build tools such as qt's
uic
andlrelease
. Would it be possible to make the conan generated Qt5*.cmake files override targets such as Qt5::uic and Qt5::lrelease such that they point to wrapper scripts that sourceactivate_run.sh
?Example showing the compilation failure: With example.zip run the following commands:
Continuing from above, but sourcing
activate_run.sh
and then runningninja
to build again works:As mentioned, in my real use case my conanfile also requires
lz4
andzlib
as shared libraries which means that my non-conan provided cmake loads libraries that could potentially break ABI:Logs
The steps below show all the steps, conan install, cmake, ninja, . activate_run.sh, ninja where the build fails before
Click to expand log
``` [ts@spark sandbox]$ mkdir build [ts@spark sandbox]$ cd build/ [ts@spark build]$ time conan install .. -s build_type=Debug Configuration: [settings] arch=x86_64 arch_build=x86_64 build_type=Debug compiler=gcc compiler.libcxx=libstdc++11 compiler.version=12 os=Linux os_build=Linux [options] [build_requires] [env] WARN: fontconfig/2.13.93: requirement freetype/2.12.1 overridden by qt/5.15.5 to freetype/2.11.1 conanfile.txt: Installing package Requirements brotli/1.0.9 from 'conancenter' - Cache bzip2/1.0.8 from 'conancenter' - Cache double-conversion/3.2.0 from 'conancenter' - Cache expat/2.4.8 from 'conancenter' - Cache fontconfig/2.13.93 from 'conancenter' - Cache freetype/2.11.1 from 'conancenter' - Cache icu/71.1 from 'conancenter' - Cache libffi/3.4.2 from 'conancenter' - Cache libiconv/1.16 from 'conancenter' - Cache libjpeg/9d from 'conancenter' - Cache libmysqlclient/8.0.25 from 'conancenter' - Cache libpng/1.6.37 from 'conancenter' - Cache libpq/14.2 from 'conancenter' - Cache libuuid/1.0.3 from 'conancenter' - Cache libxml2/2.9.14 from 'conancenter' - Cache lz4/1.9.3 from 'conancenter' - Cache odbc/2.3.9 from 'conancenter' - Cache opengl/system from 'conancenter' - Cache openssl/1.1.1o from 'conancenter' - Cache pcre2/10.39 from 'conancenter' - Cache qt/5.15.5 from 'conancenter' - Cache sqlite3/3.38.1 from 'conancenter' - Cache wayland/1.20.0 from 'conancenter' - Cache wayland-protocols/1.24 from 'conancenter' - Cache xkbcommon/1.4.1 from 'conancenter' - Cache xorg/system from 'conancenter' - Cache zlib/1.2.12 from 'conancenter' - Cache zstd/1.5.2 from 'conancenter' - Cache Packages brotli/1.0.9:d13c97721d7bdc192ca6529684f2b79beeae8a7c - Cache bzip2/1.0.8:ad18e1e856ff78d73ad6f3c9a214f85abf2d0550 - Cache double-conversion/3.2.0:0d3bb5ed760e15c5a25aef7935f438ad21054b16 - Cache expat/2.4.8:2eb4223757563f932114c3351417cbe8392e690e - Cache fontconfig/2.13.93:127cf5365ae26216554195e16b6b37c9f6f19b2e - Cache freetype/2.11.1:56e097ea75d61915d9669e57839a1be17facbb06 - Cache icu/71.1:1895009083f4b7d4bf2b1b47c478b5d1a3c9f3c9 - Cache libffi/3.4.2:d13c97721d7bdc192ca6529684f2b79beeae8a7c - Cache libiconv/1.16:d13c97721d7bdc192ca6529684f2b79beeae8a7c - Cache libjpeg/9d:d13c97721d7bdc192ca6529684f2b79beeae8a7c - Cache libmysqlclient/8.0.25:62e6741fdb82f96b52623ffc7a7e48d579681326 - Cache libpng/1.6.37:4c328c90f20afba7214fd1730e20f318c27e7964 - Cache libpq/14.2:d13c97721d7bdc192ca6529684f2b79beeae8a7c - Cache libuuid/1.0.3:d13c97721d7bdc192ca6529684f2b79beeae8a7c - Cache libxml2/2.9.14:ea5251febc71a3694bfa09b9c5fd421bcf237034 - Cache lz4/1.9.3:d13c97721d7bdc192ca6529684f2b79beeae8a7c - Cache odbc/2.3.9:1da13109b64fb2b2c9bd954c9b4b26fb43fb19d0 - Cache opengl/system:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 - Cache openssl/1.1.1o:d13c97721d7bdc192ca6529684f2b79beeae8a7c - Cache pcre2/10.39:61657e94fb41f62f4a54e6bbefdc6cfcf2dc949c - Cache qt/5.15.5:275edef002eae2726c3530470e7bf3b209b7f477 - Cache sqlite3/3.38.1:423c3ee42011b37f8a7a6a2c28aa0edfab60ff4d - Cache wayland/1.20.0:b7420412cde532571d175c75165067909f090733 - Cache wayland-protocols/1.24:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 - Cache xkbcommon/1.4.1:29e1ea9d8aaf9cd3def69281221947fcf3e6617f - Cache xorg/system:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 - Cache zlib/1.2.12:d13c97721d7bdc192ca6529684f2b79beeae8a7c - Cache zstd/1.5.2:a323f39846aa3d854d842186765e8538851a7f92 - Cache Installing (downloading, building) binaries... brotli/1.0.9: Already installed! bzip2/1.0.8: Already installed! bzip2/1.0.8: Appending PATH environment variable: /home/ts/.conan/data/bzip2/1.0.8/_/_/package/ad18e1e856ff78d73ad6f3c9a214f85abf2d0550/bin double-conversion/3.2.0: Already installed! expat/2.4.8: Already installed! icu/71.1: Already installed! icu/71.1: Appending PATH environment variable: /home/ts/.conan/data/icu/71.1/_/_/package/1895009083f4b7d4bf2b1b47c478b5d1a3c9f3c9/bin libffi/3.4.2: Already installed! libiconv/1.16: Already installed! libiconv/1.16: Appending PATH environment var: /home/ts/.conan/data/libiconv/1.16/_/_/package/d13c97721d7bdc192ca6529684f2b79beeae8a7c/bin libjpeg/9d: Already installed! libpq/14.2: Already installed! libuuid/1.0.3: Already installed! lz4/1.9.3: Already installed! opengl/system: Already installed! openssl/1.1.1o: Already installed! sqlite3/3.38.1: Already installed! sqlite3/3.38.1: Appending PATH env var with : /home/ts/.conan/data/sqlite3/3.38.1/_/_/package/423c3ee42011b37f8a7a6a2c28aa0edfab60ff4d/bin wayland-protocols/1.24: Already installed! xorg/system: Already installed! zlib/1.2.12: Already installed! zstd/1.5.2: Already installed! libmysqlclient/8.0.25: Already installed! libpng/1.6.37: Already installed! libxml2/2.9.14: Already installed! libxml2/2.9.14: Appending PATH environment variable: /home/ts/.conan/data/libxml2/2.9.14/_/_/package/ea5251febc71a3694bfa09b9c5fd421bcf237034/bin odbc/2.3.9: Already installed! odbc/2.3.9: Appending PATH environment variable: /home/ts/.conan/data/odbc/2.3.9/_/_/package/1da13109b64fb2b2c9bd954c9b4b26fb43fb19d0/bin pcre2/10.39: Already installed! pcre2/10.39: Appending PATH environment variable: /home/ts/.conan/data/pcre2/10.39/_/_/package/61657e94fb41f62f4a54e6bbefdc6cfcf2dc949c/bin freetype/2.11.1: Already installed! wayland/1.20.0: Already installed! wayland/1.20.0: Appending PATH environment variable: /home/ts/.conan/data/wayland/1.20.0/_/_/package/b7420412cde532571d175c75165067909f090733/bin fontconfig/2.13.93: Already installed! fontconfig/2.13.93: Creating FONTCONFIG_FILE environment variable: /home/ts/.conan/data/fontconfig/2.13.93/_/_/package/127cf5365ae26216554195e16b6b37c9f6f19b2e/bin/etc/fonts/fonts.conf fontconfig/2.13.93: Creating FONTCONFIG_PATH environment variable: /home/ts/.conan/data/fontconfig/2.13.93/_/_/package/127cf5365ae26216554195e16b6b37c9f6f19b2e/bin/etc/fonts xkbcommon/1.4.1: Already installed! xkbcommon/1.4.1: Appending PATH environment variable: /home/ts/.conan/data/xkbcommon/1.4.1/_/_/package/29e1ea9d8aaf9cd3def69281221947fcf3e6617f/bin qt/5.15.5: Already installed! conanfile.txt: Generator txt created conanbuildinfo.txt conanfile.txt: WARN: Using the new toolchains and generators without specifying a build profile (e.g: -pr:b=default) is discouraged and might cause failures and unexpected behavior conanfile.txt: Generator 'CMakeToolchain' calling 'generate()' conanfile.txt: Generator virtualrunenv created activate_run.ps1 conanfile.txt: Generator virtualrunenv created deactivate_run.ps1 conanfile.txt: Generator virtualrunenv created environment_run.ps1.env conanfile.txt: Generator virtualrunenv created activate_run.sh conanfile.txt: Generator virtualrunenv created deactivate_run.sh conanfile.txt: Generator virtualrunenv created environment_run.sh.env conanfile.txt: WARN: Using the new toolchains and generators without specifying a build profile (e.g: -pr:b=default) is discouraged and might cause failures and unexpected behavior conanfile.txt: Generator 'CMakeDeps' calling 'generate()' conanfile.txt: Aggregating env generators conanfile.txt: Generated conaninfo.txt conanfile.txt: Generated graphinfo real 0m7,671s user 0m5,066s sys 0m2,583s [ts@spark build]$ cmake -GNinja -DCMAKE_TOOLCHAIN_FILE=$PWD/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Debug .. -- Using Conan toolchain: /home/ts/src/sandbox/build/conan_toolchain.cmake -- The CXX compiler identification is GNU 12.1.1 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/lib64/ccache/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Conan: Component target declared 'Qt5::Core' -- Conan: Component target declared 'Qt5::Gui' -- Conan: Component target declared 'Qt5::EventDispatcherSupport' -- Conan: Component target declared 'Qt5::FontDatabaseSupport' -- Conan: Component target declared 'Qt5::ThemeSupport' -- Conan: Component target declared 'Qt5::AccessibilitySupport' -- Conan: Component target declared 'Qt5::ServiceSupport' -- Conan: Component target declared 'Qt5::EdidSupport' -- Conan: Component target declared 'Qt5::XkbCommonSupport' -- Conan: Component target declared 'Qt5::XcbQpa' -- Conan: Component target declared 'Qt5::QXcbIntegrationPlugin' -- Conan: Component target declared 'Qt5::QSQLiteDriverPlugin' -- Conan: Component target declared 'Qt5::QPSQLDriverPlugin' -- Conan: Component target declared 'Qt5::QMySQLDriverPlugin' -- Conan: Component target declared 'Qt5::QODBCDriverPlugin' -- Conan: Component target declared 'Qt5::Network' -- Conan: Component target declared 'Qt5::Sql' -- Conan: Component target declared 'Qt5::Test' -- Conan: Component target declared 'Qt5::Widgets' -- Conan: Component target declared 'Qt5::PrintSupport' -- Conan: Component target declared 'Qt5::OpenGL' -- Conan: Component target declared 'Qt5::OpenGLExtensions' -- Conan: Component target declared 'Qt5::Concurrent' -- Conan: Component target declared 'Qt5::Xml' -- Conan: Target declared 'qt::qt' -- Conan: Target declared 'ZLIB::ZLIB' -- Conan: Component target declared 'PCRE2::8BIT' -- Conan: Component target declared 'PCRE2::POSIX' -- Conan: Component target declared 'PCRE2::16BIT' -- Conan: Component target declared 'PCRE2::32BIT' -- Conan: Target declared 'pcre2::pcre2' -- Conan: Target declared 'BZip2::BZip2' -- Conan: Including build module from '/home/ts/.conan/data/bzip2/1.0.8/_/_/package/ad18e1e856ff78d73ad6f3c9a214f85abf2d0550/lib/cmake/conan-official-bzip2-variables.cmake' -- Conan: Target declared 'double-conversion::double-conversion' -- Conan: Component target declared 'ICU::data' -- Conan: Component target declared 'ICU::dt' -- Conan: Component target declared 'ICU::uc' -- Conan: Component target declared 'ICU::i18n' -- Conan: Component target declared 'ICU::in' -- Conan: Component target declared 'ICU::io' -- Conan: Component target declared 'ICU::tu' -- Conan: Component target declared 'ICU::test' -- Conan: Target declared 'icu::icu' -- Conan: Component target declared 'zstd::libzstd_static' -- Conan: Target declared 'freetype' -- Conan: Target declared 'PNG::PNG' -- Conan: Component target declared 'brotli::brotlicommon' -- Conan: Component target declared 'brotli::brotlidec' -- Conan: Component target declared 'brotli::brotlienc' -- Conan: Target declared 'brotli::brotli' -- Conan: Including build module from '/home/ts/.conan/data/freetype/2.11.1/_/_/package/56e097ea75d61915d9669e57839a1be17facbb06/lib/cmake/conan-official-freetype-variables.cmake' -- Conan: Target declared 'Fontconfig::Fontconfig' -- Conan: Target declared 'expat::expat' -- Conan: Target declared 'libuuid::libuuid' -- Conan: Component target declared 'xorg::x11' -- Conan: Component target declared 'xorg::x11-xcb' -- Conan: Component target declared 'xorg::fontenc' -- Conan: Component target declared 'xorg::ice' -- Conan: Component target declared 'xorg::xau' -- Conan: Component target declared 'xorg::xaw7' -- Conan: Component target declared 'xorg::xcomposite' -- Conan: Component target declared 'xorg::xcursor' -- Conan: Component target declared 'xorg::xdamage' -- Conan: Component target declared 'xorg::xdmcp' -- Conan: Component target declared 'xorg::xext' -- Conan: Component target declared 'xorg::xfixes' -- Conan: Component target declared 'xorg::xi' -- Conan: Component target declared 'xorg::xinerama' -- Conan: Component target declared 'xorg::xkbfile' -- Conan: Component target declared 'xorg::xmu' -- Conan: Component target declared 'xorg::xmuu' -- Conan: Component target declared 'xorg::xpm' -- Conan: Component target declared 'xorg::xrandr' -- Conan: Component target declared 'xorg::xrender' -- Conan: Component target declared 'xorg::xres' -- Conan: Component target declared 'xorg::xscrnsaver' -- Conan: Component target declared 'xorg::xt' -- Conan: Component target declared 'xorg::xtst' -- Conan: Component target declared 'xorg::xv' -- Conan: Component target declared 'xorg::xvmc' -- Conan: Component target declared 'xorg::xxf86vm' -- Conan: Component target declared 'xorg::xtrans' -- Conan: Component target declared 'xorg::xcb-xkb' -- Conan: Component target declared 'xorg::xcb-icccm' -- Conan: Component target declared 'xorg::xcb-image' -- Conan: Component target declared 'xorg::xcb-keysyms' -- Conan: Component target declared 'xorg::xcb-randr' -- Conan: Component target declared 'xorg::xcb-render' -- Conan: Component target declared 'xorg::xcb-renderutil' -- Conan: Component target declared 'xorg::xcb-shape' -- Conan: Component target declared 'xorg::xcb-shm' -- Conan: Component target declared 'xorg::xcb-sync' -- Conan: Component target declared 'xorg::xcb-xfixes' -- Conan: Component target declared 'xorg::xcb-xinerama' -- Conan: Component target declared 'xorg::xcb' -- Conan: Component target declared 'xorg::xkeyboard-config' -- Conan: Component target declared 'xorg::xcb-atom' -- Conan: Component target declared 'xorg::xcb-aux' -- Conan: Component target declared 'xorg::xcb-event' -- Conan: Component target declared 'xorg::xcb-util' -- Conan: Component target declared 'xorg::xcb-dri3' -- Conan: Component target declared 'xorg::uuid' -- Conan: Component target declared 'xorg::sm' -- Conan: Target declared 'xorg::xorg' -- Conan: Component target declared 'xkbcommon::libxkbcommon' -- Conan: Component target declared 'xkbcommon::libxkbcommon-x11' -- Conan: Component target declared 'xkbcommon::libxkbregistry' -- Conan: Component target declared 'xkbcommon::xkbcli-interactive-wayland' -- Conan: Target declared 'xkbcommon::xkbcommon' -- Conan: Target declared 'LibXml2::LibXml2' -- Conan: Target declared 'Iconv::Iconv' -- Conan: Including build module from '/home/ts/.conan/data/libxml2/2.9.14/_/_/package/ea5251febc71a3694bfa09b9c5fd421bcf237034/lib/cmake/conan-official-libxml2-variables.cmake' -- Conan: Component target declared 'wayland::wayland-scanner' -- Conan: Component target declared 'wayland::wayland-server' -- Conan: Component target declared 'wayland::wayland-client' -- Conan: Component target declared 'wayland::wayland-cursor' -- Conan: Component target declared 'wayland::wayland-egl' -- Conan: Component target declared 'wayland::wayland-egl-backend' -- Conan: Target declared 'wayland::wayland' -- Conan: Target declared 'libffi::libffi' -- Conan: Target declared 'wayland-protocols::wayland-protocols' -- Conan: Target declared 'opengl::opengl' -- Conan: Target declared 'JPEG::JPEG' -- Conan: Component target declared 'SQLite::SQLite3' -- Conan: Component target declared 'libpq::pgcommon' -- Conan: Component target declared 'libpq::pgport' -- Conan: Component target declared 'libpq::pq' -- Conan: Target declared 'PostgreSQL::PostgreSQL' -- Conan: Target declared 'libmysqlclient::libmysqlclient' -- Conan: Component target declared 'OpenSSL::Crypto' -- Conan: Component target declared 'OpenSSL::SSL' -- Conan: Target declared 'openssl::openssl' -- Conan: Including build module from '/home/ts/.conan/data/openssl/1.1.1o/_/_/package/d13c97721d7bdc192ca6529684f2b79beeae8a7c/lib/cmake/conan-official-openssl-variables.cmake' -- Conan: Target declared 'lz4::lz4' -- Conan: Component target declared 'odbc::odbccr' -- Conan: Component target declared 'odbc::odbcltdl' -- Conan: Component target declared 'odbc::_odbc' -- Conan: Component target declared 'odbc::odbcinst' -- Conan: Target declared 'ODBC::ODBC' -- Conan: Including build module from '/home/ts/.conan/data/qt/5.15.5/_/_/package/275edef002eae2726c3530470e7bf3b209b7f477/lib/cmake/Qt5Gui/conan_qt_qt5_guiprivate.cmake' -- Conan: Including build module from '/home/ts/.conan/data/qt/5.15.5/_/_/package/275edef002eae2726c3530470e7bf3b209b7f477/lib/cmake/Qt5Widgets/conan_qt_qt5_widgetsprivate.cmake' -- Conan: Including build module from '/home/ts/.conan/data/qt/5.15.5/_/_/package/275edef002eae2726c3530470e7bf3b209b7f477/lib/cmake/Qt5Core/conan_qt_core_extras.cmake' -- Conan: Including build module from '/home/ts/.conan/data/qt/5.15.5/_/_/package/275edef002eae2726c3530470e7bf3b209b7f477/lib/cmake/Qt5Core/conan_qt_qt5_coreprivate.cmake' -- Conan: Including build module from '/home/ts/.conan/data/qt/5.15.5/_/_/package/275edef002eae2726c3530470e7bf3b209b7f477/lib/cmake/Qt5Core/Qt5CoreMacros.cmake' -- Conan: Including build module from '/home/ts/.conan/data/qt/5.15.5/_/_/package/275edef002eae2726c3530470e7bf3b209b7f477/lib/cmake/Qt5Widgets/Qt5WidgetsMacros.cmake' -- Configuring done -- Generating done -- Build files have been written to: /home/ts/src/sandbox/build [ts@spark build]$ ninja [1/4] Automatic MOC and UIC for target sandbox FAILED: sandbox_autogen/timestamp sandbox_autogen/mocs_compilation.cpp /home/ts/src/sandbox/build/sandbox_autogen/timestamp /home/ts/src/sandbox/build/sandbox_autogen/mocs_compilation.cpp cd /home/ts/src/sandbox/build && /usr/bin/cmake -E cmake_autogen /home/ts/src/sandbox/build/CMakeFiles/sandbox_autogen.dir/AutogenInfo.json Debug && /usr/bin/cmake -E touch /home/ts/src/sandbox/build/sandbox_autogen/timestamp && /usr/bin/cmake -E cmake_transform_depfile Ninja gccdepfile /home/ts/src/sandbox /home/ts/src/sandbox /home/ts/src/sandbox/build /home/ts/src/sandbox/build /home/ts/src/sandbox/build/sandbox_autogen/deps /home/ts/src/sandbox/build/CMakeFiles/d/5865e896e57cbf15cefe6ef2fe5d87b8d142c3eae40e087dff777f23c269218a.d AutoUic subprocess error ------------------------ The uic process failed to compile "SRC:/MyWidget.ui" into "SRC:/build/sandbox_autogen/include/ui_MyWidget.h" included by "SRC:/sandbox.cc" Command ------- /home/ts/.conan/data/qt/5.15.5/_/_/package/275edef002eae2726c3530470e7bf3b209b7f477/lib/cmake/Qt5Core/../../../bin/uic -o /home/ts/src/sandbox/build/sandbox_autogen/include/ui_MyWidget.h /home/ts/src/sandbox/MyWidget.ui Output ------ /home/ts/.conan/data/qt/5.15.5/_/_/package/275edef002eae2726c3530470e7bf3b209b7f477/lib/cmake/Qt5Core/../../../bin/uic: error while loading shared libraries: libicudata.so.71: cannot open shared object file: No such file or directory ninja: build stopped: subcommand failed. [ts@spark build]$ . activate_run.sh (conanrunenv) [ts@spark build]$ ninja [4/4] Linking CXX executable sandbox (conanrunenv) [ts@spark build]$ ```