Parcourir la source

Script updates for pyside2-5.15.2.1-py3.10 on Linux aarch64 (ARM64) (#188)

* Script updates for pyside2-5.15.2.1-py3.10 on Linux aarch64 (ARM64)
* dockerize pyside2
* Fixes to build with docker
* Fix path differences between the python x86 and arm64 3p packages
* Update pyside patch to support aarch64

Signed-off-by: Steve Pham <[email protected]>
Steve Pham il y a 2 ans
Parent
commit
692f178e9c

+ 81 - 0
package-system/pyside2/Dockerfile

@@ -0,0 +1,81 @@
+
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+
+# This docker file uses ubuntu 20.04 as the base image so that the AWS Native C++ libraries will use OpenSSL 3 as the base
+# for its dependencies
+#
+
+FROM public.ecr.aws/ubuntu/ubuntu:20.04_stable
+ 
+WORKDIR /data/workspace
+
+ARG PYTHON_FOLDER_NAME
+ARG QT_FOLDER_NAME
+ARG DOCKER_BUILD_SCRIPT
+
+# Initilize apt cache
+RUN apt-get clean && apt-get update
+
+# Setup time zone and locale data (necessary for SSL and HTTPS packages)
+# RUN DEBIAN_FRONTEND="noninteractive" apt-get -y install tzdata locales keyboard-configuration
+RUN apt-get -y install tzdata locales keyboard-configuration
+
+RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
+    dpkg-reconfigure --frontend=noninteractive locales && \
+    update-locale LANG=en_US.UTF-8
+
+ENV LANG=en_US.UTF-8
+
+
+# Install the development packages needed to build Qt from source
+RUN apt-get install -y cmake \
+                       build-essential \
+                       clang-12 \
+                       llvm-12 \
+                       git \
+                       libgl1-mesa-dev \
+                       libpcre2-dev
+
+
+RUN apt-get install -y libclang-12-dev
+
+RUN apt upgrade -y
+
+# Prepare a target folder within the container to install the build artifacts tp
+RUN mkdir -p /data/workspace/build && \
+    mkdir -p /data/workspace/src
+
+run git config --global --add safe.directory /data/workspace/src && \
+    git config --global --add safe.directory /data/workspace/src/sources/pyside2-tools
+
+ENV PYTHON_FOLDER_NAME=${PYTHON_FOLDER_NAME}
+ENV QT_FOLDER_NAME=${QT_FOLDER_NAME}
+ENV LLVM_INSTALL_DIR=/usr/lib/llvm-12
+ENV LLVM_CONFIG=/usr/bin/llvm-config-12
+
+# The 3P package for python has some embedded paths from the host machine that was
+# used to build it, and pyside2 extracts these paths to deduce the include and lib
+# paths. To work around this and make it appear that the dependent 3P python package
+# was installed in this docker sctructure, we will instead create a symlink from the
+# 3p package's original path to the actual one mapped to the workspace path
+RUN if [ "$(uname -m)" = "aarch64" ]; then \
+        mkdir -p /home/ubuntu/github/3p-package-source/package-system/python/linux_aarch64/package && \
+        cd /home/ubuntu/github/3p-package-source/package-system/python/linux_aarch64/package && \
+        ln -s /data/workspace/${PYTHON_FOLDER_NAME}/python python; \
+    else \
+        mkdir -p /home/github/3p-package-source/package-system/python/linux_x64/package && \
+        cd /home/github/3p-package-source/package-system/python/linux_x64/package && \
+        ln -s /data/workspace/${PYTHON_FOLDER_NAME}/python python; \
+    fi
+
+# Copy the build script specific to this Docker script in order to execute the build
+ARG CACHEBUST=1
+
+COPY ${DOCKER_BUILD_SCRIPT} /data/workspace/
+COPY src /data/workspace/src/
+
+ENTRYPOINT ["/bin/bash"]

+ 0 - 4
package-system/pyside2/Findpyside2.cmake

@@ -87,10 +87,6 @@ if (PAL_PLATFORM_NAME STREQUAL "Windows")
     set(${MY_NAME}_TOOLS_DEPENDENCIES
         ${${MY_NAME}_BIN_DIR}/libclang.dll
     )
-elseif (PAL_PLATFORM_NAME STREQUAL "Linux")
-    set(${MY_NAME}_TOOLS_DEPENDENCIES
-    ${${MY_NAME}_BIN_DIR}/libclang.so.13
-)
 endif()
 
 add_library(${MY_NAME}::Tools SHARED IMPORTED GLOBAL)

+ 118 - 0
package-system/pyside2/build-linux.sh

@@ -0,0 +1,118 @@
+#!/bin/bash
+
+#
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+
+# TEMP_FOLDER and TARGET_INSTALL_ROOT get set from the pull_and_build_from_git.py script
+
+if [ "$(uname -m)" = "aarch64" ]
+then
+    PYTHON_FOLDER_NAME=python-3.10.5-rev2-linux-aarch64
+    QT_FOLDER_NAME=qt-5.15.2-rev8-linux-aarch64
+else
+    PYTHON_FOLDER_NAME=python-3.10.5-rev2-linux
+    QT_FOLDER_NAME=qt-5.15.2-rev8-linux
+fi
+
+DOCKER_BUILD_SCRIPT=docker_build_linux.sh
+DOCKER_IMAGE_NAME=pyside2_linux_3p
+PYSIDE2_TOOL_PATCH=pyside2-tools.patch
+
+
+# Make sure docker is installed
+DOCKER_VERSION=$(docker --version)
+if [ $? -ne 0 ]
+then
+    echo "Required package docker is not installed"
+    echo "Follow instructions on https://docs.docker.com/engine/install/ubuntu/ to install docker properly"
+    exit 1
+fi
+echo "Detected Docker Version $DOCKER_VERSION"
+
+echo "Using dependent 3rd Party Library ${PYTHON_FOLDER_NAME}"
+echo "Using dependent 3rd Party Library ${QT_FOLDER_NAME}"
+
+# Prepare the docker file and use the temp folder as the context root
+cp ${DOCKER_BUILD_SCRIPT} temp/
+
+pushd temp
+
+# An additional patch needs to be applied since pyside-tools
+pushd src/sources/pyside2-tools
+PYSIDE_TOOLS_PATCH_FILE=${BASE_ROOT}/pyside2-tools.patch
+echo Applying patch $PYSIDE_TOOLS_PATCH_FILE to pyside-tools
+git apply --ignore-whitespace ../../../../$PYSIDE2_TOOL_PATCH
+if [ $? -eq 0 ]; then
+    echo "Patch applied"
+else
+    echo "Git apply failed"
+    popd
+    exit $retVal
+fi
+popd
+
+# Build the Docker Image
+echo "Building the docker build script"
+
+echo docker build --build-arg PYTHON_FOLDER_NAME=${PYTHON_FOLDER_NAME} --build-arg QT_FOLDER_NAME=${QT_FOLDER_NAME} --build-arg DOCKER_BUILD_SCRIPT=${DOCKER_BUILD_SCRIPT} -f ../Dockerfile -t ${DOCKER_IMAGE_NAME}:latest .
+docker build --build-arg PYTHON_FOLDER_NAME=${PYTHON_FOLDER_NAME} --build-arg QT_FOLDER_NAME=${QT_FOLDER_NAME} --build-arg DOCKER_BUILD_SCRIPT=${DOCKER_BUILD_SCRIPT} -f ../Dockerfile -t ${DOCKER_IMAGE_NAME}:latest .
+if [ $? -ne 0 ]
+then
+    echo "Error occurred creating Docker image ${DOCKER_IMAGE_NAME}:latest." 
+    exit 1
+fi
+
+
+# Capture the Docker Image ID
+IMAGE_ID=$(docker images -q ${DOCKER_IMAGE_NAME}:latest)
+if [ -z $IMAGE_ID ]
+then
+    echo "Error: Cannot find Image ID for ${DOCKER_IMAGE_NAME}"
+    exit 1
+fi
+
+# Run the Docker Image
+echo "Running build script in the docker image"
+echo docker run -v $TEMP_FOLDER/src:/data/workspace/src -v $TEMP_FOLDER/$QT_FOLDER_NAME:/data/workspace/$QT_FOLDER_NAME -v $TEMP_FOLDER/$PYTHON_FOLDER_NAME:/data/workspace/$PYTHON_FOLDER_NAME --tty ${DOCKER_IMAGE_NAME}:latest /data/workspace/$DOCKER_BUILD_SCRIPT 
+docker run -v $TEMP_FOLDER/$QT_FOLDER_NAME:/data/workspace/$QT_FOLDER_NAME -v $TEMP_FOLDER/$PYTHON_FOLDER_NAME:/data/workspace/$PYTHON_FOLDER_NAME --tty ${DOCKER_IMAGE_NAME}:latest /data/workspace/$DOCKER_BUILD_SCRIPT 
+if [ $? -ne 0 ]
+then
+    echo Failed to build from docker image ${DOCKER_IMAGE_NAME}:latest
+    exit 1
+fi
+
+# Capture the container ID
+echo "Capturing the Container ID"
+CONTAINER_ID=$(docker container ls -l -q --filter "ancestor=${DOCKER_IMAGE_NAME}:latest")
+if [ -z $CONTAINER_ID ]
+then
+    echo "Error: Cannot find Container ID for Image ${DOCKER_IMAGE_NAME}"
+    exit 1
+fi
+
+# Copy the build artifacts from the Docker Container
+echo "Copying the built contents from the docker container for image ${DOCKER_IMAGE_NAME}"
+
+mkdir -p build
+docker cp $CONTAINER_ID:/data/workspace/build/. $TARGET_INSTALL_ROOT  
+if [ $? -ne 0 ]
+then
+    echo "Error occurred copying build artifacts from Docker image ${DOCKER_IMAGE_NAME}:latest." 
+    exit 1
+fi
+
+# Clean up the docker image and container
+echo "Cleaning up container"
+docker container rm $CONTAINER_ID || (echo "Warning: unable to clean up container for image ${DOCKER_IMAGE_NAME}")
+
+echo "Cleaning up image"
+docker rmi --force $IMAGE_ID  || (echo "Warning: unable to clean up image ${DOCKER_IMAGE_NAME}")
+
+popd
+
+exit 0
+

+ 16 - 5
package-system/pyside2/build_config.json

@@ -31,19 +31,30 @@
             "Linux": {
                 "depends_on_packages" :[ 
                     ["python-3.10.5-rev2-linux", "eda1fdc9129fb70df2d63bd21d0876c83c4f7021864f22c85850f4a8ff8cf1bf", ""],
-                    ["qt-5.15.2-rev6-linux", "a37bd9989f1e8fe57d94b98cbf9bd5c3caaea740e2f314e5162fa77300551531", ""]
-                ],
-                "additional_download_packages":[ 
-                    ["https://download.qt.io/development_releases/prebuilt/libclang/libclang-release_130-based-linux-Ubuntu20.04-gcc9.3-x86_64.7z", "414f923b39515ef562ff8217e57b02889deabf02ca7350c8612e4a5aa93503e8", "sha256"]
+                    ["qt-5.15.2-rev8-linux", "613d6a404b305ce0e715c57c936dc00318fb9f0d2d3f6609f8454c198f993095", ""]
                 ],
                 "cmake_find_source": "Findpyside2.cmake",
                 "custom_build_cmd": [
-                    "./build_linux.sh"
+                    "./build-linux.sh"
                 ],
                 "custom_install_cmd": [
                     "./package_linux.sh"
                 ]
+            },
+	    "Linux-aarch64":  {
+                "depends_on_packages" :[
+                    ["python-3.10.5-rev2-linux-aarch64", "a02bfb612005af364872aac96e569cef1ad84ba65632d88d04b34a99d45b077c", ""],
+                    ["qt-5.15.2-rev8-linux-aarch64", "c437ee1c7a4fe84002352a2f8ed230c822a13dcc80735a4fecf3b3af6e34bb63", ""]
+                ],
+                "cmake_find_source": "Findpyside2.cmake",
+                "custom_build_cmd": [
+                    "./build-linux.sh"
+                ],
+                "custom_install_cmd": [
+                    "./package_linux_aarch64.sh"
+                ]
             }
+
         }
     }
 }

+ 5 - 4
package-system/pyside2/build_linux.sh → package-system/pyside2/build_linux_aarch64.sh

@@ -10,7 +10,7 @@
 
 
 # Get the python executable from the package dependency
-LOCAL_PYTHON3_BIN=$TEMP_FOLDER/python-3.10.5-rev2-linux/python/bin/python3
+LOCAL_PYTHON3_BIN=$TEMP_FOLDER/python-3.10.5-rev2-linux-aarch64/python/bin/python3
 
 SCRIPT_PATH=`dirname $0`
 
@@ -27,11 +27,12 @@ then
 fi
 
 # Set the dependent clang compiler for the build script to use
-LLVM_INSTALL_DIR=$TEMP_FOLDER/libclang-release_130-based-linux-Ubuntu20.04-gcc9.3-x86_64/libclang
-PATH=$LLVM_INSTALL_DIR/bin:$PATH
+export LLVM_INSTALL_DIR=/usr/lib/llvm-6.0
+export LLVM_CONFIG=/usr/bin/llvm-config-6.0
+
 
 # Get the qt package's qmake location
-LOCAL_3P_QTBUILD_PATH=$TEMP_FOLDER/qt-5.15.2-rev6-linux/qt
+LOCAL_3P_QTBUILD_PATH=$TEMP_FOLDER/qt-5.15.2-rev8-linux-aarch64/qt
 LOCAL_3P_QTBUILD_QMAKE_PATH=`readlink -f $LOCAL_3P_QTBUILD_PATH/bin/qmake`
 LOCAL_3P_QTBUILD_LIB_PATH=`readlink -f $LOCAL_3P_QTBUILD_PATH/lib`
 if [ ! -f "$LOCAL_3P_QTBUILD_QMAKE_PATH" ]

+ 94 - 0
package-system/pyside2/docker_build_linux.sh

@@ -0,0 +1,94 @@
+#!/bin/bash
+
+#
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+# 
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+#
+
+BASE_ROOT=/data/workspace
+PACKAGE_BASE=${BASE_ROOT}/build
+DEP_PYTHON_BASE=${BASE_ROOT}/${PYTHON_FOLDER_NAME}
+DEP_QT_BASE=${BASE_ROOT}/${QT_FOLDER_NAME}
+
+echo "Using Python at ${DEP_PYTHON_BASE}"
+echo "Using Qt at ${DEP_QT_BASE}"
+
+# Get the python executable from the package dependency
+LOCAL_PYTHON3_BIN=${DEP_PYTHON_BASE}/python/bin/python3
+if [ ! -f $LOCAL_PYTHON3_BIN ]
+then
+    echo "Required local 3P python not detected"
+    exit 1
+fi
+
+# Setup the local QT Paths
+# Get the qt package's qmake location
+LOCAL_3P_QTBUILD_PATH=${DEP_QT_BASE}/qt
+LOCAL_3P_QTBUILD_QMAKE_PATH=`readlink -f $LOCAL_3P_QTBUILD_PATH/bin/qmake`
+LOCAL_3P_QTBUILD_LIB_PATH=`readlink -f $LOCAL_3P_QTBUILD_PATH/lib`
+if [ ! -f "$LOCAL_3P_QTBUILD_QMAKE_PATH" ]
+then
+    echo "Missing 3P dependency of Qt $LOCAL_3P_QTBUILD_PATH"
+    echo
+    exit 1
+fi
+
+echo Building source
+pushd ${BASE_ROOT}/src
+
+LD_LIBRARY_PATH=$LOCAL_3P_QTBUILD_LIB_PATH/
+export LD_LIBRARY_PATH
+
+# Build shiboken2 library first since it is 
+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"
+$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
+if [ $? -ne 0 ]
+then
+    echo "Error building shiobken2 package"
+    exit 1
+fi
+
+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.
+$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
+if [ $? -ne 0 ]
+then
+    echo "Error building pyside2 package"
+    exit 1
+fi
+
+popd
+
+echo PACKAGE_BASE=$PACKAGE_BASE
+INSTALL_SOURCE=$BASE_ROOT/src/pyside3a_install/`ls $BASE_ROOT/src/pyside3a_install`
+echo INSTALL_SOURCE=$INSTALL_SOURCE
+
+# Copy the LICENSE and README files
+echo cp $BASE_ROOT/src/LICENSE.FDL $PACKAGE_BASE/
+cp $BASE_ROOT/src/LICENSE.FDL $PACKAGE_BASE/
+echo copy $BASE_ROOT/src/LICENSE.GPLv3 $PACKAGE_BASE/
+cp $BASE_ROOT/src/LICENSE.GPLv3 $PACKAGE_BASE/
+echo copy $BASE_ROOT/src/LICENSE.GPLv3-EXCEPT $PACKAGE_BASE/
+cp $BASE_ROOT/src/LICENSE.GPLv3-EXCEPT $PACKAGE_BASE/
+echo copy $BASE_ROOT/src/LICENSE.LGPLv3 $PACKAGE_BASE/
+cp $BASE_ROOT/src/LICENSE.LGPLv3 $PACKAGE_BASE/
+echo copy $BASE_ROOT/src/README.* $PACKAGE_BASE/
+cp $BASE_ROOT/src/README.* $PACKAGE_BASE/
+
+cp -r $INSTALL_SOURCE/bin $PACKAGE_BASE
+cp -r $INSTALL_SOURCE/include $PACKAGE_BASE
+cp -r $INSTALL_SOURCE/lib $PACKAGE_BASE
+cp -r $INSTALL_SOURCE/share $PACKAGE_BASE
+
+
+# RPATH fixes
+$BASE_ROOT/src/patchelf --set-rpath \$ORIGIN $PACKAGE_BASE/lib/libpyside2.abi3.so.5.15.2.1
+$BASE_ROOT/src/patchelf --set-rpath \$ORIGIN $PACKAGE_BASE/lib/libshiboken2.abi3.so.5.15.2.1
+$BASE_ROOT/src/patchelf --set-rpath \$ORIGIN $PACKAGE_BASE/lib/python3.10/site-packages/shiboken2/shiboken2.abi3.so
+$BASE_ROOT/src/patchelf --set-rpath \$ORIGIN $PACKAGE_BASE/bin/shiboken2
+$BASE_ROOT/src/patchelf --set-rpath \$ORIGIN $PACKAGE_BASE/bin/pyside2-lupdate
+
+exit 0
+

+ 4 - 35
package-system/pyside2/package_linux.sh

@@ -12,44 +12,13 @@
 
 PACKAGE_BASE=$TARGET_INSTALL_ROOT
 echo PACKAGE_BASE=$PACKAGE_BASE
-INSTALL_SOURCE=$TEMP_FOLDER/src/pyside3a_install/`ls $TEMP_FOLDER/src/pyside3a_install`
-echo INSTALL_SOURCE=$INSTALL_SOURCE
-
-# Copy the LICENSE and README files
-echo cp $TEMP_FOLDER/src/LICENSE.FDL $PACKAGE_BASE/
-cp $TEMP_FOLDER/src/LICENSE.FDL $PACKAGE_BASE/
-echo copy $TEMP_FOLDER/src/LICENSE.GPLv3 $PACKAGE_BASE/
-cp $TEMP_FOLDER/src/LICENSE.GPLv3 $PACKAGE_BASE/
-echo copy $TEMP_FOLDER/src/LICENSE.GPLv3-EXCEPT $PACKAGE_BASE/
-cp $TEMP_FOLDER/src/LICENSE.GPLv3-EXCEPT $PACKAGE_BASE/
-echo copy $TEMP_FOLDER/src/LICENSE.LGPLv3 $PACKAGE_BASE/
-cp $TEMP_FOLDER/src/LICENSE.LGPLv3 $PACKAGE_BASE/
-echo copy $TEMP_FOLDER/../LICENSES.txt $PACKAGE_BASE/
-cp $TEMP_FOLDER/../LICENSES.txt $PACKAGE_BASE/
-echo copy $TEMP_FOLDER/src/README.* $PACKAGE_BASE/
-cp $TEMP_FOLDER/src/README.* $PACKAGE_BASE/
-
-cp -r $INSTALL_SOURCE/bin $PACKAGE_BASE
-cp -r $INSTALL_SOURCE/include $PACKAGE_BASE
-cp -r $INSTALL_SOURCE/lib $PACKAGE_BASE
-cp -r $INSTALL_SOURCE/share $PACKAGE_BASE
-
-# Copy the dependent libclang.so.13 from the downloaded dependent package
-cp $TEMP_FOLDER/libclang-release_130-based-linux-Ubuntu20.04-gcc9.3-x86_64/libclang/lib/libclang.so.13.0.0 $PACKAGE_BASE/bin
-pushd $PACKAGE_BASE/bin
-ln -s libclang.so.13.0.0 libclang.so.13.0
-ln -s libclang.so.13.0.0 libclang.so.13
-popd
-
-# RPATH fixes
-$TEMP_FOLDER/src/patchelf --set-rpath \$ORIGIN $PACKAGE_BASE/lib/libpyside2.abi3.so.5.15.2.1
-$TEMP_FOLDER/src/patchelf --set-rpath \$ORIGIN $PACKAGE_BASE/lib/libshiboken2.abi3.so.5.15.2.1
-$TEMP_FOLDER/src/patchelf --set-rpath \$ORIGIN $PACKAGE_BASE/lib/python3.10/site-packages/shiboken2/shiboken2.abi3.so
-$TEMP_FOLDER/src/patchelf --set-rpath \$ORIGIN $PACKAGE_BASE/bin/shiboken2
-$TEMP_FOLDER/src/patchelf --set-rpath \$ORIGIN $PACKAGE_BASE/bin/pyside2-lupdate
 
 # Add additional files needed for pip install
 cp $TEMP_FOLDER/../__init__.py $PACKAGE_BASE/lib/python3.10/site-packages/
 cp $TEMP_FOLDER/../setup.py $PACKAGE_BASE/lib/python3.10/site-packages/
+cp $TEMP_FOLDER/../LICENSES.txt $PACKAGE_BASE/
+
+INSTALL_SOURCE=$TEMP_FOLDER/build
+echo INSTALL_SOURCE=$INSTALL_SOURCE
 
 exit 0

+ 48 - 0
package-system/pyside2/package_linux_aarch64.sh

@@ -0,0 +1,48 @@
+#!/bin/bash
+
+#
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+# 
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+#
+
+# TEMP_FOLDER and TARGET_INSTALL_ROOT get set from the pull_and_build_from_git.py script
+
+PACKAGE_BASE=$TARGET_INSTALL_ROOT
+echo PACKAGE_BASE=$PACKAGE_BASE
+INSTALL_SOURCE=$TEMP_FOLDER/src/pyside3a_install/`ls $TEMP_FOLDER/src/pyside3a_install`
+echo INSTALL_SOURCE=$INSTALL_SOURCE
+
+# Copy the LICENSE and README files
+echo cp $TEMP_FOLDER/src/LICENSE.FDL $PACKAGE_BASE/
+cp $TEMP_FOLDER/src/LICENSE.FDL $PACKAGE_BASE/
+echo copy $TEMP_FOLDER/src/LICENSE.GPLv3 $PACKAGE_BASE/
+cp $TEMP_FOLDER/src/LICENSE.GPLv3 $PACKAGE_BASE/
+echo copy $TEMP_FOLDER/src/LICENSE.GPLv3-EXCEPT $PACKAGE_BASE/
+cp $TEMP_FOLDER/src/LICENSE.GPLv3-EXCEPT $PACKAGE_BASE/
+echo copy $TEMP_FOLDER/src/LICENSE.LGPLv3 $PACKAGE_BASE/
+cp $TEMP_FOLDER/src/LICENSE.LGPLv3 $PACKAGE_BASE/
+echo copy $TEMP_FOLDER/../LICENSES.txt $PACKAGE_BASE/
+cp $TEMP_FOLDER/../LICENSES.txt $PACKAGE_BASE/
+echo copy $TEMP_FOLDER/src/README.* $PACKAGE_BASE/
+cp $TEMP_FOLDER/src/README.* $PACKAGE_BASE/
+
+cp -r $INSTALL_SOURCE/bin $PACKAGE_BASE
+cp -r $INSTALL_SOURCE/include $PACKAGE_BASE
+cp -r $INSTALL_SOURCE/lib $PACKAGE_BASE
+cp -r $INSTALL_SOURCE/share $PACKAGE_BASE
+
+# RPATH fixes
+$TEMP_FOLDER/src/patchelf --set-rpath \$ORIGIN $PACKAGE_BASE/lib/libpyside2.abi3.so.5.15.2.1
+$TEMP_FOLDER/src/patchelf --set-rpath \$ORIGIN $PACKAGE_BASE/lib/libshiboken2.abi3.so.5.15.2.1
+$TEMP_FOLDER/src/patchelf --set-rpath \$ORIGIN $PACKAGE_BASE/lib/python3.10/site-packages/shiboken2/shiboken2.abi3.so
+$TEMP_FOLDER/src/patchelf --set-rpath \$ORIGIN $PACKAGE_BASE/bin/shiboken2
+$TEMP_FOLDER/src/patchelf --set-rpath \$ORIGIN $PACKAGE_BASE/bin/pyside2-lupdate
+
+# Add additional files needed for pip install
+cp $TEMP_FOLDER/../__init__.py $PACKAGE_BASE/lib/python3.10/site-packages/
+cp $TEMP_FOLDER/../setup.py $PACKAGE_BASE/lib/python3.10/site-packages/
+
+exit 0

+ 19 - 0
package-system/pyside2/pyside2-5.15.2.1.patch

@@ -1,3 +1,22 @@
+diff --git a/build_scripts/utils.py b/build_scripts/utils.py
+index 0782ae036..53231ce14 100644
+--- a/build_scripts/utils.py
++++ b/build_scripts/utils.py
+@@ -833,7 +833,7 @@ def ldd(executable_path):
+     chosen_rtld = None
+     # List of ld's considered by ldd on Ubuntu (here's hoping it's the
+     # same on all distros).
+-    rtld_list = ["/lib/ld-linux.so.2", "/lib64/ld-linux-x86-64.so.2", "/libx32/ld-linux-x32.so.2"]
++    rtld_list = ["/lib/ld-linux.so.2", "/lib64/ld-linux-x86-64.so.2", "/libx32/ld-linux-x32.so.2", "/lib/ld-linux-aarch64.so.1"]
+ 
+     # Choose appropriate runtime dynamic linker.
+     for rtld in rtld_list:
+diff --git a/sources/pyside2-tools b/sources/pyside2-tools
+--- a/sources/pyside2-tools
++++ b/sources/pyside2-tools
+@@ -1 +1 @@
+-Subproject commit a8448837204faee0b457d1e2d4cbf574a2811114
++Subproject commit a8448837204faee0b457d1e2d4cbf574a2811114-dirty
 diff --git a/sources/pyside2/libpyside/CMakeLists.txt b/sources/pyside2/libpyside/CMakeLists.txt
 index e31c87eef..a8fdf731a 100644
 --- a/sources/pyside2/libpyside/CMakeLists.txt

+ 1 - 1
package-system/pyside2/pyside2-tools.patch

@@ -24,7 +24,7 @@ index ce65750..9626bc4 100644
 +             REQUIRED
 +                Core
 +             PATHS
-+                "${CMAKE_SOURCE_DIR}/../../../qt-5.15.2-rev6-linux/qt"
++                "${CMAKE_SOURCE_DIR}/../../../qt-5.15.2-rev8-linux/qt"
 +             )
 +
 +find_package(PySide2 2.0.0

+ 1 - 0
package-system/python/linux_aarch64/package

@@ -0,0 +1 @@
+/home/ubuntu/github/3p-package-source/package-system/pyside2/temp/python-3.10.5-rev2-linux-aarch64/

+ 2 - 0
package_build_list_host_linux-aarch64.json

@@ -32,6 +32,7 @@
         "PhysX-5.1.1-rev1-linux-aarch64": "package-system/PhysX5/build_package_image.py --platform-name linux-aarch64",
         "png-1.6.37-rev2-linux-aarch64": "Scripts/extras/pull_and_build_from_git.py ../../package-system/libpng --platform-name Linux-aarch64 --clean",
         "poly2tri-7f0487a-rev1-linux-aarch64": "package-system/poly2tri/build_package_image.py --platform-name linux-aarch64",
+        "pyside2-5.15.2.1-py3.10-rev4-linux-aarch64": "Scripts/extras/pull_and_build_from_git.py ../../package-system/pyside2 --platform-name Linux-aarch64 --clean",
         "python-3.10.5-rev2-linux-aarch64": "package-system/python/build_package_image.py",
         "qt-5.15.2-rev8-linux-aarch64": "Scripts/extras/pull_and_build_from_git.py ../../package-system/Qt --platform-name Linux-aarch64 --clean",
         "SPIRVCross-2021.04.29-rev1-linux-aarch64": "Scripts/extras/pull_and_build_from_git.py ../../package-system/SPIRVCross --platform-name Linux-aarch64 --clean",
@@ -70,6 +71,7 @@
         "PhysX-5.1.1-rev1-linux-aarch64": "package-system/PhysX5/temp/PhysX5-linux-aarch64",
         "png-1.6.37-rev2-linux-aarch64":  "package-system/libpng/temp/png-linux-aarch64",
         "poly2tri-7f0487a-rev1-linux-aarch64": "package-system/poly2tri-linux-aarch64",
+        "pyside2-5.15.2.1-py3.10-rev4-linux-aarch64": "package-system/pyside2/temp/pyside2-linux-aarch64",
         "python-3.10.5-rev2-linux-aarch64": "package-system/python/linux_aarch64/package",
         "qt-5.15.2-rev8-linux-aarch64": "package-system/Qt/temp/qt-linux-aarch64",
         "SPIRVCross-2021.04.29-rev1-linux-aarch64": "package-system/SPIRVCross/temp/SPIRVCross-linux-aarch64",

+ 2 - 2
package_build_list_host_linux.json

@@ -19,7 +19,7 @@
         "libsamplerate-0.2.1-rev2-linux": "Scripts/extras/pull_and_build_from_git.py ../../package-system/libsamplerate --platform-name Linux --package-root ../../package-system --clean",
         "mcpp-2.7.2_az.1-rev1-linux": "package-system/mcpp/get_and_build_mcpp.py mcpp-2.7.2_az.1-rev1",
         "OpenMesh-8.1-rev3-linux": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenMesh --platform-name Linux --package-root ../../package-system --clean",
-        "pyside2-5.15.2.1-py3.10-rev3-linux": "Scripts/extras/pull_and_build_from_git.py ../../package-system/pyside2 --platform-name Linux --package-root ../../package-system/pyside2/temp --clean",
+        "pyside2-5.15.2.1-py3.10-rev4-linux": "Scripts/extras/pull_and_build_from_git.py ../../package-system/pyside2 --platform-name Linux --package-root ../../package-system/pyside2/temp --clean",
         "OpenEXR-3.1.3-rev4-linux": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenEXR --platform-name Linux --package-root ../../package-system/OpenEXR/temp --clean",
         "OpenXR-1.0.22-rev2-linux": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenXR --platform-name Linux --package-root ../../package-system --clean",
         "openimageio-opencolorio-2.3.17-rev2-linux": "package-system/openimageio-opencolorio/build_openimageio.py --package-name=openimageio-opencolorio-2.3.17-rev2-linux --clean",
@@ -59,7 +59,7 @@
         "libsamplerate-0.2.1-rev2-linux": "package-system/libsamplerate-linux",
         "mcpp-2.7.2_az.1-rev1-linux": "package-system/mcpp-linux",
         "OpenMesh-8.1-rev3-linux": "package-system/OpenMesh-linux",
-        "pyside2-5.15.2.1-py3.10-rev3-linux": "package-system/pyside2/temp/pyside2-linux",
+        "pyside2-5.15.2.1-py3.10-rev4-linux": "package-system/pyside2/temp/pyside2-linux",
         "OpenEXR-3.1.3-rev4-linux": "package-system/OpenEXR/temp/OpenEXR-linux",
         "OpenXR-1.0.22-rev2-linux": "package-system/OpenXR-linux",
         "openimageio-opencolorio-2.3.17-rev2-linux": "package-system/openimageio-opencolorio/temp/package-linux",