#!/usr/bin/env sh # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2020,2021,2023 Leah Rowe [ "x${DEBUG+set}" = 'xset' ] && set -v set -u -e . "include/err.sh" trees_fetch_list="coreboot u-boot seabios" simple_fetch_list="flashrom grub memtest86plus me_cleaner uefitool" simple_fetch_list="${simple_fetch_list} bios_extract biosutilities" download_only_list="pico-serprog stm32-vserprog" dirlist="config util script include" linklist="update" # symlinks in main directory, to script: lbmk filelist="build README.md COPYING version versiondate projectname .gitignore" eval "$(setvars "" reldir dirname srcdir)" printf "Building source code archive, version %s\n" "${version}" main() { create_release_directory download_modules copy_files purge_files create_release_archive printf "Source code archive available at %s.tar.xz\n\n" "${srcdir}" } create_release_directory() { reldir="release/${version}" dirname="${projectname}-${version}_src" srcdir="${reldir}/${dirname}" xx_ mkdir -p "${reldir}" xx_ rm -Rf "${srcdir}" "${srcdir}.tar.xz" xx_ mkdir -p "${srcdir}" } download_modules() { for modname in ${trees_fetch_list}; do [ -d "src/${modname}" ] || xx_ ./update project trees ${modname} done for modname in ${simple_fetch_list} ${download_only_list}; do [ -d "src/${modname}/" ] || xx_ ./update project repo ${modname} done } copy_files() { xx_ cp -R "src" "${srcdir}/src" for dir in ${trees_fetch_list}; do xx_ rm -Rf "${srcdir}/src/${dir}/${dir}" done for dir in ${dirlist}; do xx_ cp -R "${dir}/" "${srcdir}/" done for i in ${filelist}; do [ -f "${i}" ] || fail "copy_files: '${i}' does not exist" xx_ cp "${i}" "${srcdir}/" done ( xx_ cd "${srcdir}/" for i in ${linklist}; do xx_ ln -s build "${i}" done ) } purge_files() { ( xx_ cd "${srcdir}" [ ! -d "src/coreboot/default/util/kbc1126" ] || \ xx_ ./update project build -c "src/coreboot/default/util/kbc1126" xx_ ./update project build -x coreboot for p in u-boot seabios coreboot; do xx_ ./update project build -c "${p}" done xx_ ./update project build -c bios_extract flashrom grub uefitool \ stm32-vserprog stm32-vserprog/libopencm3 util/* memtest86plus xx_ rm -Rf .git */.git* */*/.git* */*/*/.git* */*/*/*/.git* \ */*/*/*/*/.git* */*/*/*/*/*/.git* */*/*/*/*/*/*/.git* \ */*/*/*/*/*/*/*/.git* xx_ rm -Rf cbutils elf src/pico-serprog/build ) } create_release_archive() { ( xx_ cd "${reldir}/" xx_ tar -c "${dirname}/" | xz -T0 -9e >"${dirname}.tar.xz" xx_ rm -Rf "${dirname}/" ) } fail() { [ -z ${srcdir} ] || rm -Rf "${srcdir}" 1>/dev/null 2>/dev/null || : fail "${1}" } main $@