zlib RVV 0.7.1 #100
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build .NET SDK (GCC) | |
on: [workflow_dispatch, pull_request] | |
jobs: | |
build_with_gcc: | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
runs-on: ${{ matrix.os }} | |
env: | |
PACKAGESDIR: ${{ github.workspace }}/packages | |
DOWNLOADDIR: ${{ github.workspace }}/downloads | |
OUTPUTDIR: ${{ github.workspace }}/output | |
RUNTIME_VERSION: 9.0.0-rtm.24528.9 | |
SDK_VERSION: 9.0.100 | |
ASPNETCORE_VERSION: 9.0.0-rtm.24529.3 | |
ROOTFS_DIR: / | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install prerequisities | |
run: | | |
if [ ${{ matrix.os }} == 'ubuntu-22.04' ]; then | |
sudo sed -i -E 's|^deb ([^ ]+) (.*)$|deb [arch=amd64] \1 \2\ndeb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ \2|' /etc/apt/sources.list | |
else | |
echo "Types: deb" | sudo tee /etc/apt/sources.list.d/ubuntu.sources | |
echo "URIs: http://ports.ubuntu.com/ubuntu-ports/" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "Suites: noble noble-updates noble-backports" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "Components: main universe restricted multiverse" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "Architectures: riscv64" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "Types: deb" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "URIs: http://archive.ubuntu.com/ubuntu/" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "Suites: noble noble-updates noble-backports" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "Components: main universe restricted multiverse" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "Architectures: amd64" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "Types: deb" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "URIs: http://security.ubuntu.com/ubuntu/" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "Suites: noble-security" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "Components: main universe restricted multiverse" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
echo "Architectures: amd64" | sudo tee -a /etc/apt/sources.list.d/ubuntu.sources | |
fi | |
sudo dpkg --add-architecture riscv64 && \ | |
sudo apt-get update && \ | |
sudo apt-get install -y --no-install-recommends \ | |
ca-certificates \ | |
python3-minimal \ | |
python3-libxml2 \ | |
git \ | |
wget \ | |
curl \ | |
cmake \ | |
locales \ | |
build-essential \ | |
crossbuild-essential-riscv64 \ | |
libkrb5-dev:riscv64 \ | |
libssl-dev:riscv64 \ | |
libicu-dev:riscv64 \ | |
liblttng-ust-dev:riscv64 \ | |
liblttng-ust-dev | |
sudo locale-gen en_US.UTF-8 | |
python3 -m pip install --upgrade pip | |
python3 -m pip install gdown | |
gdown https://drive.google.com/uc?id=1U3JaUqWyRYvlhfA3lVEfwu56em-Gwonl | |
mkdir xuantie-gcc && cd xuantie-gcc | |
tar -xf ../xuantie-gcc-v2.8.0.tar.gz | |
rm ../xuantie-gcc-v2.8.0.tar.gz | |
- name: Clone repositories | |
run: | | |
git clone --depth 1 -b zlib_rvv_071 https://github.com/dkurt/runtime | |
git clone --depth 1 -b release/9.0 https://github.com/dotnet/aspnetcore --recurse-submodules | |
git clone --depth 1 -b v9.0.100 https://github.com/dotnet/sdk | |
- name: Build zlib | |
run: | | |
export PATH=${{ github.workspace }}/xuantie-gcc/bin/:$PATH | |
cmake -DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/riscv64-071.toolchain.cmake \ | |
-DZLIB_COMPAT=ON \ | |
-DZLIB_ENABLE_TESTS=OFF \ | |
-DZLIBNG_ENABLE_TESTS=OFF \ | |
-DWITH_RVV=ON \ | |
-DBUILD_SHARED_LIBS=OFF \ | |
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \ | |
-S runtime/src/native/external/zlib-ng -B zlib_build | |
cmake --build zlib_build | |
sudo cmake --install zlib_build | |
rm -r ${{ github.workspace }}/xuantie-gcc | |
rm -r zlib_build | |
- name: Build runtime | |
run: | | |
mkdir -p ${PACKAGESDIR} | |
mkdir -p ${DOWNLOADDIR} | |
mkdir -p ${OUTPUTDIR} | |
export PATH=${{ github.workspace }}/xuantie-gcc/bin:$PATH | |
cd runtime | |
./build.sh --ci -c Release --cross --arch riscv64 --gcc --cmakeargs -DCLR_CMAKE_USE_SYSTEM_ZLIB=true | |
cp artifacts/packages/Release/Shipping/Microsoft.NETCore.App.Host.linux-riscv64.*.nupkg ${PACKAGESDIR} | |
cp artifacts/packages/Release/Shipping/Microsoft.NETCore.App.Runtime.linux-riscv64.*.nupkg ${PACKAGESDIR} | |
mkdir -p ${DOWNLOADDIR}/Runtime/${RUNTIME_VERSION} | |
cp artifacts/packages/Release/Shipping/dotnet-runtime-*-linux-riscv64.tar.gz ${DOWNLOADDIR}/Runtime/${RUNTIME_VERSION} | |
cp artifacts/packages/Release/Shipping/Microsoft.NETCore.App.Host.linux-riscv64.*.nupkg ${OUTPUTDIR} | |
cp artifacts/packages/Release/Shipping/Microsoft.NETCore.App.Runtime.linux-riscv64.*.nupkg ${OUTPUTDIR} | |
cd .. && rm -r runtime | |
- name: Build aspnetcore | |
run: | | |
cd aspnetcore | |
sed -i "s|ppc64le|riscv64|" src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj | |
sed -i "s|\$(BaseIntermediateOutputPath)\$(DotNetRuntimeArchiveFileName)|${DOWNLOADDIR}/Runtime/${RUNTIME_VERSION}/dotnet-runtime-9.0.0-linux-riscv64.tar.gz|" src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj | |
./eng/build.sh --pack --ci -c Release -arch riscv64 | |
cp artifacts/packages/Release/Shipping/Microsoft.AspNetCore.App.Runtime.linux-riscv64.*.nupkg ${PACKAGESDIR} | |
mkdir -p ${DOWNLOADDIR}/aspnetcore/Runtime/${ASPNETCORE_VERSION} | |
cp artifacts/installers/Release/aspnetcore-runtime-*-linux-riscv64.tar.gz ${DOWNLOADDIR}/aspnetcore/Runtime/${ASPNETCORE_VERSION}/aspnetcore-runtime-9.0.0-linux-riscv64.tar.gz | |
cp artifacts/installers/Release/aspnetcore_base_runtime.version ${DOWNLOADDIR}/aspnetcore/Runtime/${ASPNETCORE_VERSION} | |
cp artifacts/packages/Release/Shipping/Microsoft.AspNetCore.App.Runtime.linux-riscv64.*.nupkg ${OUTPUTDIR} | |
cp artifacts/packages/Release/Shipping/Microsoft.DotNet.Web.*.nupkg ${PACKAGESDIR} | |
cd .. && rm -r aspnetcore | |
- name: Build SDK | |
run: | | |
cd sdk | |
sed -i "s|linux-arm64|linux-riscv64|" src/Installer/redist-installer/targets/GenerateBundledVersions.targets | |
sed -i "s|linux-arm64|linux-riscv64|" src/SourceBuild/content/eng/bootstrap/buildBootstrapPreviouslySB.csproj | |
sed -i s'|ppc64le|riscv64|' Directory.Build.props | |
sed -i s'|ppc64le|riscv64|' src/SourceBuild/content/Directory.Build.props | |
sed -i s'|ppc64le|riscv64|' src/Installer/redist-installer/targets/Crossgen.targets | |
sed -i s"|<clear />|<clear />\n<add key='local' value='${PACKAGESDIR}' />|" NuGet.config | |
./build.sh --pack --ci -c Release --warnAsError false /p:Architecture=riscv64 /p:Version=${SDK_VERSION} /p:PublicBaseURL=file://${DOWNLOADDIR}/ | |
mkdir -p ${DOWNLOADDIR}/Sdk/${SDK_VERSION} | |
cp artifacts/packages/Release/NonShipping/dotnet-toolset-internal-*.zip ${DOWNLOADDIR}/Sdk/${SDK_VERSION}/dotnet-toolset-internal-${SDK_VERSION}.zip | |
cp artifacts/packages/Release/Shipping/Microsoft.DotNet.Common.*.nupkg ${PACKAGESDIR} | |
cp artifacts/packages/Release/Shipping/dotnet-sdk-*-linux-riscv64.tar.gz ${OUTPUTDIR}/dotnet-sdk-${SDK_VERSION}-linux-riscv64-gcc-${{ matrix.os }}.tar.gz | |
cp artifacts/packages/Release/Shipping/dotnet-sdk-*-linux-riscv64.tar.gz.sha512 ${OUTPUTDIR}/dotnet-sdk-${SDK_VERSION}-linux-riscv64-gcc-${{ matrix.os }}.tar.gz.sha512 | |
- name: Upload .NET | |
uses: actions/upload-artifact@v4 | |
if: startsWith(github.ref, 'refs/tags/') != true | |
with: | |
name: "dotnet-sdk-linux-riscv64-gcc-${{ matrix.os }}" | |
path: "${{ github.workspace }}/output/dotnet-sdk-*.tar.gz*" | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
files: | | |
${{ github.workspace }}/output/dotnet-sdk-*.tar.gz* |