Skip to content

Commit 48c6b03

Browse files
Fix packager
1 parent 17847a8 commit 48c6b03

File tree

2 files changed

+200
-7
lines changed

2 files changed

+200
-7
lines changed
Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
#!/bin/bash
2+
set -o xtrace
3+
4+
if [ ! -z "${manualversion}" ]; then
5+
6+
# manual-made release based on $manualversion
7+
ver=${manualversion}
8+
plain_ver=${ver}
9+
visiblever=${ver}
10+
[ -z "${REMOTE_URL}" ] && REMOTE_URL=https://github.com/earlephilhower/arduino-pico/releases/download
11+
12+
else
13+
14+
# Extract the release name from a release
15+
16+
# Default to draft tag name
17+
ver=$(basename $(jq -e -r '.ref' "$GITHUB_EVENT_PATH"))
18+
# If not available, try the publish tag name
19+
if [ "$ver" == "null" ]; then
20+
ver=$(jq -e -r '.release.tag_name' "$GITHUB_EVENT_PATH")
21+
fi
22+
# Fall back to the git description OTW (i.e. interactive)
23+
if [ "$ver" == "null" ]; then
24+
ver=$(git describe --tag)
25+
fi
26+
visiblever=$ver
27+
plainver=$ver
28+
29+
# Match 0.0.* as special-case early-access builds
30+
if [ "${ver%.*}" = 0.0 ]; then
31+
git tag -d ${ver}
32+
ver=`git describe --tag HEAD`
33+
plain_ver=$ver
34+
fi
35+
fi
36+
37+
set -e
38+
39+
package_name=rp2040-$visiblever
40+
echo "Version: $visiblever ($ver)"
41+
echo "Package name: $package_name"
42+
43+
# Set REMOTE_URL environment variable to the address where the package will be
44+
# available for download. This gets written into package json file.
45+
if [ -z "$REMOTE_URL" ]; then
46+
REMOTE_URL="http://localhost:8000"
47+
echo "REMOTE_URL not defined, using default"
48+
fi
49+
echo "Remote: $REMOTE_URL"
50+
51+
if [ -z "$PKG_URL" ]; then
52+
if [ -z "$PKG_URL_PREFIX" ]; then
53+
PKG_URL_PREFIX="$REMOTE_URL/$visiblever"
54+
fi
55+
PKG_URL="$PKG_URL_PREFIX/$package_name.zip"
56+
fi
57+
echo "Package: $PKG_URL"
58+
echo "Docs: $DOC_URL"
59+
60+
pushd ..
61+
# Create directory for the package
62+
outdir=package/versions/$visiblever/$package_name
63+
srcdir=$PWD
64+
rm -rf package/versions/$visiblever
65+
mkdir -p $outdir
66+
67+
# Some files should be excluded from the package
68+
cat << EOF > exclude.txt
69+
.git
70+
.gitignore
71+
.gitmodules
72+
.travis.yml
73+
package
74+
doc
75+
EOF
76+
# Also include all files which are ignored by git
77+
git ls-files --other --directory >> exclude.txt
78+
# Now copy files to $outdir
79+
rsync -a -L -K --exclude-from 'exclude.txt' $srcdir/ $outdir/
80+
mv $outdir/ArduinoCore-API/api $outdir/cores/rp2040/api
81+
rm -rf $outdir/ArduinoCore-API
82+
rm exclude.txt
83+
84+
# For compatibility, on OS X we need GNU sed which is usually called 'gsed'
85+
if [ "$(uname)" == "Darwin" ]; then
86+
SED=gsed
87+
else
88+
SED=sed
89+
fi
90+
91+
# Do some replacements in platform.txt file, which are required because IDE
92+
# handles tool paths differently when package is installed in hardware folder
93+
cat $srcdir/platform.txt | \
94+
$SED 's/^runtime.tools.pqt-.*.path=.*//g' | \
95+
$SED 's/^tools.uf2conv.cmd=.*//g' | \
96+
$SED 's/^#tools.uf2conv.cmd=/tools.uf2conf.cmd=/g' | \
97+
$SED "s/version=.*/version=$ver/g" |\
98+
$SED -E "s/name=([a-zA-Z0-9\ -]+).*/name=\1($ver)/g"\
99+
> $outdir/platform.txt
100+
101+
# Put core version and short hash of git version into core_version.h
102+
ver_define=`echo $plain_ver | tr "[:lower:].\055" "[:upper:]_"`
103+
echo Ver define: $ver_define
104+
echo \#define ARDUINO_RP2040_GIT_VER 0x`git rev-parse --short=8 HEAD 2>/dev/null` >$outdir/cores/rp2040/core_version.h
105+
echo \#define ARDUINO_RP2040_GIT_DESC `git describe --tags 2>/dev/null` >>$outdir/cores/rp2040/core_version.h
106+
echo \#define ARDUINO_RP2040_RELEASE_$ver_define >>$outdir/cores/rp2040/core_version.h
107+
echo \#define ARDUINO_RP2040_RELEASE \"$ver_define\" >>$outdir/cores/rp2040/core_version.h
108+
109+
$SED -i 's/"version": .*/"version": "'$visiblever'"/' $outdir/package.json
110+
111+
# Zip the package
112+
pushd package/versions/$visiblever
113+
echo "Making $package_name.zip"
114+
zip -qr $package_name.zip $package_name
115+
rm -rf $package_name
116+
117+
# Calculate SHA sum and size
118+
sha=`shasum -a 256 $package_name.zip | cut -f 1 -d ' '`
119+
size=`/bin/ls -l $package_name.zip | awk '{print $5}'`
120+
echo Size: $size
121+
echo SHA-256: $sha
122+
123+
echo "Making package_rp2040_index.json"
124+
125+
jq_arg=".packages[0].platforms[0].version = \"$visiblever\" | \
126+
.packages[0].platforms[0].url = \"$PKG_URL\" |\
127+
.packages[0].platforms[0].archiveFileName = \"$package_name.zip\""
128+
129+
if [ -z "$is_nightly" ]; then
130+
jq_arg="$jq_arg |\
131+
.packages[0].platforms[0].size = \"$size\" |\
132+
.packages[0].platforms[0].checksum = \"SHA-256:$sha\""
133+
fi
134+
135+
if [ ! -z "$DOC_URL" ]; then
136+
jq_arg="$jq_arg |\
137+
.packages[0].platforms[0].help.online = \"$DOC_URL\""
138+
fi
139+
140+
cat $srcdir/package/package_pico_index.template.json | \
141+
jq "$jq_arg" > package_rp2040_index.json
142+
143+
exit
144+
145+
# Use Github API token, if available
146+
curl_gh_token_arg=()
147+
if [ ! -z "$CI_GITHUB_API_KEY" ]; then
148+
curl_gh_token_arg=(-H "Authorization: token $CI_GITHUB_API_KEY")
149+
fi
150+
# Get previous release name
151+
curl --silent "${curl_gh_token_arg[@]}" https://api.github.com/repos/earlephilhower/arduino-pico/releases > releases.json
152+
# Previous final release (prerelase == false)
153+
prev_release=$(jq -r '. | map(select(.draft == false and .prerelease == false)) | sort_by(.created_at | - fromdateiso8601) | .[0].tag_name' releases.json)
154+
# Previous release (possibly a pre-release)
155+
prev_any_release=$(jq -r '. | map(select(.draft == false)) | sort_by(.created_at | - fromdateiso8601) | .[0].tag_name' releases.json)
156+
# Previous pre-release
157+
prev_pre_release=$(jq -r '. | map(select(.draft == false and .prerelease == true)) | sort_by(.created_at | - fromdateiso8601) | .[0].tag_name' releases.json)
158+
159+
echo "Previous release: $prev_release"
160+
echo "Previous (pre-?)release: $prev_any_release"
161+
echo "Previous pre-release: $prev_pre_release"
162+
163+
# Make all released versions available in one package (i.e. don't separate stable/staging versions)
164+
base_ver=$prev_any_release
165+
166+
# Download previous release
167+
echo "Downloading base package: $base_ver"
168+
old_json=package_rp2040_index_stable.json
169+
curl -L -o $old_json "https://github.com/earlephilhower/arduino-pico/releases/download/${base_ver}/package_rp2040_index.json"
170+
new_json=package_rp2040_index.json
171+
172+
set +e
173+
# Merge the old and new
174+
python3 ../../merge_packages.py $new_json $old_json > tmp
175+
176+
# additional json to merge (for experimental releases)
177+
echo "Additional json package files: ${MOREJSONPACKAGES}"
178+
for json in ${MOREJSONPACKAGES}; do
179+
if [ ! -z "$json" -a -r "$json" ]; then
180+
echo "- merging $json"
181+
python3 ../../merge_packages.py tmp $json > tmp2
182+
mv tmp2 tmp
183+
fi
184+
done
185+
186+
# Verify the JSON file can be read, fail if it's not OK
187+
set -e
188+
cat $new_json | jq empty
189+
190+
popd
191+
popd
192+
193+
echo "All done"

package/package_pico_index.template.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"packages": [
33
{
4-
"name": "Raspberry Pi Pico",
4+
"name": "rp2040",
55
"maintainer": "Earle F. Philhwoer, III",
66
"websiteURL": "https://github.com/earlephilhower/arduino-pico",
77
"email": "[email protected]",
@@ -11,7 +11,7 @@
1111
"platforms": [
1212
{
1313
"category": "Raspberry Pi Pico",
14-
"name": "rpipico",
14+
"name": "Raspberry Pi Pico/RP2040",
1515
"url": "",
1616
"version": "",
1717
"architecture": "rp2040",
@@ -23,27 +23,27 @@
2323
],
2424
"toolsDependencies": [
2525
{
26-
"packager": "efp3",
26+
"packager": "rp2040",
2727
"version": "1.0.1-base-3a57aed",
2828
"name": "pqt-gcc"
2929
},
3030
{
31-
"packager": "efp3",
31+
"packager": "rp2040",
3232
"version": "1.0.1-base-3a57aed",
3333
"name": "pqt-mklittlefs"
3434
},
3535
{
36-
"packager": "efp3",
36+
"packager": "rp2040",
3737
"version": "1.0.1-base-3a57aed",
3838
"name": "pqt-elf2uf2"
3939
},
4040
{
41-
"packager": "efp3",
41+
"packager": "rp2040",
4242
"version": "1.0.1-base-3a57aed",
4343
"name": "pqt-pioasm"
4444
},
4545
{
46-
"packager": "efp3",
46+
"packager": "rp2040",
4747
"version": "1.0.1-base-3a57aed",
4848
"name": "pqt-python3"
4949
}

0 commit comments

Comments
 (0)