mirror of
https://github.com/clearlinux/mixer-tools.git
synced 2026-04-28 10:53:56 +00:00
21
.gitignore
vendored
Normal file
21
.gitignore
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
.clear-version
|
||||
.mix-version
|
||||
.mixer-repopath
|
||||
.repos/
|
||||
.yum-clear.conf
|
||||
.yum-mix.conf
|
||||
build/
|
||||
bundles
|
||||
repos/
|
||||
results/
|
||||
Makefile
|
||||
Makefile.in
|
||||
configure
|
||||
aclocal.m4
|
||||
autom4te.cache/
|
||||
config.log
|
||||
config.status
|
||||
install-sh
|
||||
missing
|
||||
mixer-tools-*.tar.xz
|
||||
swupd-server.log.*
|
||||
177
COPYING
Normal file
177
COPYING
Normal file
@@ -0,0 +1,177 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
20
Makefile.am
Normal file
20
Makefile.am
Normal file
@@ -0,0 +1,20 @@
|
||||
dist_bin_SCRIPTS = \
|
||||
add-rpms.sh \
|
||||
create-update.sh \
|
||||
build-chroots.sh \
|
||||
init-versions.sh \
|
||||
update-bundles.sh
|
||||
|
||||
configdir = $(datadir)/defaults/mixer
|
||||
dist_config_DATA = yum.conf.in
|
||||
EXTRA_DIST = COPYING
|
||||
|
||||
release:
|
||||
@git rev-parse v$(PACKAGE_VERSION) &> /dev/null; \
|
||||
if [ "$$?" -eq 0 ]; then \
|
||||
echo "Error: Release $(PACKAGE_VERSION) already exists."; \
|
||||
echo "Bump version in configure.ac before releasing."; \
|
||||
exit 1; \
|
||||
fi
|
||||
@git tag -a -m "Release $(PACKAGE_VERSION)" v$(PACKAGE_VERSION)
|
||||
@printf "\nNew release $(PACKAGE_VERSION) tagged!\n\n"
|
||||
1
README
Normal file
1
README
Normal file
@@ -0,0 +1 @@
|
||||
This project contains tooling for using the software update mixer.
|
||||
77
add-rpms.sh
Executable file
77
add-rpms.sh
Executable file
@@ -0,0 +1,77 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# No defaults set for now; we haven't decided on BKMs yet for adding RPMs to a
|
||||
# mix. For now, everything is done manually (create dir; add RPM(s) to it).
|
||||
REPODIR=
|
||||
RPMDIR=
|
||||
|
||||
function usage() {
|
||||
echo -n "Usage: $0"
|
||||
echo -n " [-h | --help]"
|
||||
echo -n " [-r <dir> | --rpmdir <dir>]"
|
||||
echo -n " [-d <dir> | --repodir <dir>]"
|
||||
echo
|
||||
echo
|
||||
echo -n "The -r value specifies the directory containing binary RPMs,"
|
||||
echo
|
||||
echo -n "and the -d value is the directory to use for the local repo."
|
||||
echo
|
||||
}
|
||||
|
||||
while [ "$1" != "" ]; do
|
||||
case "$1" in
|
||||
-r | --rpmdir )
|
||||
shift; RPMDIR="$1"
|
||||
;;
|
||||
-d | --repodir )
|
||||
shift; REPODIR="$1"
|
||||
;;
|
||||
-h | --help )
|
||||
usage; exit 1
|
||||
;;
|
||||
* )
|
||||
usage; exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ ! -d "$RPMDIR" ]; then
|
||||
echo "Path to directory containing must be specified with the -r option"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$REPODIR" ]; then
|
||||
echo "Path to local RPM repository must be specified with the -d option"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RPMS=$(find "$RPMDIR" -type f -name *.rpm)
|
||||
if [ -z "$RPMS" ]; then
|
||||
echo "No RPMS found. Exiting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set +e
|
||||
echo "$RPMS" | while read rpm; do
|
||||
ret=$(file "$rpm")
|
||||
echo "$ret" | grep --quiet ": RPM"
|
||||
if [[ $? -ne 0 ]] ; then
|
||||
echo "ERROR $rpm IS NOT VALID"
|
||||
else
|
||||
echo "Copying $rpm"
|
||||
cp "$rpm" "$REPODIR"
|
||||
fi
|
||||
done
|
||||
set -e
|
||||
|
||||
( cd "$REPODIR" ; if type createrepo_c 1>/dev/null 2>&1; then createrepo_c .; else createrepo .; fi );
|
||||
|
||||
# later scripts need to know to repo location
|
||||
echo "$REPODIR" > "$PWD/.mixer-repopath"
|
||||
|
||||
exit 0
|
||||
|
||||
# vi: ts=8 sw=2 sts=2 et tw=80
|
||||
14
autogen.sh
Executable file
14
autogen.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
autoreconf --force --install --symlink --warnings=all
|
||||
|
||||
args="\
|
||||
--prefix=/usr \
|
||||
--program-prefix=mixer-"
|
||||
|
||||
if test -z "${NOCONFIGURE}"; then
|
||||
./configure $args "$@"
|
||||
make clean
|
||||
fi
|
||||
68
build-chroots.sh
Executable file
68
build-chroots.sh
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/bin/bash
|
||||
|
||||
BUILDERSCRIPT="bundle-chroot-builder.py"
|
||||
CLRVER=$(cat "$PWD/.clear-version")
|
||||
MIXVER=$(cat "$PWD/.mix-version")
|
||||
|
||||
# FIXME: For now, only build chroots for the mix. In the future, when we run the
|
||||
# ABI checker and build_comp to catch additional problems compared to upstream
|
||||
# Clear, we will need to build vanilla Clear chroots as well.
|
||||
BUILDTYPE="mix"
|
||||
|
||||
# FIXME: LANG is set correctly as root user, but not otherwise.
|
||||
# Desperately needs a fix in Clear...
|
||||
export LANG="en_US.utf8"
|
||||
|
||||
unset http_proxy
|
||||
unset https_proxy
|
||||
|
||||
check_dep() {
|
||||
type $1 &> /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "$1 program not found... Unable to continue"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Check dependencies
|
||||
|
||||
# check_dep "abi-compliance-checker"
|
||||
# check_dep "bundle-chroot-builder"
|
||||
check_dep "cp"
|
||||
check_dep "hardlink"
|
||||
check_dep "m4"
|
||||
check_dep "rpm"
|
||||
check_dep "yum"
|
||||
|
||||
if [ ! -e "$PWD/yum.conf.in" ]; then
|
||||
cp /usr/share/defaults/mixer/yum.conf.in .
|
||||
fi
|
||||
|
||||
if [ "$BUILDTYPE" = "clear" ]; then
|
||||
m4 yum.conf.in > "$PWD/.yum-clear.conf"
|
||||
SWUPD_YUM_CONF="$PWD/.yum-clear.conf"
|
||||
BUILDVER=$CLRVER
|
||||
SWUPD_SERVER_STATE_DIR="$PWD/build/"
|
||||
elif [ "$BUILDTYPE" = "mix" ]; then
|
||||
if [ ! -f "$PWD/.mixer-repopath" ] ; then
|
||||
m4 yum.conf.in > "$PWD/.yum-mix.conf"
|
||||
else
|
||||
repopath=$(cat "$PWD/.mixer-repopath" | xargs realpath)
|
||||
m4 -D MIXER_REPO -D MIXER_REPOPATH="$repopath" yum.conf.in > "$PWD/.yum-mix.conf"
|
||||
fi
|
||||
SWUPD_YUM_CONF="$PWD/.yum-mix.conf"
|
||||
BUILDVER=$MIXVER
|
||||
SWUPD_SERVER_STATE_DIR="/var/lib/update/"
|
||||
fi
|
||||
|
||||
# if BUILDVER already exists wipe it so it's a fresh build
|
||||
if [ -d $SWUPD_SERVER_STATE_DIR/image/$BUILDVER ] ; then
|
||||
echo -e "Wiping away previous $BUILDVER...\n"
|
||||
sudo -E rm -rf "$SWUPD_SERVER_STATE_DIR/www/$BUILDVER"
|
||||
sudo -E rm -rf "$SWUPD_SERVER_STATE_DIR/image/$BUILDVER"
|
||||
fi
|
||||
|
||||
# if this is a mix, need to build with the Clear version, but publish the mix version
|
||||
sudo -E "$BUILDERSCRIPT" -m $BUILDVER $CLRVER
|
||||
|
||||
# vi: ts=8 sw=2 sts=2 et tw=80
|
||||
18
configure.ac
Normal file
18
configure.ac
Normal file
@@ -0,0 +1,18 @@
|
||||
AC_PREREQ([2.68])
|
||||
AC_INIT([mixer-tools],[1.00],[tudor.marcu@intel.com],[mixer-tools])
|
||||
AM_INIT_AUTOMAKE([foreign silent-rules color-tests no-dist-gzip dist-xz])
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
AC_PREFIX_DEFAULT(/usr/local)
|
||||
|
||||
PKG_PROG_PKG_CONFIG
|
||||
|
||||
AC_OUTPUT
|
||||
|
||||
AC_MSG_RESULT([
|
||||
mixer-tools $VERSION
|
||||
========
|
||||
|
||||
prefix: ${prefix}
|
||||
exec_prefix: ${exec_prefix}
|
||||
bindir: ${bindir}
|
||||
])
|
||||
38
create-update.sh
Executable file
38
create-update.sh
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
CLRVER=$(cat "$PWD/.clear-version")
|
||||
MIXVER=$(cat "$PWD/.mix-version")
|
||||
STATE_DIR=$(grep STATE_DIR "/usr/share/defaults/bundle-chroot-builder/builder.conf" | cut -d "=" -f2 | sed 's/ *//')
|
||||
if [ -z "$1" ]; then
|
||||
FORMAT="staging"
|
||||
else
|
||||
FORMAT=$1
|
||||
fi
|
||||
echo "format$FORMAT"
|
||||
|
||||
export BUNDLEREPO="$PWD/.repos/clr-bundles"
|
||||
|
||||
if [ ! -d "$STATE_DIR/www/version" ]; then
|
||||
mkdir -p "$STATE_DIR/www/version/formatstaging/"
|
||||
echo
|
||||
fi
|
||||
|
||||
# step 1: create update content for current mix
|
||||
sudo -E "swupd_create_update" -S "$STATE_DIR" --osversion $MIXVER
|
||||
|
||||
# step 2: create fullfiles
|
||||
sudo -E "swupd_make_fullfiles" -S "$STATE_DIR" $MIXVER
|
||||
|
||||
# step 3: create zero/delta packs
|
||||
for bundle in $(ls "$BUNDLEREPO/bundles/"); do
|
||||
sudo -E "swupd_make_pack" -S "$STATE_DIR" 0 $MIXVER $bundle
|
||||
done
|
||||
|
||||
# step 4: hardlink relevant dirs
|
||||
sudo -E "hardlink" -f "$STATE_DIR/image/$MIXVER"/*
|
||||
|
||||
# step 5: update latest version
|
||||
sudo cp "$PWD/.mix-version" "$STATE_DIR/image/latest.version"
|
||||
sudo cp "$PWD/.mix-version" "$STATE_DIR/www/version/format$FORMAT/latest"
|
||||
# vi: ts=8 sw=2 sts=2 et tw=80
|
||||
32
init-mix.sh
Executable file
32
init-mix.sh
Executable file
@@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
if [ -e /usr/lib/os-release ]; then
|
||||
CLRVER=$(awk -F= '/^VERSION_ID/ { print $2 }' /usr/lib/os-release)
|
||||
fi
|
||||
if [[ ! -z $1 ]]; then
|
||||
CLRVER=$1
|
||||
elif [[ -z $CLRVER ]]; then
|
||||
echo -e "Please supply Clear version to use\n"
|
||||
exit
|
||||
fi
|
||||
|
||||
echo -e "Creating initial update version 10\n"
|
||||
|
||||
sudo -E sh -c "mixer-init-versions.sh -m 10 -c $CLRVER"
|
||||
|
||||
sudo -E "mixer-update-bundles.sh"
|
||||
|
||||
echo -e "Initializing mix with bundles:\n* os-core\n* os-core-update\n"
|
||||
cd bundles/
|
||||
sudo -E rm -rf *
|
||||
sudo -E git checkout os-core os-core-update
|
||||
sudo -E git add .
|
||||
sudo -E git commit -s -m "Prune bundles for starting version 10"
|
||||
cd -
|
||||
|
||||
sudo -E "mixer-build-chroots.sh"
|
||||
|
||||
sudo -E "mixer-create-update.sh"
|
||||
# vi: ts=8 sw=2 sts=2 et tw=80
|
||||
84
init-versions.sh
Executable file
84
init-versions.sh
Executable file
@@ -0,0 +1,84 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
CLRVER=
|
||||
MIXVER=
|
||||
|
||||
if [ -e /usr/lib/os-release ]; then
|
||||
CLRVER=$(awk -F= '/^VERSION_ID/ { print $2 }' /usr/lib/os-release)
|
||||
fi
|
||||
|
||||
# For a vanilla system, default to "10" for the mix version, since "0" has
|
||||
# special meaning for SWUPD (zero packs, etc.). Otherwise, add 10 to the latest
|
||||
# mix version.
|
||||
if [ -d /var/lib/update/image ]; then
|
||||
versions=$(ls /var/lib/update/image/ | grep -E '^[0-9]+' | sort -n)
|
||||
if [ -n "$versions" ]; then
|
||||
latest=$(echo "$versions" | tail -1)
|
||||
MIXVER=$(expr $latest + 10)
|
||||
else
|
||||
MIXVER=10
|
||||
fi
|
||||
else
|
||||
MIXVER=10
|
||||
fi
|
||||
|
||||
usage() {
|
||||
echo -n "Usage: $0"
|
||||
echo -n " [-h | --help]"
|
||||
echo -n " [-c <ver> | --clear-version <ver>]"
|
||||
echo -n " [-m <ver> | --mix-version <ver>]"
|
||||
echo
|
||||
}
|
||||
|
||||
while [ "$1" != "" ]; do
|
||||
case "$1" in
|
||||
-c | --clear-version )
|
||||
shift; CLRVER="$1"
|
||||
;;
|
||||
-m | --mix-version )
|
||||
shift; MIXVER="$1"
|
||||
;;
|
||||
-h | --help )
|
||||
usage; exit 1
|
||||
;;
|
||||
* )
|
||||
usage; exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ -z "$CLRVER" ]; then
|
||||
echo "Please specify a Clear version with -c"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$MIXVER" ]; then
|
||||
echo "Please specify a mix version with -m"
|
||||
echo "The version must be >= 10, and a multiple of 10"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# CLRVER and MIXVER must only be positive integers that are multiples of 10
|
||||
regexp='^[0-9]+0$'
|
||||
if ! [[ "$CLRVER" =~ $regexp ]]; then
|
||||
echo "CLRVER must be a positive integer and a multiple of 10"
|
||||
exit 1
|
||||
fi
|
||||
if ! [[ "$MIXVER" =~ $regexp ]]; then
|
||||
echo "MIXVER must be a positive integer and a multiple of 10"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# used in other mixer scripts
|
||||
echo "$CLRVER" > "$PWD/.clear-version"
|
||||
echo "$MIXVER" > "$PWD/.mix-version"
|
||||
|
||||
echo "Initialized Clear version to $CLRVER"
|
||||
echo "Initialized mix version to $MIXVER"
|
||||
|
||||
exit 0
|
||||
|
||||
# vi: ts=8 sw=2 sts=2 et tw=80
|
||||
59
update-bundles.sh
Executable file
59
update-bundles.sh
Executable file
@@ -0,0 +1,59 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
CLRVER=$(cat "$PWD/.clear-version")
|
||||
GITREPODIR="$PWD/.repos"
|
||||
|
||||
update_repo() {
|
||||
local repo="$1"
|
||||
echo "Updating $repo repo..."
|
||||
(
|
||||
if [ ! -d "$repo" ]; then
|
||||
git clone https://github.com/clearlinux/"$repo"
|
||||
else
|
||||
cd "$repo"
|
||||
# to force the update of clr-bundles "latest" tag
|
||||
git fetch --tags
|
||||
git checkout master
|
||||
git pull
|
||||
cd -
|
||||
fi
|
||||
if [ "$repo" = "clr-bundles" ]; then
|
||||
cd "$repo"
|
||||
# make sure the correct tag is checked out
|
||||
git checkout $CLRVER
|
||||
|
||||
# Store mixer bundle modifications in a branch so that users can make
|
||||
# incremental changes over time. If rebasing on a new version of Clear, a
|
||||
# new branch is created, but the old branches remain, making it easier to
|
||||
# port bundle definitions.
|
||||
local branch="${CLRVER}_mix"
|
||||
set +e
|
||||
git rev-parse --verify "$branch"
|
||||
if [ $? -eq 0 ]; then
|
||||
git checkout "$branch"
|
||||
else
|
||||
git checkout -b "$branch"
|
||||
fi
|
||||
set -e
|
||||
cd -
|
||||
fi
|
||||
) &> /dev/null
|
||||
}
|
||||
|
||||
if [ ! -d "$GITREPODIR" ]; then
|
||||
mkdir "$GITREPODIR"
|
||||
fi
|
||||
|
||||
cd "$GITREPODIR"
|
||||
update_repo clr-bundles.git
|
||||
cd - > /dev/null
|
||||
|
||||
# For easy visibility of the available bundles, create a directory symlink to
|
||||
# the hidden repo location.
|
||||
ln -sf "$GITREPODIR"/clr-bundles/bundles bundles
|
||||
|
||||
exit 0
|
||||
|
||||
# vi: ts=8 sw=2 sts=2 et tw=80
|
||||
27
yum.conf.in
Normal file
27
yum.conf.in
Normal file
@@ -0,0 +1,27 @@
|
||||
[main]
|
||||
cachedir=/var/cache/yum/clear/
|
||||
keepcache=0
|
||||
debuglevel=2
|
||||
logfile=/var/log/yum.log
|
||||
exactarch=1
|
||||
obsoletes=1
|
||||
gpgcheck=0
|
||||
plugins=0
|
||||
installonly_limit=3
|
||||
reposdir=/root/mash
|
||||
|
||||
[clear]
|
||||
name=Clear
|
||||
failovermethod=priority
|
||||
baseurl=https://download.clearlinux.org/releases/$releasever/clear/x86_64/os/
|
||||
enabled=1
|
||||
gpgcheck=0
|
||||
|
||||
ifdef(`MIXER_REPO',`[local]
|
||||
name=Local
|
||||
failovermethod=priority
|
||||
baseurl=file://MIXER_REPOPATH
|
||||
enabled=1
|
||||
gpgcheck=0
|
||||
priority=1
|
||||
')
|
||||
Reference in New Issue
Block a user