Fix packager

parent 17847a8f
#!/bin/bash
set -o xtrace
if [ ! -z "${manualversion}" ]; then
# manual-made release based on $manualversion
ver=${manualversion}
plain_ver=${ver}
visiblever=${ver}
[ -z "${REMOTE_URL}" ] && REMOTE_URL=https://github.com/earlephilhower/arduino-pico/releases/download
else
# Extract the release name from a release
# Default to draft tag name
ver=$(basename $(jq -e -r '.ref' "$GITHUB_EVENT_PATH"))
# If not available, try the publish tag name
if [ "$ver" == "null" ]; then
ver=$(jq -e -r '.release.tag_name' "$GITHUB_EVENT_PATH")
fi
# Fall back to the git description OTW (i.e. interactive)
if [ "$ver" == "null" ]; then
ver=$(git describe --tag)
fi
visiblever=$ver
plainver=$ver
# Match 0.0.* as special-case early-access builds
if [ "${ver%.*}" = 0.0 ]; then
git tag -d ${ver}
ver=`git describe --tag HEAD`
plain_ver=$ver
fi
fi
set -e
package_name=rp2040-$visiblever
echo "Version: $visiblever ($ver)"
echo "Package name: $package_name"
# Set REMOTE_URL environment variable to the address where the package will be
# available for download. This gets written into package json file.
if [ -z "$REMOTE_URL" ]; then
REMOTE_URL="http://localhost:8000"
echo "REMOTE_URL not defined, using default"
fi
echo "Remote: $REMOTE_URL"
if [ -z "$PKG_URL" ]; then
if [ -z "$PKG_URL_PREFIX" ]; then
PKG_URL_PREFIX="$REMOTE_URL/$visiblever"
fi
PKG_URL="$PKG_URL_PREFIX/$package_name.zip"
fi
echo "Package: $PKG_URL"
echo "Docs: $DOC_URL"
pushd ..
# Create directory for the package
outdir=package/versions/$visiblever/$package_name
srcdir=$PWD
rm -rf package/versions/$visiblever
mkdir -p $outdir
# Some files should be excluded from the package
cat << EOF > exclude.txt
.git
.gitignore
.gitmodules
.travis.yml
package
doc
EOF
# Also include all files which are ignored by git
git ls-files --other --directory >> exclude.txt
# Now copy files to $outdir
rsync -a -L -K --exclude-from 'exclude.txt' $srcdir/ $outdir/
mv $outdir/ArduinoCore-API/api $outdir/cores/rp2040/api
rm -rf $outdir/ArduinoCore-API
rm exclude.txt
# For compatibility, on OS X we need GNU sed which is usually called 'gsed'
if [ "$(uname)" == "Darwin" ]; then
SED=gsed
else
SED=sed
fi
# Do some replacements in platform.txt file, which are required because IDE
# handles tool paths differently when package is installed in hardware folder
cat $srcdir/platform.txt | \
$SED 's/^runtime.tools.pqt-.*.path=.*//g' | \
$SED 's/^tools.uf2conv.cmd=.*//g' | \
$SED 's/^#tools.uf2conv.cmd=/tools.uf2conf.cmd=/g' | \
$SED "s/version=.*/version=$ver/g" |\
$SED -E "s/name=([a-zA-Z0-9\ -]+).*/name=\1($ver)/g"\
> $outdir/platform.txt
# Put core version and short hash of git version into core_version.h
ver_define=`echo $plain_ver | tr "[:lower:].\055" "[:upper:]_"`
echo Ver define: $ver_define
echo \#define ARDUINO_RP2040_GIT_VER 0x`git rev-parse --short=8 HEAD 2>/dev/null` >$outdir/cores/rp2040/core_version.h
echo \#define ARDUINO_RP2040_GIT_DESC `git describe --tags 2>/dev/null` >>$outdir/cores/rp2040/core_version.h
echo \#define ARDUINO_RP2040_RELEASE_$ver_define >>$outdir/cores/rp2040/core_version.h
echo \#define ARDUINO_RP2040_RELEASE \"$ver_define\" >>$outdir/cores/rp2040/core_version.h
$SED -i 's/"version": .*/"version": "'$visiblever'"/' $outdir/package.json
# Zip the package
pushd package/versions/$visiblever
echo "Making $package_name.zip"
zip -qr $package_name.zip $package_name
rm -rf $package_name
# Calculate SHA sum and size
sha=`shasum -a 256 $package_name.zip | cut -f 1 -d ' '`
size=`/bin/ls -l $package_name.zip | awk '{print $5}'`
echo Size: $size
echo SHA-256: $sha
echo "Making package_rp2040_index.json"
jq_arg=".packages[0].platforms[0].version = \"$visiblever\" | \
.packages[0].platforms[0].url = \"$PKG_URL\" |\
.packages[0].platforms[0].archiveFileName = \"$package_name.zip\""
if [ -z "$is_nightly" ]; then
jq_arg="$jq_arg |\
.packages[0].platforms[0].size = \"$size\" |\
.packages[0].platforms[0].checksum = \"SHA-256:$sha\""
fi
if [ ! -z "$DOC_URL" ]; then
jq_arg="$jq_arg |\
.packages[0].platforms[0].help.online = \"$DOC_URL\""
fi
cat $srcdir/package/package_pico_index.template.json | \
jq "$jq_arg" > package_rp2040_index.json
exit
# Use Github API token, if available
curl_gh_token_arg=()
if [ ! -z "$CI_GITHUB_API_KEY" ]; then
curl_gh_token_arg=(-H "Authorization: token $CI_GITHUB_API_KEY")
fi
# Get previous release name
curl --silent "${curl_gh_token_arg[@]}" https://api.github.com/repos/earlephilhower/arduino-pico/releases > releases.json
# Previous final release (prerelase == false)
prev_release=$(jq -r '. | map(select(.draft == false and .prerelease == false)) | sort_by(.created_at | - fromdateiso8601) | .[0].tag_name' releases.json)
# Previous release (possibly a pre-release)
prev_any_release=$(jq -r '. | map(select(.draft == false)) | sort_by(.created_at | - fromdateiso8601) | .[0].tag_name' releases.json)
# Previous pre-release
prev_pre_release=$(jq -r '. | map(select(.draft == false and .prerelease == true)) | sort_by(.created_at | - fromdateiso8601) | .[0].tag_name' releases.json)
echo "Previous release: $prev_release"
echo "Previous (pre-?)release: $prev_any_release"
echo "Previous pre-release: $prev_pre_release"
# Make all released versions available in one package (i.e. don't separate stable/staging versions)
base_ver=$prev_any_release
# Download previous release
echo "Downloading base package: $base_ver"
old_json=package_rp2040_index_stable.json
curl -L -o $old_json "https://github.com/earlephilhower/arduino-pico/releases/download/${base_ver}/package_rp2040_index.json"
new_json=package_rp2040_index.json
set +e
# Merge the old and new
python3 ../../merge_packages.py $new_json $old_json > tmp
# additional json to merge (for experimental releases)
echo "Additional json package files: ${MOREJSONPACKAGES}"
for json in ${MOREJSONPACKAGES}; do
if [ ! -z "$json" -a -r "$json" ]; then
echo "- merging $json"
python3 ../../merge_packages.py tmp $json > tmp2
mv tmp2 tmp
fi
done
# Verify the JSON file can be read, fail if it's not OK
set -e
cat $new_json | jq empty
popd
popd
echo "All done"
{
"packages": [
{
"name": "Raspberry Pi Pico",
"name": "rp2040",
"maintainer": "Earle F. Philhwoer, III",
"websiteURL": "https://github.com/earlephilhower/arduino-pico",
"email": "earlephilhower@yahoo.com",
......@@ -11,7 +11,7 @@
"platforms": [
{
"category": "Raspberry Pi Pico",
"name": "rpipico",
"name": "Raspberry Pi Pico/RP2040",
"url": "",
"version": "",
"architecture": "rp2040",
......@@ -23,27 +23,27 @@
],
"toolsDependencies": [
{
"packager": "efp3",
"packager": "rp2040",
"version": "1.0.1-base-3a57aed",
"name": "pqt-gcc"
},
{
"packager": "efp3",
"packager": "rp2040",
"version": "1.0.1-base-3a57aed",
"name": "pqt-mklittlefs"
},
{
"packager": "efp3",
"packager": "rp2040",
"version": "1.0.1-base-3a57aed",
"name": "pqt-elf2uf2"
},
{
"packager": "efp3",
"packager": "rp2040",
"version": "1.0.1-base-3a57aed",
"name": "pqt-pioasm"
},
{
"packager": "efp3",
"packager": "rp2040",
"version": "1.0.1-base-3a57aed",
"name": "pqt-python3"
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment