From 4d3b16da38cf7806ebc247ce9c15f11b91ebcf19 Mon Sep 17 00:00:00 2001 From: Riku Viitanen Date: Fri, 8 Sep 2023 00:25:52 +0300 Subject: 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" } -- cgit v1.2.1 From 1bde6bb3c4b5433e7744521df775b69ae62ccc40 Mon Sep 17 00:00:00 2001 From: Riku Viitanen Date: Fri, 8 Sep 2023 01:03:32 +0300 Subject: 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") -- cgit v1.2.1 From c292e01b009405931f66adbf5c1c17377ef0a50c Mon Sep 17 00:00:00 2001 From: Riku Viitanen Date: Fri, 8 Sep 2023 20:42:15 +0300 Subject: Build for all pico board, not just the "original" Signed-off-by: Riku Viitanen --- config/git/revisions | 6 ++-- script/build/rp2040/serprog | 64 +++++++++++++++++++++++++++++++++++++++++++ script/build/rpi-pico/serprog | 52 ----------------------------------- 3 files changed, 67 insertions(+), 55 deletions(-) create mode 100755 script/build/rp2040/serprog delete mode 100755 script/build/rpi-pico/serprog 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/rp2040/serprog b/script/build/rp2040/serprog new file mode 100755 index 00000000..e265cc7a --- /dev/null +++ b/script/build/rp2040/serprog @@ -0,0 +1,64 @@ +#!/usr/bin/env sh + +# compile the serprog firmware for raspberry pi pico +# +# Copyright (C) 2023 Riku Viitanen +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +[ "x${DEBUG+set}" = 'xset' ] && set -v +set -u -e + +. "include/err.sh" + +serprog_release_dir=$(pwd)/bin/serprog_rp2040 +sdk_dir=$(pwd)/util-fw/rp2040/pico-sdk +src_dir=$(pwd)/util-fw/rp2040/pico-serprog + +main() +{ + printf "Compiling serprog firmware for Raspberry Pi Pico\n" + + [ -d "${src_dir}/" ] || ./update project repo rpi-pico-serprog \ + || err "fetch rpi-pico-serprog failed!\n" + mkdir -p "${serprog_release_dir}" || \ + err "can't create dir: ${serprog_release_dir}" + + 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 $@ diff --git a/script/build/rpi-pico/serprog b/script/build/rpi-pico/serprog deleted file mode 100755 index cd4ba84f..00000000 --- a/script/build/rpi-pico/serprog +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env sh - -# compile the serprog firmware for raspberry pi pico -# -# Copyright (C) 2023 Riku Viitanen -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -[ "x${DEBUG+set}" = 'xset' ] && set -v -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 - -main() -{ - printf "Compiling serprog firmware for Raspberry Pi Pico\n" - - [ -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" -} - -main $@ -- cgit v1.2.1 From 7b6fb958977f5d5f3f2c3ac91726efa7d72860f0 Mon Sep 17 00:00:00 2001 From: Riku Viitanen Date: Fri, 8 Sep 2023 20:43:47 +0300 Subject: 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" ] && \ -- cgit v1.2.1