#! /bin/sh # # RTEMS Tools Project (http://www.rtems.org/) # Copyright 2015,2016,2019 Chris Johns (chrisj@rtems.org) # All rights reserved. # # This file is part of the RTEMS Tools package in 'rtems-tools'. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # set -e # # The script collects the sources for all the tools. # . ${release_top}/rtems-release-version echo "RTEMS Release Sources, v${rtems_release_version}" # # Defaults. # . ${release_top}/rtems-release-defaults # # The version and revision. # if [ $# -ne 2 ]; then echo "error: must be 2 arguments, the version, and release." exit 1 fi version=$1 revision=$2 package=rtems-source-builder release=${version}.${revision} prefix=${package}-${release} checksum=sha512 workspace=ws-${package} # # Source the source packages to package (haha) # . rtems-source-packages echo "Package: ${package}" echo "Release: ${release}" if [ ! -e ${release} ]; then mkdir ${release} else if [ ! -d ${release} ]; then echo "error: ${release} exists and is not a directory." exit 1 fi fi # # Work in a package specific directory in the release directory. # cd ${release} rm -rf ${workspace} mkdir ${workspace} cd ${workspace} echo "tar ${comp_tar}xf ../${prefix}.tar.${comp_ext}" tar ${comp_tar}xf ../${prefix}.tar.${comp_ext} # # Get the RSB to download the source we need to release. This is 100% of the # actual sourced used. # cd ${prefix} cd rtems export_source=rtems mkdir sources patches # # Copy in any source not present on the server. If these are not copied in # the RSB does not find them. # for p in rtems-tools rtems do cp ${top}/${release}/${p}-${release}.tar.${comp_ext} sources/ done # # Fetch the source for RTEMS tools. # if [ ${version} -lt 5 ]; then echo "../source-builder/sb-set-builder --dry-run --with-download " \ "--without-error-report --without-release-url " \ "${rtems_pkgs}" ../source-builder/sb-set-builder --dry-run --with-download \ --without-error-report \ --without-release-url \ ${rtems_pkgs} else echo "../source-builder/sb-get-sources ${rtems_pkgs}" ../source-builder/sb-get-sources ${rtems_pkgs} fi # # Remove the top level packages because they do not have a VERSION file. # # These packages may or will be referencing git so remove those as well. # for p in rtems-tools rtems do rm sources/${p}-${release}.tar.${comp_ext} rm -rf sources/git/${p}.git done # # Remove the git, svn or cvs directory if empty. # for d in git svn cvs do if [ -e sources/${d} ]; then find sources/${d} -type d -empty -delete fi done # # If git, svn or cvs exist the release fails. # if [ -d sources/git -o -d sources/svn -o -d sources/cvs ]; then echo "error: ${release} contains repositories and cannot be released." exit 1 fi cd .. # rtems # # Fetch the source for 3rd party packages tools. # if [ -n "${bare_pkgs}" -a "${bare_pkgs}" != "None" ]; then cd bare export_source="${export_source} bare" mkdir sources patches if [ ${version} -lt 5 ]; then echo "../source-builder/sb-set-builder --dry-run --with-download " \ "--without-error-report --without-release-url " \ "${bare_pkgs}" ../source-builder/sb-set-builder --dry-run --with-download \ --without-error-report \ --without-release-url \ ${bare_pkgs} else echo "../source-builder/sb-get-sources ${bare_pkgs}" ../source-builder/sb-get-sources ${bare_pkgs} fi # # Remove the git, svn or cvs directory if empty. # for d in git svn cvs do if [ -e sources/${d} ]; then find sources/${d} -type d -empty -delete fi done # # If svn or cvs exist the release fails. Git is ok. # if [ -d sources/svn -o -d sources/cvs ]; then echo "error: ${release} contains repositories and cannot be released." exit 1 fi # # If there are git repos create packages of them as they are. # if [ -d sources/git ]; then cd sources cd git for g in $(ls) do cd ${g} hash=$(git status | grep '^HEAD detached at ' | sed 's/^HEAD detached at //') prefix=$(echo ${g}-${hash} | sed 's/\./\-/') echo "Packaging GIT repo: ${g} to ${prefix}" git archive --format=tar --prefix=${prefix}/ ${hash} | \ ${comp} > ../../${prefix}.tar.${comp_ext} cd .. # ${g} done cd .. # git rm -rf git cd .. # source fi cd .. # ${bare} fi # # Export the sources and patches. # rm -rf ${top}/${release}/sources mkdir ${top}/${release}/sources for p in ${export_source} do cp ${p}/sources/* ${top}/${release}/sources/ cp ${p}/patches/* ${top}/${release}/sources/ done cd .. # ${prefix} cd .. # ${workspace} rm -rf ${workspace} # # Copy the stamped packages from the top level release directory to the # sources directory. The RSB requires all source be in the `sources` # directory under the release URL. # for p in rtems-tools rtems do cp ${p}-${release}.tar.${comp_ext} sources/${p}-${release}.tar.${comp_ext} done cd sources rm -f ${checksum}sum.txt for f in $(ls -1) do if [ ! -d ${f} ]; then csum=$(${checksum} -q ${f}) echo "${csum} ${f}" >> ${checksum}sum.txt fi done cd .. # sources cd .. # ${release} echo "Created: ${release}/sources/${checksum}sum.txt" echo "Created: ${release}/sources" exit 0