tools/toCOPY/generate-local-repo.sh
Scott Little c3cb180ae0 generate-local-repo.sh bad ref to root.git
A previous de-branding update inadvertently included a
line intended for the de-branding of cgcs-root to root.
That portion of the debranding effort has been put on indefinite
hold as the 'repo' tool lacks critical features to ease the
transition.

This update reverts the one line change to it's prior state.

Closes-big: 1904908
Change-Id: Ie027d0eb4025611aaf086cfe38fa60535de2865d
Signed-off-by: Scott Little <scott.little@windriver.com>
2020-11-19 15:44:45 -05:00

155 lines
4.2 KiB
Bash
Executable File

#!/bin/bash
#
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (C) 2019 Intel Corporation
#
set -e
export SRC_BUILD_ENVIRONMENT="stx"
export ARCH="x86_64"
export PATH="${MY_REPO}/build-tools:${PATH}"
EXPORTS="$MY_WORKSPACE/export/mirrors/"
DISTRO="CentOS"
HEAD_FILE="${MY_REPO_ROOT_DIR}/.repo/projects/cgcs-root.git/HEAD"
STAT="$(stat -c %Y ${HEAD_FILE})"
TIMESTAMP=$(date -d @$(stat -c %Y ${HEAD_FILE}) +%Y-%m-%dT%H:%M:%S)
STD_PKG_DIR="${MY_WORKSPACE}/std/rpmbuild/RPMS"
RT_PKG_DIR="${MY_WORKSPACE}/rt/rpmbuild/RPMS"
RELEASE="$SRC_BUILD_ENVIRONMENT"
CACHE_DIR="$EXPORTS/$DISTRO/$RELEASE"
DEST_RPM_ROOT="${CACHE_DIR}/${ARCH}"
DEST_SRPM_ROOT="${CACHE_DIR}/Source"
DEST_RPM_ROOT_NEW="${DEST_RPM_ROOT}.new"
DEST_SRPM_ROOT_NEW="${DEST_SRPM_ROOT}.new"
DEST_RPM_ROOT_OLD="${DEST_RPM_ROOT}.old"
DEST_SRPM_ROOT_OLD="${DEST_SRPM_ROOT}.old"
DEST_RPM="${DEST_RPM_ROOT_NEW}/Packages"
DEST_SRPM="${DEST_SRPM_ROOT_NEW}/SPackages"
DEST_RPM_REPODATA="${DEST_RPM_ROOT_NEW}/repodata"
DEST_SRPM_REPODATA="${DEST_SRPM_ROOT_NEW}/repodata"
LOCAL_REPO_DIR="${MY_REPO}/local-repo"
LOCAL_CACHE_DIR="${LOCAL_REPO_DIR}/dependancy-cache"
LOCAL_CACHE_ORIGIN="${LOCAL_REPO_DIR}/origin"
ORIGIN="/import/mirrors/CentOS/${SRC_BUILD_ENVIRONMENT}/CentOS"
CREATEREPO=$(which createrepo_c)
if [ $? -ne 0 ]; then
CREATEREPO="createrepo"
fi
# Create directories
for d in "$DEST_RPM" "$DEST_SRPM" "$LOCAL_CACHE_DIR"; do
if [ ! -d "$d" ]; then
mkdir -p "$d"
fi
done
if [ ! -e "$LOCAL_CACHE_ORIGIN" ]; then
echo "$ORIGIN" > $LOCAL_CACHE_ORIGIN
ORIGIN_DIR="$ORIGIN"
else
ORIGIN_DIR=$(grep -v '^#' $LOCAL_CACHE_ORIGIN | head -n 1)
fi
if [ ! -d "$ORIGIN_DIR" ]; then
echo "ERROR: directory not found '$ORIGIN_DIR'"
exit -1
fi
# copy standard and rt build of binary packages
for f in $(find "$RT_PKG_DIR" "$STD_PKG_DIR" -name '*.rpm' \
| grep -v '[.]src[.]rpm'); do
ff="$(basename $f)"
echo "$ff"
cp "$f" "$DEST_RPM"
touch "${DEST_RPM}/${ff}" --date="$TIMESTAMP"
done
# Make a repo out of it
( cd "$DEST_RPM_ROOT_NEW"; $CREATEREPO $PWD; exit $? )
# copy standard and rt build of src.rpm packages
for f in $(find "$STD_PKG_DIR" "$RT_PKG_DIR" -name '*.src.rpm'); do
ff="$(basename $f)"
echo "$ff"
cp "$f" "$DEST_SRPM"
touch "${DEST_SRPM}/${ff}" --date="$TIMESTAMP"
done
# Make a repo out of it
( cd "$DEST_SRPM_ROOT_NEW"; $CREATEREPO $PWD; exit $? )
date > "${DEST_SRPM_ROOT_NEW}/last_updated"
date > "${DEST_RPM_ROOT_NEW}/last_updated"
# Rotate directories ... current becomes old, and new becomes current
if [ -d $DEST_RPM_ROOT ]; then
mv "$DEST_RPM_ROOT" "$DEST_RPM_ROOT_OLD"
fi
mv "$DEST_RPM_ROOT_NEW" "$DEST_RPM_ROOT"
rm -rf "$DEST_RPM_ROOT_OLD"
if [ -d "$DEST_SRPM_ROOT" ]; then
mv "$DEST_SRPM_ROOT" "$DEST_SRPM_ROOT_OLD"
fi
mv "$DEST_SRPM_ROOT_NEW" "$DEST_SRPM_ROOT"
rm -rf "$DEST_SRPM_ROOT_OLD"
# Update symlinks in local-repo
for d in $(find "$ORIGIN_DIR" -type d | tail -n +2); do
RELATIVE_DIR=$(echo $d | sed "s#^$ORIGIN_DIR/##")
if [ -d "${LOCAL_REPO_DIR}/${RELATIVE_DIR}" ]; then
rm -rf "${LOCAL_REPO_DIR}/${RELATIVE_DIR}/*"
fi
echo "mkdir -p $RELATIVE_DIR"
mkdir -p "${LOCAL_REPO_DIR}/${RELATIVE_DIR}"
done
for d in $(find "$ORIGIN_DIR" -type d | tail -n +2); do
for f in $(find $d -maxdepth 1 -type f); do
RELATIVE_FILE=$(echo $f | sed "s#^$ORIGIN_DIR/##")
if [ -e "${LOCAL_REPO_DIR}/${RELATIVE_FILE}" ]; then
rm -f "${LOCAL_REPO_DIR}/${RELATIVE_FILE}"
fi
ln -s "$f" "${LOCAL_REPO_DIR}/${RELATIVE_FILE}"
done
done
for d in $(find -L "$LOCAL_REPO_DIR" -type d -name repodata); do
pushd "${d}/.."
rm -rf repodata
if [ -f "comps.xml" ]; then
"$CREATEREPO" -g comps.xml "$PWD"
else
"$CREATEREPO" "$PWD"
fi
popd
done
# Recreate repodata
cd "$LOCAL_REPO_DIR"
for d in $(find -L . -type d -name repodata); do
pushd "${d}/.."
for c in $(ls -1 repodata/*comps*xml); do
mv -f "${c}" comps.xml
done
if [ -d "repodata" ]; then
rm -rf repodata
fi
if [ -f "comps.xml" ]; then
$CREATEREPO -g comps.xml "$PWD"
else
$CREATEREPO "$PWD"
fi
popd
done
# Update the dependancy_cache under local-repo
create_dependancy_cache.py --cache_dir "${LOCAL_CACHE_DIR}"