summaryrefslogtreecommitdiffstats
path: root/rtems-release-sources
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2016-09-04 10:45:52 +1000
committerChris Johns <chrisj@rtems.org>2016-09-04 10:45:52 +1000
commit97cc04c881c7d4333803a2661fe8bb2b4c296a59 (patch)
tree6a59a126d6679e01167a59a88e2792764a0c1b57 /rtems-release-sources
downloadrtems-release-97cc04c881c7d4333803a2661fe8bb2b4c296a59.tar.bz2
Initial addition of the RTEMS releasing scripts.
Diffstat (limited to 'rtems-release-sources')
-rwxr-xr-xrtems-release-sources205
1 files changed, 205 insertions, 0 deletions
diff --git a/rtems-release-sources b/rtems-release-sources
new file mode 100755
index 0000000..6c4cdf8
--- /dev/null
+++ b/rtems-release-sources
@@ -0,0 +1,205 @@
+#! /bin/sh
+#
+# RTEMS Tools Project (http://www.rtems.org/)
+# Copyright 2015-2016 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.
+#
+
+#
+# The script collects the sources for all the tools.
+#
+
+echo "RTEMS Release Sources, v0.1"
+
+#
+# Stop on any error
+#
+set -e
+
+#
+# Keep the top where we start.
+#
+top=${PWD}
+
+#
+# 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 Jxf ../${prefix}.tar.xz"
+tar Jxf ../${prefix}.tar.xz
+
+#
+# Get the RSB to download the source we need to release. This is 100% os the
+# actual sourced used.
+#
+cd ${prefix}
+ cd rtems
+ mkdir sources
+ #
+ # 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.xz sources/
+ done
+
+ #
+ # Fetch the source for RTEMS tools.
+ #
+ 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}
+ #
+ # 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
+ #
+ # Clean out the packages we do not places in 'sources' we copied in..
+ #
+ for p in rtems-tools rtems
+ do
+ rm sources/${p}-${release}.tar.xz
+ done
+ cd ..
+ #
+ # Fetch the source for 3rd party packages tools.
+ #
+ cd bare
+ 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}
+ #
+ # If svn or cvs exist the release fails.
+ #
+ 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} | xz > ../../${prefix}.tar.xz
+ cd ..
+ done
+ cd ..
+ rm -rf git
+ cd ..
+ fi
+ cd ..
+ #
+ # Export the sources and patches.
+ #
+ rm -rf ${top}/${release}/sources
+ mkdir ${top}/${release}/sources
+ for p in rtems bare
+ do
+ cp ${p}/sources/* ${top}/${release}/sources/
+ cp ${p}/patches/* ${top}/${release}/sources/
+ done
+ cd ..
+
+cd ..
+rm -rf ${workspace}
+cd ..
+
+cd ${release}/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 ../..
+
+echo "Created: ${release}/sources/${checksum}sum.txt"
+echo "Created: ${release}/sources"
+
+exit 0