From 4d3b16da38cf7806ebc247ce9c15f11b91ebcf19 Mon Sep 17 00:00:00 2001 From: Riku Viitanen Date: Fri, 8 Sep 2023 00:25:52 +0300 Subject: [PATCH 1/4] Cleaner parent directory creation My previous patch b0rked memtest and others because when making sure their parent directory (the project root) exists, it would instead create the project directory (memtest86lus). The later move would then put the git repo inside that (memtest86plus/memtest86plus_123456). We just need to make sure we don't create the target directory itself. This way, there's no need to hardcode any project names. Tested by ./updating rpi-pico-serprog, memtest86plus, grub and seabios. Signed-off-by: Riku Viitanen --- script/update/project/repo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/script/update/project/repo b/script/update/project/repo index 24bd14ce..a5e8ef62 100755 --- a/script/update/project/repo +++ b/script/update/project/repo @@ -85,8 +85,8 @@ clone_project() [ ! -d "${location}" ] || \ rm -Rf "${location}" || \ fail "clone_project: Can't remove directory '${location}'" - [ "${name}" != "rpi-pico-serprog" ] || mkdir -p ${location%/*} || \ - fail "clone_project: cannot make directory for rpi-pico-serprog" + [ "${location}" = "${location%/*}" ] || mkdir -p ${location%/*} || \ + fail "clone_project: cannot make directory for ${name}" mv "${tmp_dir}" "${location}" || \ fail "clone_project: could not copy temp file to destination" } From 1bde6bb3c4b5433e7744521df775b69ae62ccc40 Mon Sep 17 00:00:00 2001 From: Riku Viitanen Date: Fri, 8 Sep 2023 01:03:32 +0300 Subject: [PATCH 2/4] Support multiple dependencies per project Signed-off-by: Riku Viitanen --- config/git/revisions | 2 +- script/update/project/repo | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/config/git/revisions b/config/git/revisions index df73647c..753a3c4c 100644 --- a/config/git/revisions +++ b/config/git/revisions @@ -80,7 +80,6 @@ rev: 6a7db34ff63345a7badec79ebea3aaef1712f374 loc: util-fw/pico-sdk url: https://github.com/raspberrypi/pico-sdk - depend: rpi-pico-tinyusb } {rpi-pico-tinyusb}{ @@ -95,4 +94,5 @@ url: https://codeberg.org/libreboot/pico-serprog bkup_url: https://notabug.org/libreboot/pico-serprog depend: rpi-pico-sdk + depend: rpi-pico-tinyusb } diff --git a/script/update/project/repo b/script/update/project/repo index a5e8ef62..0183bf43 100755 --- a/script/update/project/repo +++ b/script/update/project/repo @@ -33,8 +33,10 @@ main() verify_config clone_project - [ "${depend}" = "" ] || ./update project repo ${depend} || \ - fail "Cannot fetch dependency, ${depend}, for project, ${name}" + [ "${depend}" = "" ] || for d in ${depend} ; do + ./update project repo ${d} || \ + fail "Cannot fetch dependency, ${d}, for project, ${name}" + done rm -Rf "${tmp_dir}" || fail "cannot remove tmpdir, ${tmp_dir}" } @@ -54,7 +56,7 @@ read_config() bkup_url:*) bkup_url=${2} ;; depend:*) - depend=${2} ;; + depend="${depend} ${2} " ;; esac done << EOF $(eval "awk '${awkstr}' config/git/revisions") From c292e01b009405931f66adbf5c1c17377ef0a50c Mon Sep 17 00:00:00 2001 From: Riku Viitanen Date: Fri, 8 Sep 2023 20:42:15 +0300 Subject: [PATCH 3/4] Build for all pico board, not just the "original" Signed-off-by: Riku Viitanen --- config/git/revisions | 6 ++-- script/build/{rpi-pico => rp2040}/serprog | 42 +++++++++++++++-------- 2 files changed, 30 insertions(+), 18 deletions(-) rename script/build/{rpi-pico => rp2040}/serprog (61%) diff --git a/config/git/revisions b/config/git/revisions index 753a3c4c..e5001699 100644 --- a/config/git/revisions +++ b/config/git/revisions @@ -78,19 +78,19 @@ {rpi-pico-sdk}{ rev: 6a7db34ff63345a7badec79ebea3aaef1712f374 - loc: util-fw/pico-sdk + loc: util-fw/rp2040/pico-sdk url: https://github.com/raspberrypi/pico-sdk } {rpi-pico-tinyusb}{ rev: 86c416d4c0fb38432460b3e11b08b9de76941bf5 - loc: util-fw/pico-sdk/lib/tinyusb + loc: util-fw/rp2040/pico-sdk/lib/tinyusb url: https://github.com/hathach/tinyusb.git } {rpi-pico-serprog}{ rev: c8c16e9c11fe9e5b7230ff358f79de3f1951e1d9 - loc: util-fw/pico-serprog + loc: util-fw/rp2040/pico-serprog url: https://codeberg.org/libreboot/pico-serprog bkup_url: https://notabug.org/libreboot/pico-serprog depend: rpi-pico-sdk diff --git a/script/build/rpi-pico/serprog b/script/build/rp2040/serprog similarity index 61% rename from script/build/rpi-pico/serprog rename to script/build/rp2040/serprog index cd4ba84f..e265cc7a 100755 --- a/script/build/rpi-pico/serprog +++ b/script/build/rp2040/serprog @@ -23,9 +23,9 @@ set -u -e . "include/err.sh" -serprog_release_dir=bin/serprog -sdk_dir=$(pwd)/util-fw/pico-sdk -src_dir=$(pwd)/util-fw/pico-serprog +serprog_release_dir=$(pwd)/bin/serprog_rp2040 +sdk_dir=$(pwd)/util-fw/rp2040/pico-sdk +src_dir=$(pwd)/util-fw/rp2040/pico-serprog main() { @@ -33,20 +33,32 @@ main() [ -d "${src_dir}/" ] || ./update project repo rpi-pico-serprog \ || err "fetch rpi-pico-serprog failed!\n" - - ( - cd "${src_dir}" || err "can't cd to ${src_dir}" - cmake -DPICO_SDK_PATH="${sdk_dir}" . || \ - err "can't cmake ${sdk_dir}" - make clean - make - ) - mkdir -p "${serprog_release_dir}" || \ err "can't create dir: ${serprog_release_dir}" - mv "${src_dir}/pico_serprog.uf2" \ - "${serprog_release_dir}/rpi-pico-serprog.uf2" || \ - err "rpi-pico serprog build failed!\n" + + boards_dir=${sdk_dir}/src/boards/include/boards + + if [ $# -gt 0 ] ; then + buildrom "${1}" + else + basename -a -s .h ${boards_dir}/*.h | while read board ; do + [ "${board}" = "none" ] || buildrom ${board} + done + fi +} + +# buildrom +buildrom() +{ + board=${1} + (cd ${src_dir}; cmake -DPICO_BOARD="${board}" \ + -DPICO_SDK_PATH="${sdk_dir}" "${src_dir}" || \ + err "can't cmake ${src_dir}") + make -C ${src_dir} clean + make -C ${src_dir} + mv ${src_dir}/pico_serprog.uf2 \ + ${serprog_release_dir}/serprog_${board}.uf2 \ + || err "${board} serprog build failed!" } main $@ From 7b6fb958977f5d5f3f2c3ac91726efa7d72860f0 Mon Sep 17 00:00:00 2001 From: Riku Viitanen Date: Fri, 8 Sep 2023 20:43:47 +0300 Subject: [PATCH 4/4] Build pico-serprog binary release archive Signed-off-by: Riku Viitanen --- script/build/release/roms | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/script/build/release/roms b/script/build/release/roms index 500bdcfc..a56c43f5 100755 --- a/script/build/release/roms +++ b/script/build/release/roms @@ -43,6 +43,7 @@ main() init_check for romdir in bin/*; do + [ -d "${romdir}" ] || continue make_archive "${romdir}" done @@ -81,6 +82,16 @@ make_archive() err "make_archive: cannot create tmpdir" rm -Rf "${romdir}" || err "make_archive: can't remove tmpdir" target="${builddir##*/}" + + if [ ! -f "config/coreboot/${target}/target.cfg" ]; then + # No config, just make a tarball + tarball=release/${version}/roms/${target}_${version}.tar.xz + tar -c "${builddir}" | xz -6 > ${tarball} || \ + (rm ${tarball} + err "make_archive: cannot make \"${tarball}\"") + return 0 + fi + romdir="${romdir}/bin/${target}" mkdir -p "${romdir}" || \ err "make_archive: can't mkdir tmpdir" @@ -89,9 +100,6 @@ make_archive() echo ${target} - [ -f "config/coreboot/${target}/target.cfg" ] || \ - err "make_archive: ${target}: target.cfg is missing" - microcode_required="y" . "config/coreboot/${target}/target.cfg" if [ "${microcode_required}" != "y" ] && \