Skip to content

Commit 91eaa5f

Browse files
committed
Ensure setuptools Python module is available
- see dotnet/dnceng#4756 - with this, executing `python3` should not result in `pkg_resources not found` error - note direct Python dependencies in dotnet/arcade include only default modules - change in Microsoft.DotNet.Build.Tasks.Installers likely less important
1 parent e8de341 commit 91eaa5f

File tree

3 files changed

+33
-13
lines changed

3 files changed

+33
-13
lines changed

src/Microsoft.DotNet.Build.Tasks.Installers/build/deb-package-tool/package_tool.sh

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,13 @@ execute(){
2222
exit 1
2323
fi
2424

25+
install_setuptools
2526
parse_config_and_set_env_vars
2627
clean_or_create_build_dirs
2728
package_all
2829
generate_all
2930
create_source_tarball
30-
31+
3132
# Actually Build Package Files
3233
(cd ${PACKAGE_SOURCE_DIR}; debuild -us -uc)
3334
}
@@ -63,7 +64,7 @@ parse_args_and_set_env_vars(){
6364
;;
6465
esac
6566
done
66-
67+
6768
# Special Input Directories + Paths
6869
ABSOLUTE_PLACEMENT_DIR="${INPUT_DIR}/\$"
6970
PACKAGE_ROOT_PLACEMENT_DIR="${INPUT_DIR}/package_root"
@@ -73,7 +74,7 @@ parse_args_and_set_env_vars(){
7374
}
7475

7576
print_help(){
76-
echo "Usage: package_tool [-i <INPUT_DIR>] [-o <OUTPUT_DIRECTORY>]
77+
echo "Usage: package_tool [-i <INPUT_DIR>] [-o <OUTPUT_DIRECTORY>]
7778
[-n <PACKAGE_NAME>] [-v <PACKAGE_VERSION>] [-h]
7879
7980
REQUIRED:
@@ -114,13 +115,18 @@ validate_inputs(){
114115
echo $CONFIG
115116
ret=1
116117
fi
117-
118+
118119
return $ret
119120
}
120121

122+
install_setuptools(){
123+
# Install setuptools if not already installed. Unnecessary if running in a Docker container.
124+
[ -n ${HELIX_DOCKER_ENTRYPOINT:-} ] || python3 -m pip --disable-pip-version-check install setuptools
125+
}
126+
121127
parse_config_and_set_env_vars(){
122128
extract_base_cmd="python3 $SCRIPT_DIR/scripts/extract_json_value.py"
123-
129+
124130
# Arguments Take Precedence over Config
125131
[ -z "$PACKAGE_VERSION" ] && PACKAGE_VERSION="$($extract_base_cmd $CONFIG "release.package_version")"
126132
[ -z "$PACKAGE_NAME" ] && PACKAGE_NAME="$($extract_base_cmd $CONFIG "package_name")"
@@ -151,7 +157,7 @@ package_all(){
151157
package_absolute_placement
152158
package_samples
153159
package_docs
154-
package_install_scripts
160+
package_install_scripts
155161
}
156162

157163
generate_all(){
@@ -179,18 +185,18 @@ package_package_root_placement(){
179185
package_absolute_placement(){
180186
if [[ -d "$ABSOLUTE_PLACEMENT_DIR" ]]; then
181187
abs_in_package_dir="\$"
182-
188+
183189
add_dir_to_install ${ABSOLUTE_PLACEMENT_DIR} $abs_in_package_dir
184-
190+
185191
# Get List of all files in directory tree, relative to ABSOLUTE_PLACEMENT_DIR
186192
abs_files=( $(_get_files_in_dir_tree $ABSOLUTE_PLACEMENT_DIR) )
187-
193+
188194
# For each file add a a system placement
189195
for abs_file in ${abs_files[@]}
190196
do
191197
parent_dir=$(dirname $abs_file)
192198
filename=$(basename $abs_file)
193-
199+
194200
add_system_file_placement "$abs_in_package_dir/$abs_file" "/$parent_dir"
195201
done
196202
fi
@@ -224,7 +230,7 @@ generate_config_templates(){
224230
generate_manpages(){
225231
if [[ -f "$DOCS_JSON_PATH" ]]; then
226232
mkdir -p $DOCS_DIR
227-
233+
228234
# Generate the manpages from json spec
229235
python3 ${SCRIPT_DIR}/scripts/manpage_generator.py ${DOCS_JSON_PATH} ${DOCS_DIR}
230236
fi

src/Microsoft.DotNet.Helix/Sdk/tools/azure-pipelines/AzurePipelines.MonoQueue.targets

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,16 @@
66
<HelixProperties Include="AzurePipelinesTestRunId" Value="$(TestRunId)" />
77
</ItemGroup>
88

9+
<!-- Install setuptools if not already installed. Unnecessary if running in a Linux Docker container. -->
910
<PropertyGroup>
1011
<HelixPostCommands Condition="$(IsPosixShell)">
1112
$(HelixPostCommands);
13+
[ -n ${HELIX_DOCKER_ENTRYPOINT:-} ] || %HELIX_PYTHONPATH% -m pip --disable-pip-version-check install setuptools;
1214
$HELIX_PYTHONPATH $HELIX_CORRELATION_PAYLOAD/reporter/run.py $(SYSTEM_TEAMFOUNDATIONCOLLECTIONURI) $(SYSTEM_TEAMPROJECT) $(TestRunId) $(SYSTEM_ACCESSTOKEN) || exit $?
1315
</HelixPostCommands>
1416
<HelixPostCommands Condition="!$(IsPosixShell)">
1517
$(HelixPostCommands);
18+
%HELIX_PYTHONPATH% -m pip --disable-pip-version-check install setuptools;
1619
%HELIX_PYTHONPATH% %HELIX_CORRELATION_PAYLOAD%\reporter\run.py $(SYSTEM_TEAMFOUNDATIONCOLLECTIONURI) $(SYSTEM_TEAMPROJECT) $(TestRunId) $(SYSTEM_ACCESSTOKEN) || exit /b
1720
</HelixPostCommands>
1821
</PropertyGroup>

src/Microsoft.DotNet.Helix/Sdk/tools/xharness-runner/XHarnessRunner.targets

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,20 @@
6161
<!-- When using a dotnet 'tool' that is not installed globally, we must set DOTNET_ROOT.
6262
This is because a framework dependent dotnet tool only searches in program files folders for runtimes.
6363
When .NET is not already installed there, we set DOTNET_ROOT to help it find the right one. -->
64+
<!-- Install setuptools if not already installed. Unnecessary if running in a Linux Docker container. -->
6465
<PropertyGroup Condition="$(IsPosixShell)">
6566
<HelixPreCommands>$(HelixPreCommands);export PATH=$HELIX_CORRELATION_PAYLOAD/xharness-cli:$PATH</HelixPreCommands>
6667
<HelixPreCommands>$(HelixPreCommands);export XHARNESS_DISABLE_COLORED_OUTPUT=true</HelixPreCommands>
6768
<HelixPreCommands>$(HelixPreCommands);export XHARNESS_LOG_WITH_TIMESTAMPS=true</HelixPreCommands>
6869
<HelixPreCommands>$(HelixPreCommands);export XHARNESS_CLI_PATH=$HELIX_CORRELATION_PAYLOAD/microsoft.dotnet.xharness.cli/$(_XHarnessPackageVersion)/tools/$(XHarnessTargetFramework)/any/Microsoft.DotNet.XHarness.CLI.dll</HelixPreCommands>
6970

7071
<HelixPreCommands Condition=" '$(EnableXHarnessTelemetry)' == 'true' ">$(HelixPreCommands);export XHARNESS_DIAGNOSTICS_PATH=$HELIX_WORKITEM_ROOT/diagnostics.json</HelixPreCommands>
71-
<HelixPostCommands Condition=" '$(EnableXHarnessTelemetry)' == 'true' ">"$HELIX_PYTHONPATH" -u "$HELIX_WORKITEM_PAYLOAD/xharness-event-processor.py";$(HelixPostCommands)</HelixPostCommands>
72+
73+
<HelixPostCommands Condition=" '$(EnableXHarnessTelemetry)' == 'true' ">
74+
[ -n ${HELIX_DOCKER_ENTRYPOINT:-} ] || %HELIX_PYTHONPATH% -m pip --disable-pip-version-check install setuptools;
75+
$HELIX_PYTHONPATH -u "$HELIX_WORKITEM_PAYLOAD/xharness-event-processor.py";
76+
$(HelixPostCommands)
77+
</HelixPostCommands>
7278
</PropertyGroup>
7379

7480
<PropertyGroup Condition="!$(IsPosixShell)">
@@ -79,7 +85,12 @@
7985
<HelixPreCommands>$(HelixPreCommands);doskey xharness="dotnet exec %XHARNESS_CLI_PATH%"</HelixPreCommands>
8086

8187
<HelixPreCommands Condition=" '$(EnableXHarnessTelemetry)' == 'true' ">$(HelixPreCommands);set XHARNESS_DIAGNOSTICS_PATH=%HELIX_WORKITEM_ROOT%\diagnostics.json</HelixPreCommands>
82-
<HelixPostCommands Condition=" '$(EnableXHarnessTelemetry)' == 'true' ">"%HELIX_PYTHONPATH%" -u "%HELIX_WORKITEM_PAYLOAD%\xharness-event-processor.py";$(HelixPostCommands)</HelixPostCommands>
88+
89+
<HelixPostCommands Condition=" '$(EnableXHarnessTelemetry)' == 'true' ">
90+
%HELIX_PYTHONPATH% -m pip --disable-pip-version-check install setuptools;
91+
%HELIX_PYTHONPATH% -u "%HELIX_WORKITEM_PAYLOAD%\xharness-event-processor.py";
92+
$(HelixPostCommands)
93+
</HelixPostCommands>
8394
</PropertyGroup>
8495
</Target>
8596

0 commit comments

Comments
 (0)