Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
arduino-pico
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
xpstem
arduino-pico
Commits
48c6b033
Commit
48c6b033
authored
Mar 21, 2021
by
Earle F. Philhower, III
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix packager
parent
17847a8f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
200 additions
and
7 deletions
+200
-7
package/build_boards_manager_package.sh
package/build_boards_manager_package.sh
+193
-0
package/package_pico_index.template.json
package/package_pico_index.template.json
+7
-7
No files found.
package/build_boards_manager_package.sh
0 → 100755
View file @
48c6b033
#!/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:].
\0
55"
"[: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"
package/package_pico_index.template.json
View file @
48c6b033
{
"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"
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment