You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
4.2 KiB
154 lines
4.2 KiB
#!/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}"
|
|
|