docker_build_linux.sh 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #!/bin/bash
  2. #
  3. # Copyright (c) Contributors to the Open 3D Engine Project.
  4. # For complete copyright and license terms please see the LICENSE at the root of this distribution.
  5. #
  6. # SPDX-License-Identifier: Apache-2.0 OR MIT
  7. #
  8. #
  9. BASE_ROOT=/data/workspace
  10. PACKAGE_BASE=${BASE_ROOT}/build
  11. DEP_PYTHON_BASE=${BASE_ROOT}/${PYTHON_FOLDER_NAME}
  12. DEP_QT_BASE=${BASE_ROOT}/${QT_FOLDER_NAME}
  13. echo "Using Python at ${DEP_PYTHON_BASE}"
  14. echo "Using Qt at ${DEP_QT_BASE}"
  15. # Get the python executable from the package dependency
  16. LOCAL_PYTHON3_BIN=${DEP_PYTHON_BASE}/python/bin/python3
  17. if [ ! -f $LOCAL_PYTHON3_BIN ]
  18. then
  19. echo "Required local 3P python not detected at ${LOCAL_PYTHON3_BIN}"
  20. exit 1
  21. fi
  22. # Setup the local QT Paths
  23. # Get the qt package's qmake location
  24. LOCAL_3P_QTBUILD_PATH=${DEP_QT_BASE}/qt
  25. LOCAL_3P_QTBUILD_QMAKE_PATH=`readlink -f $LOCAL_3P_QTBUILD_PATH/bin/qmake`
  26. LOCAL_3P_QTBUILD_LIB_PATH=`readlink -f $LOCAL_3P_QTBUILD_PATH/lib`
  27. if [ ! -f "$LOCAL_3P_QTBUILD_QMAKE_PATH" ]
  28. then
  29. echo "Missing 3P dependency of Qt ${LOCAL_3P_QTBUILD_PATH}"
  30. echo
  31. exit 1
  32. fi
  33. echo Sym-linking python
  34. pushd ${BASE_ROOT}/build
  35. ln -s ${DEP_PYTHON_BASE}/python python
  36. popd
  37. echo Building source
  38. pushd ${BASE_ROOT}/src
  39. LD_LIBRARY_PATH=$LOCAL_3P_QTBUILD_LIB_PATH/
  40. export LD_LIBRARY_PATH
  41. # Build shiboken2 library first since it is
  42. echo "$LOCAL_PYTHON3_BIN setup.py install --qmake=$LOCAL_3P_QTBUILD_QMAKE_PATH --build-type=shiboken2 --limited-api=yes --skip-modules=Qml,Quick,Positioning,Location,RemoteObjects,Scxml,TextToSpeech,3DCore,3DRender,3DInput,3DLogic,3DAnimation,3DExtras,Multimedia,MultimediaWidgets,AxContainer"
  43. $LOCAL_PYTHON3_BIN setup.py install --qmake=$LOCAL_3P_QTBUILD_QMAKE_PATH --build-type=shiboken2 --limited-api=yes --skip-modules=Qml,Quick,QuickWidgets,Positioning,Location,RemoteObjects,Scxml,TextToSpeech,3DCore,3DRender,3DInput,3DLogic,3DAnimation,3DExtras,Multimedia,MultimediaWidgets,AxContainer
  44. if [ $? -ne 0 ]
  45. then
  46. echo "Error building shiobken2 package"
  47. exit 1
  48. fi
  49. echo "$LOCAL_PYTHON3_BIN setup.py install --qmake=$LOCAL_3P_QTBUILD_QMAKE_PATH --build-type=pyside2 --no-examples --skip-docs --standalone --limited-api=yes --skip-modules=Qml,Quick,QtQuickControls2,Positioning,Location,RemoteObjects,Scxml,TextToSpeech,3DCore,3DRender,3DInput,3DLogic,3DAnimation,3DExtras,Multimedia,MultimediaWidgets,AxContainer" --shiboken-config-dir=${BASE_ROOT}/src/pyside3a_install/py3.10-qt5.15.1-64bit-release/lib/cmake/Shiboken2-5.15.2.
  50. $LOCAL_PYTHON3_BIN setup.py install --qmake=$LOCAL_3P_QTBUILD_QMAKE_PATH --build-type=pyside2 --no-examples --skip-docs --standalone --limited-api=yes --skip-modules=Qml,Quick,QuickWidgets,QtQuickControls2,Positioning,Location,RemoteObjects,Scxml,TextToSpeech,3DCore,3DRender,3DInput,3DLogic,3DAnimation,3DExtras,Multimedia,MultimediaWidgets,AxContainer --shiboken-config-dir=${BASE_ROOT}/src/pyside3a_install/py3.10-qt5.15.1-64bit-release/lib/cmake/Shiboken2-5.15.2.1
  51. if [ $? -ne 0 ]
  52. then
  53. echo "Error building pyside2 package"
  54. exit 1
  55. fi
  56. popd
  57. echo PACKAGE_BASE=$PACKAGE_BASE
  58. INSTALL_SOURCE=$BASE_ROOT/src/pyside3a_install/`ls $BASE_ROOT/src/pyside3a_install`
  59. echo INSTALL_SOURCE=$INSTALL_SOURCE
  60. # Copy the LICENSE and README files
  61. echo cp $BASE_ROOT/src/LICENSE.FDL $PACKAGE_BASE/
  62. cp $BASE_ROOT/src/LICENSE.FDL $PACKAGE_BASE/
  63. echo copy $BASE_ROOT/src/LICENSE.GPLv3 $PACKAGE_BASE/
  64. cp $BASE_ROOT/src/LICENSE.GPLv3 $PACKAGE_BASE/
  65. echo copy $BASE_ROOT/src/LICENSE.GPLv3-EXCEPT $PACKAGE_BASE/
  66. cp $BASE_ROOT/src/LICENSE.GPLv3-EXCEPT $PACKAGE_BASE/
  67. echo copy $BASE_ROOT/src/LICENSE.LGPLv3 $PACKAGE_BASE/
  68. cp $BASE_ROOT/src/LICENSE.LGPLv3 $PACKAGE_BASE/
  69. echo copy $BASE_ROOT/src/README.* $PACKAGE_BASE/
  70. cp $BASE_ROOT/src/README.* $PACKAGE_BASE/
  71. cp -r $INSTALL_SOURCE/bin $PACKAGE_BASE
  72. cp -r $INSTALL_SOURCE/include $PACKAGE_BASE
  73. cp -r $INSTALL_SOURCE/lib $PACKAGE_BASE
  74. cp -r $INSTALL_SOURCE/share $PACKAGE_BASE
  75. # RPATH fixes
  76. # Note: 'patchelf' is not setting the RPATH correctly, and chrpath by itself cannot add, only change the rpath.
  77. # So we are working around this by first using patchelf to create the (incorrect) RPATH, and then we can
  78. # us chrpath to change the incorrect RPATH to the correct $ORIGIN one.
  79. $BASE_ROOT/src/patchelf --force-rpath --set-rpath "\$ORIGIN" $PACKAGE_BASE/lib/libpyside2.abi3.so.5.15.2.1
  80. chrpath -r \$ORIGIN $PACKAGE_BASE/lib/libpyside2.abi3.so.5.15.2.1
  81. $BASE_ROOT/src/patchelf --force-rpath --set-rpath "\$ORIGIN" $PACKAGE_BASE/lib/libshiboken2.abi3.so.5.15.2.1
  82. chrpath -r \$ORIGIN $PACKAGE_BASE/lib/libshiboken2.abi3.so.5.15.2.1
  83. $BASE_ROOT/src/patchelf --force-rpath --set-rpath "\$ORIGIN" $PACKAGE_BASE/lib/python3.10/site-packages/shiboken2/shiboken2.abi3.so
  84. chrpath -r \$ORIGIN $PACKAGE_BASE/lib/python3.10/site-packages/shiboken2/shiboken2.abi3.so
  85. $BASE_ROOT/src/patchelf --force-rpath --set-rpath "\$ORIGIN" $PACKAGE_BASE/bin/shiboken2
  86. chrpath -r \$ORIGIN $PACKAGE_BASE/bin/shiboken2
  87. $BASE_ROOT/src/patchelf --force-rpath --set-rpath "\$ORIGIN" $PACKAGE_BASE/bin/pyside2-lupdate
  88. chrpath -r \$ORIGIN "\$ORIGIN" $PACKAGE_BASE/bin/pyside2-lupdate
  89. # Remove the sym-link python to prevent it from being packaged up in the docker post processing.
  90. pushd ${BASE_ROOT}/build
  91. rm python
  92. popd
  93. exit 0