mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-08-08 00:06:59 +02:00
The test_util module is actually imported by some tools, e.g. binman so include it in the pip release. The patman tool uses its test code when starting up, so keep that too. Show a list of deleted files so it is clear what is happening. Signed-off-by: Simon Glass <sjg@chromium.org>
128 lines
2.9 KiB
Bash
Executable File
128 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0+
|
|
|
|
# Packages a U-Boot tool
|
|
#
|
|
# Usage: make_pip.sh <tool_name> [--real]
|
|
#
|
|
# Where tool_name is one of patman, buildman, dtoc, binman, u_boot_pylib
|
|
#
|
|
# and --real means to upload to the real server (otherwise the test one is used)
|
|
#
|
|
# The username for upload is always __token__ so set TWINE_PASSWORD to your
|
|
# password before running this script:
|
|
#
|
|
# export TWINE_PASSWORD=pypi-xxx
|
|
#
|
|
# To test your new packages:
|
|
#
|
|
# pip install -i https://test.pypi.org/simple/ <tool_name>
|
|
#
|
|
|
|
# DO NOT use patman or binman
|
|
|
|
set -xe
|
|
|
|
# Repo to upload to
|
|
repo="--repository testpypi"
|
|
|
|
# Non-empty to do the actual upload
|
|
upload=1
|
|
|
|
# Non-empty to delete files used for testing
|
|
delete_testfiles=1
|
|
|
|
tool="$1"
|
|
shift
|
|
flags="$*"
|
|
|
|
if [[ "${tool}" =~ ^(patman|buildman|dtoc|binman|u_boot_pylib)$ ]]; then
|
|
echo "Building dist package for tool ${tool}"
|
|
else
|
|
echo "Unknown tool ${tool}: use patman, buildman, dtoc or binman"
|
|
exit 1
|
|
fi
|
|
|
|
for flag in "${flags}"; do
|
|
if [ "${flag}" == "--real" ]; then
|
|
echo "Using real server"
|
|
repo=
|
|
fi
|
|
if [ "${flag}" == "-n" ]; then
|
|
echo "Doing dry run"
|
|
upload=
|
|
fi
|
|
done
|
|
|
|
if [ -n "${upload}" ]; then
|
|
if [ -z "${TWINE_PASSWORD}" ]; then
|
|
echo "Please set TWINE_PASSWORD to your password and retry"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [[ "${tool}" =~ ^(patman|u_boot_pylib)$ ]]; then
|
|
# Leave test_util.py and patman test files alone
|
|
delete_testfiles=
|
|
fi
|
|
|
|
# Create a temp dir to work in
|
|
dir=$(mktemp -d)
|
|
|
|
# Copy in some basic files
|
|
cp -v tools/${tool}/pyproject.toml ${dir}
|
|
cp -v Licenses/gpl-2.0.txt ${dir}/LICENSE
|
|
readme="tools/${tool}/README.*"
|
|
|
|
# Copy in the README, dropping some Sphinx constructs that PyPi doesn't like
|
|
cat ${readme} | sed -E 's/:(doc|ref):`.*`//; /sectionauthor/d; /toctree::/d' \
|
|
> ${dir}/$(basename ${readme})
|
|
|
|
# Copy the top-level Python and doc files
|
|
dest=${dir}/src/${tool}
|
|
mkdir -p ${dest}
|
|
cp -v tools/$tool/{*.py,*.rst} ${dest}
|
|
|
|
# Copy over the subdirectories, including any sub files. Drop any cache files
|
|
# and other such things
|
|
pushd tools/${tool}
|
|
for subdir in $(find . -maxdepth 1 -type d | \
|
|
grep -vE "(__pycache__|home|usr|scratch|\.$|pyproject)"); do
|
|
pathname="${dest}/${subdir}"
|
|
echo "Copy ${pathname}"
|
|
cp -a ${subdir} ${pathname}
|
|
done
|
|
popd
|
|
|
|
# Remove cache files that accidentally made it through
|
|
find ${dest} -name __pycache__ -type f -exec rm {} \;
|
|
find ${dest} -depth -name __pycache__ -exec rmdir 112 \;
|
|
|
|
# Remove test files
|
|
if [ -n "${delete_testfiles}" ]; then
|
|
rm -rfv ${dest}/*test*
|
|
fi
|
|
|
|
mkdir ${dir}/tests
|
|
cd ${dir}
|
|
|
|
# Make sure the tools are up to date
|
|
python3 -m pip install --upgrade build
|
|
python3 -m pip install --upgrade twine
|
|
|
|
# Build the PyPi package
|
|
python3 -m build
|
|
|
|
echo "Completed build of ${tool}"
|
|
|
|
# Use --skip-existing to work even if the version is already present
|
|
if [ -n "${upload}" ]; then
|
|
echo "Uploading from ${dir}"
|
|
python3 -m twine upload ${repo} -u __token__ dist/*
|
|
echo "Completed upload of ${tool}"
|
|
fi
|
|
|
|
rm -rf "${dir}"
|
|
|
|
echo -e "done\n\n"
|