From 0cb9e2dfb6f8bf40aa4ee0f2c85ada43b6aa1c83 Mon Sep 17 00:00:00 2001 From: "j-h.choi" Date: Fri, 9 Dec 2022 14:59:27 +0900 Subject: [PATCH] Add Tizen workload Change-Id: I2b98f3c2083148a88a814eacfdae7b422a526a93 --- build/prepare_additional_packs.sh | 58 ++++++++++++++++++ build/versions.inc | 16 ++++- .../6.0.100/InstalledWorkloads/tizen | 0 packaging/dotnet-build-tools.spec | 9 +++ .../WorkloadManifest.json | 32 ++++++++++ .../WorkloadManifest.targets | 7 +++ .../Samsung.Tizen.Templates.7.0.101.nupkg | Bin 0 -> 26478 bytes 7 files changed, 121 insertions(+), 1 deletion(-) mode change 100755 => 100644 build/prepare_additional_packs.sh create mode 100644 metadata/workloads/6.0.100/InstalledWorkloads/tizen create mode 100644 sdk-manifests/6.0.100/samsung.net.sdk.tizen/WorkloadManifest.json create mode 100644 sdk-manifests/6.0.100/samsung.net.sdk.tizen/WorkloadManifest.targets create mode 100644 template-packs/Samsung.Tizen.Templates.7.0.101.nupkg diff --git a/build/prepare_additional_packs.sh b/build/prepare_additional_packs.sh old mode 100755 new mode 100644 index 4e6dcf51..7d68af2e --- a/build/prepare_additional_packs.sh +++ b/build/prepare_additional_packs.sh @@ -23,9 +23,67 @@ for pack in "${ADDITIONAL_FRAMEWORK_PACKS[@]}"; do # extract pack mkdir -p $PACKS_DIR/$packname/$packversion unzip -q $TEMP_DIR/$packname.$packversion.nupkg -d $PACKS_DIR/$packname/$packversion + chmod 775 $PACKS_DIR/$packname/$packversion/* -R # cleanup rm -fr $PACKS_DIR/$packname/$packversion/{package,_rels,'[Content_Types].xml',*.nuspec} done +# Tizen workload +SDK_MANIFESTS_DIR="$ROOT_DIR/sdk-manifests/${DOTNET_SDK_VERSION_BAND}/samsung.net.sdk.tizen" +TEMPLATE_PACKS_DIR="$ROOT_DIR/template-packs" +RUNTIME_PACKS_DIR="$PACKS_DIR/Samsung.NETCore.App.Runtime.tizen/${TIZEN_WORKLOAD_VERSION}" +REF_PACKS_DIR="$PACKS_DIR/Samsung.Tizen.Ref/${TIZEN_WORKLOAD_VERSION}" +SDK_PACKS_DIR="$PACKS_DIR/Samsung.Tizen.Sdk/${TIZEN_WORKLOAD_VERSION}" +MEATADATA_DIR="$ROOT_DIR/metadata/workloads/$DOTNET_SDK_VERSION_BAND/InstalledWorkloads" + +rm -rf $TEMPLATE_PACKS_DIR +rm -rf $ROOT_DIR/sdk-manifests +rm -rf $PACKS_DIR/Samsung.NETCore.App.Runtime.tizen +rm -rf $PACKS_DIR/Samsung.Tizen.Ref +rm -rf $PACKS_DIR/Samsung.Tizen.Sdk +rm -rf $ROOT_DIR/metadata + +for pack in "${TIZEN_WORKLOAD_NUPKGS[@]}"; do + packname=($pack) + packversion=$TIZEN_WORKLOAD_VERSION + + echo "Downloading $packname $packversion ..." + NUPKG=$TEMP_DIR/$packname.$packversion.nupkg + curl -s -o $NUPKG -L https://www.nuget.org/api/v2/package/$packname/$packversion + + if [[ "$packname" == *"Template"* ]]; then + mkdir -p $TEMPLATE_PACKS_DIR + cp -rf $NUPKG $TEMPLATE_PACKS_DIR + + elif [[ "$packname" == *"Manifest"* ]]; then + mkdir -p $SDK_MANIFESTS_DIR + mkdir -p $TEMP_DIR/manifest + unzip -q $NUPKG -d $TEMP_DIR/manifest + chmod 744 $TEMP_DIR/manifest/data/* + cp -rf $TEMP_DIR/manifest/data/* $SDK_MANIFESTS_DIR + + elif [[ "$packname" == *"Runtime"* ]]; then + mkdir -p $RUNTIME_PACKS_DIR + unzip $NUPKG -d $RUNTIME_PACKS_DIR + chmod 764 $RUNTIME_PACKS_DIR/* -R + rm -fr $RUNTIME_PACKS_DIR/{package,_rels,'[Content_Types].xml'} + + elif [[ "$packname" == *"Ref"* ]]; then + mkdir -p $REF_PACKS_DIR + unzip $NUPKG -d $REF_PACKS_DIR + chmod 764 $REF_PACKS_DIR/* -R + rm -fr $REF_PACKS_DIR/{package,_rels,'[Content_Types].xml'} + + else + mkdir -p $SDK_PACKS_DIR + unzip $NUPKG -d $SDK_PACKS_DIR + chmod 764 $SDK_PACKS_DIR/* -R + rm -fr $SDK_PACKS_DIR/{package,_rels,'[Content_Types].xml'} + fi +done + +mkdir -p $MEATADATA_DIR +touch $MEATADATA_DIR/tizen + rm -fr $TEMP_DIR diff --git a/build/versions.inc b/build/versions.inc index f422d28c..b27cf057 100644 --- a/build/versions.inc +++ b/build/versions.inc @@ -4,8 +4,22 @@ ADDITIONAL_FRAMEWORK_PACKS=( "NETStandard.Library.Ref 2.1.0" "Microsoft.NETCore.App.Ref 3.0.0" "Microsoft.NETCore.App.Ref 3.1.0" + "Microsoft.NETCore.App.Ref 6.0.9" "Microsoft.AspNetCore.App.Ref 3.0.1" - "Microsoft.AspNetCore.App.Ref 3.1.10" + "Microsoft.AspNetCore.App.Ref 3.1.10" + "Microsoft.AspNetCore.App.Ref 6.0.9" "Microsoft.NETCore.App.Host.linux-x64 3.0.3" "Microsoft.NETCore.App.Host.linux-x64 3.1.22" + "Microsoft.NETCore.App.Host.linux-x64 6.0.9" +) + +DOTNET_SDK_VERSION_BAND=6.0.100 +TIZEN_WORKLOAD_VERSION=7.0.101 + +TIZEN_WORKLOAD_NUPKGS=( + "Samsung.NET.Sdk.Tizen.Manifest-${DOTNET_SDK_VERSION_BAND}" + "Samsung.NETCore.App.Runtime.tizen" + "Samsung.Tizen.Ref" + "Samsung.Tizen.Sdk" + "Samsung.Tizen.Templates" ) \ No newline at end of file diff --git a/metadata/workloads/6.0.100/InstalledWorkloads/tizen b/metadata/workloads/6.0.100/InstalledWorkloads/tizen new file mode 100644 index 00000000..e69de29b diff --git a/packaging/dotnet-build-tools.spec b/packaging/dotnet-build-tools.spec index 111388db..ed4bb424 100644 --- a/packaging/dotnet-build-tools.spec +++ b/packaging/dotnet-build-tools.spec @@ -86,6 +86,11 @@ cp -fr ./dotnet/* %{buildroot}%{SDK_PATH} # .NETCore Additional Packs cp -fr ./packs/* %{buildroot}%{SDK_PATH}/packs +# Tizen Workload +cp -rf ./sdk-manifests %{buildroot}%{SDK_PATH} +cp -rf ./template-packs %{buildroot}%{SDK_PATH} +cp -rf ./metadata %{buildroot}%{SDK_PATH} + # BuildTools cp -fr ./tools/* %{buildroot}%{TOOLS_PATH} ln -s %{TOOLS_PATH}/dotnet-build.sh %{buildroot}%{_bindir}/dotnet-build @@ -101,3 +106,7 @@ install -p -m 644 ./targets/Tizen.Pre.AOT.Reference.targets %{buildroot}%{SDK_PA %config(noreplace) %{_sysconfdir}/rpm/macros.dotnet-build-tools %{_bindir}/* %{TOOLS_PATH}/* + +%post +dotnet --version +dotnet workload list diff --git a/sdk-manifests/6.0.100/samsung.net.sdk.tizen/WorkloadManifest.json b/sdk-manifests/6.0.100/samsung.net.sdk.tizen/WorkloadManifest.json new file mode 100644 index 00000000..2e6ead77 --- /dev/null +++ b/sdk-manifests/6.0.100/samsung.net.sdk.tizen/WorkloadManifest.json @@ -0,0 +1,32 @@ +{ + "version": "7.0.101", + "workloads": { + "tizen": { + "description": ".NET SDK Workload for building Tizen applications.", + "packs": [ + "Samsung.Tizen.Sdk", + "Samsung.Tizen.Ref", + "Samsung.Tizen.Templates", + "Samsung.NETCore.App.Runtime.tizen" + ] + } + }, + "packs": { + "Samsung.Tizen.Sdk": { + "kind": "sdk", + "version": "7.0.101" + }, + "Samsung.Tizen.Ref": { + "kind": "framework", + "version": "7.0.101" + }, + "Samsung.Tizen.Templates": { + "kind": "template", + "version": "7.0.101" + }, + "Samsung.NETCore.App.Runtime.tizen": { + "kind": "framework", + "version": "7.0.101" + } + } +} diff --git a/sdk-manifests/6.0.100/samsung.net.sdk.tizen/WorkloadManifest.targets b/sdk-manifests/6.0.100/samsung.net.sdk.tizen/WorkloadManifest.targets new file mode 100644 index 00000000..e40625b9 --- /dev/null +++ b/sdk-manifests/6.0.100/samsung.net.sdk.tizen/WorkloadManifest.targets @@ -0,0 +1,7 @@ + + + + + + + diff --git a/template-packs/Samsung.Tizen.Templates.7.0.101.nupkg b/template-packs/Samsung.Tizen.Templates.7.0.101.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..fb70c629736da7a2811eeb583c91b65cd4c66759 GIT binary patch literal 26478 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