#!/bin/bash
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
set -x -e -v
# This script is for building the onnx runtime using upstream build system.
target_platform=
"$1"
target_arch=
"$2"
###
# Gather build dependencies from fetches
if test -d
"$MOZ_FETCHES_DIR/cmake" ;
then
export PATH=
"$(cd $MOZ_FETCHES_DIR/cmake && pwd)/bin:${PATH}"
fi
onnxruntime_depdir=
"$MOZ_FETCHES_DIR/onnxruntime-deps"
export PATH=
"$(cd $MOZ_FETCHES_DIR/ninja && pwd)/bin:${PATH}"
export PATH=
"$(cd $MOZ_FETCHES_DIR/clang && pwd)/bin:${PATH}"
export CC=clang
export CXX=clang++
###
# Extra setup per platform
case ${target_platform} in
Darwin)
# Use taskcluster clang instead of host compiler on OSX
osx_sysroot=`cd ${MOZ_FETCHES_DIR}/MacOSX*.sdk; pwd`
extra_args=
"--cmake_extra_defines CMAKE_OSX_SYSROOT=${osx_sysroot} --osx_arch $target_arch"
prefix=lib
extension=dylib
;;
Linux)
prefix=lib
extension=so
;;
Android)
extra_args=
"--android --android_ndk_path=$MOZ_FETCHES_DIR/android-ndk --android_sdk_path=$MOZ_FETCHES_DIR/android-sdk-linux --android_abi=$target_arch"
prefix=lib
extension=so
;;
Windows)
# Still use visual studio there, compilation through clang-cl is not
# supported upstream.
case $target_arch in
x86)
extra_args=
"--x86"
;;
esac
extra_args=
"$extra_args --cmake_extra_defines CMAKE_SHARED_LINKER_FLAGS=/MANIFEST:NO"
. $GECKO_PATH/taskcluster/scripts/misc/vs-setup.sh
sed -i -e
's/ProgramDatabase//' "$MOZ_FETCHES_DIR/onnxruntime/tools/ci_build/build.py"
export CC=cl.exe
export CXX=cl.exe
prefix=
extension=dll
;;
esac
artifact=$(basename
"$TOOLCHAIN_ARTIFACT" )
onnx_folder=${artifact%.tar.*}
cd
"$MOZ_FETCHES_DIR/onnxruntime"
###
# Various patches
# Update checksum for eigen3, see https://github.com/microsoft/onnxruntime/pull/24884
patch -p1 << EOF
diff --git a/cmake/deps.txt b/cmake/deps.txt
index
728241840 f723..
6 e045f6dcdc9d
100644
--- a/cmake/deps.txt
+++ b/cmake/deps.txt
@@ -
22 ,
7 +
22 ,
9 @@ dlpack;
https://github.com/dmlc/dlpack/archive/ 5 c210da409e7f1e51ddf
445134a4376fdb
# it contains changes on top of 3.4.0 which are required to fix build issues.
# Until the 3.4.1 release this is the best option we have.
# Issue link: https://gitlab.com/libeigen/eigen/-/issues/2744
-eigen;https://gitlab.com/libeigen/eigen/-/archive/ 1 d8b82b0740839c0de7f1242a3585e3390ff5f33/eigen-1 d8b82b0740839c0de7f1242a3585e3390ff5f33.zip;5 ea4d05e62d7f954a46b3213f9b2535bdd866803
+# Moved to github mirror to avoid gitlab issues.
+# Issue link: https://github.com/bazelbuild/bazel-central-registry/issues/4355
+eigen;https://github.com/eigen-mirror/eigen/archive/ 1 d8b82b0740839c0de7f1242a3585e3390ff5f33/eigen-1 d8b82b0740839c0de7f1242a3585e3390ff5f33.zip;05 b19b49e6fbb91246be711d801160528c135e34
flatbuffers;https://github.com/google/flatbuffers/archive/refs/tags/v23. 5 .26 .zip;59422 c3b5e573dd192fead2834d25951f1c1670c
fp16;https://github.com/Maratyszcza/FP16/archive/ 0 a92994d729ff76a58f692d3028ca1b64b145d91.zip;b985f6985a05a1c03ff1bb71190f66d8f98a1494
EOF
# Make sure we use dependencies from onnxruntime-deps and avoid re-downloading
# them.
sed -i -e "s,;.*/,;$onnxruntime_depdir/,g" cmake/deps.txt
# Apply local patches
find $GECKO_PATH/taskcluster/scripts/misc/onnxruntime.patches -type f -name '*.patch' -print0 | sort -z | while read -d '' patch ; do patch -p1 < $patch ; done
###
# Configure and build
onnx_builddir=_build
mkdir $onnx_builddir
build_type=MinSizeRel
python3 tools/ci_build/build.py \
--update \
--parallel \
--enable_lto \
--disable_rtti \
--cmake_generator Ninja \
--build_dir $onnx_builddir \
--build --build_shared_lib \
--skip_submodule_sync --use_lock_free_queue --skip_tests --config $build_type --compile_no_warning_as_error \
--cmake_extra_defines onnxruntime_BUILD_UNIT_TESTS=OFF\
--cmake_extra_defines PYTHON_EXECUTABLE=$(which python3)\
--cmake_extra_defines ONNX_USE_LITE_PROTO=ON\
--disable_exceptions \
--cmake_extra_defines CMAKE_CXX_FLAGS=-fno-exceptions\ -DORT_NO_EXCEPTIONS\ -DONNX_NO_EXCEPTIONS\ -DMLAS_NO_EXCEPTION\
${extra_args}
###
# Pack the result and upload.
mkdir $onnx_folder
cp $onnx_builddir/$build_type/${prefix}onnxruntime.${extension} $onnx_folder/
ls -la "$onnx_folder"
find "$onnx_folder" -type f -exec llvm-strip -x {} \; || true
ls -la "$onnx_folder"
mkdir -p $UPLOAD_DIR
export ZSTD_CLEVEL=19
case ${target_platform} in
Windows)
tar -a -c -f "$UPLOAD_DIR/$artifact" --force-local "$onnx_folder"
;;
*)
tar acf "$UPLOAD_DIR/$artifact" "$onnx_folder"
;;
esac
ls -la "$UPLOAD_DIR/$artifact"
Messung V0.5 in Prozent C=79 H=96 G=87
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland