mirror of
https://github.com/clearlinux/common.git
synced 2026-07-14 00:35:53 +00:00
Compare commits
141 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1eadce9aad | |||
| 6613644b9c | |||
| 93115e4073 | |||
| 12537cbfb0 | |||
| d397ee463a | |||
| dfe55331e6 | |||
| 0c69bfb9a9 | |||
| 689e48a2f7 | |||
| 82e334a93a | |||
| ab6c4a674f | |||
| 78de1a6a13 | |||
| 74e79ffea2 | |||
| bb21809c73 | |||
| e912d4e6ae | |||
| 340b6a74d4 | |||
| 2e8f9ef0ab | |||
| 4bdd1765c5 | |||
| 45f39671d6 | |||
| 1d46a683e0 | |||
| 41d2113b8a | |||
| 528cd77168 | |||
| 916ce142bb | |||
| e2a3b113f2 | |||
| 0acf617611 | |||
| 39aeb852fe | |||
| 0e7d7e336d | |||
| 2323c9924f | |||
| da1f1f7483 | |||
| 723a925ed8 | |||
| 7e9ee1949d | |||
| f0df3f7809 | |||
| 9f77c5b172 | |||
| 3c52bbd7d7 | |||
| 7203329212 | |||
| b76562fe35 | |||
| 657bf44505 | |||
| c0e4bbf18e | |||
| 38b5e792cd | |||
| 43a333f08f | |||
| 9985956b7c | |||
| 7a62e62b28 | |||
| 92977583a6 | |||
| b8d121260a | |||
| ace60d849e | |||
| a2759eca40 | |||
| 7d0977c785 | |||
| 9184a2fd62 | |||
| e80c6eb4bd | |||
| 5cf5fd71cb | |||
| 4b01a5a9cd | |||
| 4910ef0882 | |||
| 1518adace0 | |||
| ef0e792c3d | |||
| 1bb7b0c471 | |||
| 51dc7a7c24 | |||
| c8848dbdb2 | |||
| 92e045116a | |||
| 1f3475a1ef | |||
| f836786e2d | |||
| 7dc88fd01a | |||
| 250efaef8f | |||
| c6532c6759 | |||
| f1c85e3294 | |||
| f5abc3a8d3 | |||
| 74d5bc42f5 | |||
| d6cc120a3c | |||
| 71c1bd013f | |||
| aadbd40a21 | |||
| 60020aebcc | |||
| 3a00f7eda4 | |||
| 0470861400 | |||
| 4fac58a65e | |||
| 743041a30c | |||
| 59f9bb1f7a | |||
| 1e74d17500 | |||
| 6a7fac08d9 | |||
| 932c2236a7 | |||
| 6c92ce3160 | |||
| 3e2219c07e | |||
| f0d2523151 | |||
| de39e64e29 | |||
| 877fee6375 | |||
| e921a2a883 | |||
| e00c76846b | |||
| af2c0bea72 | |||
| b99b7e8c25 | |||
| 359d2a8379 | |||
| d828f3a3ce | |||
| 330876d190 | |||
| 3bf5f39687 | |||
| 71d9699bdd | |||
| ded920ccb3 | |||
| cc16065a09 | |||
| 45f2185a25 | |||
| 9ffc0b9640 | |||
| 98c5937801 | |||
| a50450212c | |||
| ab77a99a47 | |||
| 090bb77f92 | |||
| f2b7a30d12 | |||
| c26e27ce65 | |||
| 6fa010e10b | |||
| 173673b5c6 | |||
| eea34ccd7f | |||
| fa58b00fb7 | |||
| cd9b9c1319 | |||
| d22e4f985d | |||
| eb58950c17 | |||
| 8ff80b0be2 | |||
| 05634010e9 | |||
| f6442a0e7f | |||
| d6250a68cd | |||
| a0208a0509 | |||
| 7ff122463b | |||
| 08498361a4 | |||
| 1b8c8d250d | |||
| 4eccb104d5 | |||
| 4ac2b829d3 | |||
| 052fa48e83 | |||
| 382ed28176 | |||
| e695db8c80 | |||
| f12e7e48ea | |||
| f269683632 | |||
| a2c4413083 | |||
| cc6e70bb29 | |||
| f3989c0d5a | |||
| f697b227e8 | |||
| 01e548b268 | |||
| 128799fa02 | |||
| ad77e695dc | |||
| 8bf6c59e96 | |||
| ac3f1898f6 | |||
| 905b1d1c06 | |||
| e3b1adedd8 | |||
| ab142ead38 | |||
| a9982b4064 | |||
| 9f8869fdff | |||
| 9892e87aec | |||
| 100ad5965e | |||
| 61db58c057 | |||
| abe044ee0c |
+152
-79
@@ -4,22 +4,23 @@ all: build
|
|||||||
|
|
||||||
TOPLVL = ../..
|
TOPLVL = ../..
|
||||||
|
|
||||||
include $(TOPLVL)/projects/common/Makefile.functions
|
|
||||||
include $(TOPLVL)/projects/common/Makefile.config
|
include $(TOPLVL)/projects/common/Makefile.config
|
||||||
|
include $(TOPLVL)/projects/common/Makefile.shared
|
||||||
|
|
||||||
SHELL = /bin/bash
|
SHELL = /bin/bash
|
||||||
|
|
||||||
SPECFILE = $(addsuffix .spec, $(PKG_NAME))
|
SPECFILE = $(addsuffix .spec, $(PKG_NAME))
|
||||||
|
|
||||||
SRPMVERS = $(shell [ ! -f $(SPECFILE) ] || rpmspec -D '_vendor clr' --srpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}\n' $(SPECFILE))
|
SRPMVERS = $(shell [ ! -f $(SPECFILE) ] || rpmspec -D '_vendor clr' --srpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}\n' $(SPECFILE))
|
||||||
SRPMFILE = results/$(SRPMVERS).src.rpm
|
SRPMFILE = results/srpm/$(SRPMVERS).src.rpm
|
||||||
|
|
||||||
LATEST_RPMS = $(shell [ ! -s results/build.log ] || for r in `egrep 'Wrote.*/RPMS/.*.rpm' results/build.log | sed 's/.*\///'` ; do echo "results/$$r"; done)
|
LATEST_RPMS = $(shell [ ! -s results/logs/build.log ] || for r in `egrep 'Wrote.*/RPMS/.*.rpm' results/logs/build.log | sed 's/.*\///;s/.*debuginfo/debuginfo\/&/'` ; do echo "results/$$r"; done)
|
||||||
RPMS ?= $(LATEST_RPMS)
|
RPMS ?= $(LATEST_RPMS)
|
||||||
|
|
||||||
WITH_SUDO = $(shell cmp /usr/bin/mock /usr/sbin/mock &> /dev/null && echo sudo )
|
WITH_SUDO = $(shell cmp /usr/bin/mock /usr/sbin/mock &> /dev/null && echo sudo )
|
||||||
|
|
||||||
MOCK ?= $(WITH_SUDO) /usr/bin/mock -r clear
|
# MOCK_CONFIG_VAL is set in Makefile.shared
|
||||||
|
MOCK ?= $(WITH_SUDO) /usr/bin/mock -r $(MOCK_CONFIG_VAL) $(MOCK_OPTS)
|
||||||
|
|
||||||
ifneq ($(wildcard upstream),)
|
ifneq ($(wildcard upstream),)
|
||||||
__allsources := $(notdir $(strip $(shell cat upstream)))
|
__allsources := $(notdir $(strip $(shell cat upstream)))
|
||||||
@@ -87,20 +88,27 @@ prebuild-checks:
|
|||||||
#help files and rpms in the results directory of your package. If there
|
#help files and rpms in the results directory of your package. If there
|
||||||
#help are mutlple tar.gz files for a package, make will do make sources,
|
#help are mutlple tar.gz files for a package, make will do make sources,
|
||||||
#help which creates a src.rpm file from the spec file.
|
#help which creates a src.rpm file from the spec file.
|
||||||
|
#help Use MOCK_OPTS environment varible to pass down arbitrary mock options.
|
||||||
build: prebuild-checks configemail $(SPECFILE) upstream $(SRPMFILE)
|
build: prebuild-checks configemail $(SPECFILE) upstream $(SRPMFILE)
|
||||||
$(MOCK) $(SRPMFILE) --result=results/ --no-cleanup-after --uniqueext=$(PKG_NAME)
|
$(MOCK) $(SRPMFILE) --result=results/ --no-cleanup-after --uniqueext=$(PKG_NAME)
|
||||||
@perl $(TOPLVL)/projects/common/logcheck.pl results/build.log
|
mkdir -p results/logs results/debuginfo
|
||||||
@perl $(TOPLVL)/projects/common/count.pl results/build.log &> testresults
|
mv results/*.log results/logs
|
||||||
|
mv results/*-debuginfo*.rpm results/debuginfo/
|
||||||
|
@perl $(TOPLVL)/projects/common/logcheck.pl results/logs/build.log
|
||||||
|
@perl $(TOPLVL)/projects/common/count.pl results/logs/build.log &> testresults
|
||||||
@$(MAKE) checkblacklist
|
@$(MAKE) checkblacklist
|
||||||
|
|
||||||
#help build-nocheck: Same as 'make build', but do not run the package's test suite.
|
#help build-nocheck: Same as 'make build', but do not run the package's test suite.
|
||||||
build-nocheck: configemail $(SPECFILE) upstream $(SRPMFILE)
|
build-nocheck: configemail $(SPECFILE) upstream $(SRPMFILE)
|
||||||
$(MOCK) $(SRPMFILE) --nocheck --result=results/ --no-cleanup-after --uniqueext=$(PKG_NAME)
|
$(MOCK) $(SRPMFILE) --nocheck --result=results/ --no-cleanup-after --uniqueext=$(PKG_NAME)
|
||||||
@perl $(TOPLVL)/projects/common/logcheck.pl results/build.log
|
mkdir -p results/logs results/debuginfo
|
||||||
@perl $(TOPLVL)/projects/common/count.pl results/build.log &> testresults
|
mv results/*.log results/logs
|
||||||
|
mv results/*-debuginfo*.rpm results/debuginfo/
|
||||||
|
@perl $(TOPLVL)/projects/common/logcheck.pl results/logs/build.log
|
||||||
|
@perl $(TOPLVL)/projects/common/count.pl results/logs/build.log &> testresults
|
||||||
@$(MAKE) checkblacklist
|
@$(MAKE) checkblacklist
|
||||||
|
|
||||||
fmvpatches: results/build.log
|
fmvpatches: results/logs/build.log
|
||||||
@perl $(TOPLVL)/projects/common/fmvpatches.pl $(PKG_NAME)
|
@perl $(TOPLVL)/projects/common/fmvpatches.pl $(PKG_NAME)
|
||||||
|
|
||||||
#help rootshell: Puts you in a root shell at the top of your build root.
|
#help rootshell: Puts you in a root shell at the top of your build root.
|
||||||
@@ -113,21 +121,29 @@ shell:
|
|||||||
|
|
||||||
# Always rebuild the source rpm
|
# Always rebuild the source rpm
|
||||||
.PHONY: $(SRPMFILE)
|
.PHONY: $(SRPMFILE)
|
||||||
$(SRPMFILE): $(SPECFILE) $(__allsources)
|
$(SRPMFILE): $(SPECFILE) $(__allsources) localreponotice
|
||||||
@$(MAKE) spdxcheck
|
@$(MAKE) spdxcheck
|
||||||
$(MOCK) --buildsrpm --source=./ --spec=$(SPECFILE) --result=results/ --no-cleanup-after --uniqueext=$(PKG_NAME)
|
$(MOCK) --buildsrpm --source=./ --spec=$(SPECFILE) --result=results/srpm/ --no-cleanup-after --uniqueext=$(PKG_NAME)
|
||||||
|
|
||||||
# Do a git fetch and a git rebase rather than a git pull so aborting
|
# Do a git fetch and a git rebase to apply local commits on top of latest
|
||||||
# the git pull at a password prompt doesn't leave local changes stashed
|
# commits from the remote. A git fetch/rebase is used rather than a git pull so
|
||||||
# Do the the git status dance so we only apply a stash we create
|
# aborting the git pull at a password prompt doesn't leave local changes
|
||||||
|
# stashed. Do the git status dance so we only apply a stash we create. Note
|
||||||
|
# that a fetch/rebase is not attempted if the remote 'origin' is not
|
||||||
|
# initialized locally, or if the remote contains no commits.
|
||||||
pullrebase:
|
pullrebase:
|
||||||
if [ -z "$$SKIP_GIT" ] && [ -e .git ]; then \
|
@if [ -z "$$SKIP_GIT" ] && [ -e .git ]; then \
|
||||||
set -x ; \
|
if ! git rev-parse --verify --quiet origin/master > /dev/null; then \
|
||||||
|
echo "Remote not yet initialized. Continuing."; \
|
||||||
|
exit 0; \
|
||||||
|
fi; \
|
||||||
|
echo "Fetching origin"; \
|
||||||
git fetch; \
|
git fetch; \
|
||||||
if ! git rev-parse --verify --quiet FETCH_HEAD > /dev/null; then \
|
if ! git rev-parse --verify --quiet FETCH_HEAD > /dev/null; then \
|
||||||
echo "No commits exist in remote. Continuing."; \
|
echo "No commits exist in remote. Continuing."; \
|
||||||
exit 0; \
|
exit 0; \
|
||||||
fi; \
|
fi; \
|
||||||
|
echo "Rebasing to origin/master"; \
|
||||||
if git status --porcelain | grep -q '^.[^?]'; \
|
if git status --porcelain | grep -q '^.[^?]'; \
|
||||||
then \
|
then \
|
||||||
git stash save; \
|
git stash save; \
|
||||||
@@ -140,19 +156,28 @@ pullrebase:
|
|||||||
|
|
||||||
#help autospec: automatically generates a specfile. If there is
|
#help autospec: automatically generates a specfile. If there is
|
||||||
#help already a specfile, it will be overwritten. Several files used by
|
#help already a specfile, it will be overwritten. Several files used by
|
||||||
#help autospec will be created in the process. For more information, see
|
#help autospec will be created in the process.
|
||||||
#help the project at https://github.com/clearlinux/autospec
|
#help Use MOCK_OPTS environment varible to pass down arbitrary mock options
|
||||||
autospec: pullrebase
|
#help to autospec.
|
||||||
rm -f results/*src.rpm
|
#help For more information, see the project at https://github.com/clearlinux/autospec
|
||||||
|
autospec: pullrebase localreponotice
|
||||||
|
rm -f results/srpm/*src.rpm
|
||||||
@if [ -e $(SPECFILE) ] && ! grep -q "# Generated by: autospec.py" $(SPECFILE) ; then \
|
@if [ -e $(SPECFILE) ] && ! grep -q "# Generated by: autospec.py" $(SPECFILE) ; then \
|
||||||
echo "Specfile already exists and was not created by autospec.py! Aborting."; \
|
echo "Specfile already exists and was not created by autospec.py! Aborting."; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
@printf 'PKG_NAME := %s\nURL = %s\nARCHIVES = %s\n\ninclude ../common/Makefile.common\n' $(PKG_NAME) '$(firstword $(value NEWURL) $(value URL))' '$(value ARCHIVES)' > Makefile
|
@printf 'PKG_NAME := %s\nURL = %s\nARCHIVES = %s\n\ninclude ../common/Makefile.common\n' $(PKG_NAME) '$(firstword $(value NEWURL) $(value URL))' '$(value ARCHIVES)' > Makefile
|
||||||
python3 $(TOPLVL)/projects/autospec/autospec/autospec.py -t . --integrity \
|
python3 $(TOPLVL)/projects/autospec/autospec/autospec.py \
|
||||||
${NON_INTERACTIVE} --config "$(AUTOSPEC_CONF)" ${SKIP_GIT} \
|
--target . \
|
||||||
$(firstword $(NEWURL) $(URL)) --name $(PKG_NAME) ${CLEANUP} \
|
--integrity \
|
||||||
$${SETVERSION:+ -v $${SETVERSION}} -a $(ARCHIVES)
|
--config "$(AUTOSPEC_CONF)" \
|
||||||
|
--name $(PKG_NAME) \
|
||||||
|
--archives $(ARCHIVES) \
|
||||||
|
--mock-config $(MOCK_CONFIG_VAL) \
|
||||||
|
--mock-opts "$(MOCK_OPTS)" \
|
||||||
|
$${SETVERSION:+ --version $${SETVERSION}} \
|
||||||
|
${NON_INTERACTIVE} ${SKIP_GIT} ${CLEANUP} \
|
||||||
|
$(firstword $(NEWURL) $(URL));
|
||||||
@$(MAKE) spdxcheck
|
@$(MAKE) spdxcheck
|
||||||
@$(MAKE) checkblacklist
|
@$(MAKE) checkblacklist
|
||||||
@if [ -e update_changelog.sh ] && [ -z "$$SKIP_GIT" ] ; then \
|
@if [ -e update_changelog.sh ] && [ -z "$$SKIP_GIT" ] ; then \
|
||||||
@@ -189,30 +214,12 @@ bumpnogit:
|
|||||||
|
|
||||||
$(__missingsources): sources
|
$(__missingsources): sources
|
||||||
|
|
||||||
#help sources: If SOURCES_URL is defined, download required upstream source
|
# First argument is a Clear Linux build number (e.g. 22000)
|
||||||
#help files from that location. Otherwise, try to extract source files from the
|
define fetch-from-srpm
|
||||||
#help SRPM in the latest Clear Linux release, as specified by the LATEST_SRPMS
|
tmp=$$(mktemp -d -p "."); \
|
||||||
#help variable. This will run automatically, as a dependency. NOTE: A Koji
|
|
||||||
#help server can make use of this "make sources" command, since it lives in a
|
|
||||||
#help repo named "common". If you use this makefile in Koji, ensure
|
|
||||||
#help "make sources" continues to work for both remote and local builds, since
|
|
||||||
#help it is a prerequisite of several commands for building packages.
|
|
||||||
sources: upstream
|
|
||||||
ifneq ($(strip $(SOURCES_URL)),)
|
|
||||||
while read u; do \
|
|
||||||
case "$$u" in \
|
|
||||||
"") continue ;; \
|
|
||||||
*://*) n="$$u" ;; \
|
|
||||||
*) n="$(SOURCES_URL)/$$u" ;; \
|
|
||||||
esac; \
|
|
||||||
curl --fail --noproxy "*" "$$n" -o `basename "$$n"`; \
|
|
||||||
done < upstream
|
|
||||||
else
|
|
||||||
@tmp=$$(mktemp -d -p "."); \
|
|
||||||
srpm=$$(rpmspec --srpm -q --qf "%{NVR}.src.rpm\n" $(SPECFILE)); \
|
srpm=$$(rpmspec --srpm -q --qf "%{NVR}.src.rpm\n" $(SPECFILE)); \
|
||||||
if cd "$$tmp" && ! curl -f -L -O $(LATEST_SRPMS)/$$srpm; then \
|
if cd "$$tmp" && ! curl -s -S -f -L -O $(MIRROR_CURL_OPTS) $(DOWNLOAD_MIRROR)/releases/$(1)/clear/source/SRPMS/$$srpm; then \
|
||||||
echo "Failed to download $$srpm from latest Clear Linux release." >&2; \
|
echo "Failed to download $$srpm from Clear Linux release $(1)." >&2; \
|
||||||
echo "Run \"git pull\" and try again." >&2; \
|
|
||||||
cd .. && rm -rf "$$tmp"; \
|
cd .. && rm -rf "$$tmp"; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
@@ -220,14 +227,58 @@ else
|
|||||||
cd ..; \
|
cd ..; \
|
||||||
srclist=$$(rpmspec --srpm -q --qf "[%{SOURCE}\n]" $(SPECFILE)); \
|
srclist=$$(rpmspec --srpm -q --qf "[%{SOURCE}\n]" $(SPECFILE)); \
|
||||||
for s in $$srclist; do \
|
for s in $$srclist; do \
|
||||||
if ! mv "$$tmp"/$$s .; then \
|
if ! mv --no-clobber "$$tmp"/$$s .; then \
|
||||||
echo "Missing source file \"$$s\" in $${srpm}." >&2; \
|
echo "Missing source file \"$$s\" in $${srpm}." >&2; \
|
||||||
rm -rf "$$tmp"; \
|
rm -rf "$$tmp"; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
echo "Retrieved source file $$s ..."; \
|
echo "Retrieved source file $$s ..."; \
|
||||||
done; \
|
done; \
|
||||||
rm -rf "$$tmp";
|
rm -rf "$$tmp"
|
||||||
|
endef
|
||||||
|
|
||||||
|
#help sources: If SOURCES_URL is defined, download required upstream source files
|
||||||
|
#help from that location. Otherwise, try to download source files according to the
|
||||||
|
#help URLs listed in the spec file. If any of the source files fail to download,
|
||||||
|
#help check for the relevant SRPM from published releases of Clear Linux OS, and
|
||||||
|
#help extract the files if found. Note that SRPMs are taken from the DOWNLOAD_MIRROR
|
||||||
|
#help location. This will run automatically, as a dependency. NOTE: A Koji server can
|
||||||
|
#help make use of this "make sources" command, since it lives in a repo named
|
||||||
|
#help "common". If you use this makefile in Koji, ensure "make sources" continues to
|
||||||
|
#help work for both remote and local builds, since it is a prerequisite of several
|
||||||
|
#help commands for building packages.
|
||||||
|
ifneq ($(strip $(SOURCES_URL)),)
|
||||||
|
sources: upstream
|
||||||
|
while read u; do \
|
||||||
|
case "$$u" in \
|
||||||
|
"") continue ;; \
|
||||||
|
*://*) n="$$u" ;; \
|
||||||
|
*) n="$(SOURCES_URL)/$$u" ;; \
|
||||||
|
esac; \
|
||||||
|
if ! curl --fail -L -o `basename "$$n"` $(SOURCES_CURL_OPTS) "$$n"; then \
|
||||||
|
echo "Failed to download $$n"; \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
done < upstream
|
||||||
|
else
|
||||||
|
sources:
|
||||||
|
@$(MAKE) generateupstream; \
|
||||||
|
[ $$? -eq 0 ] && exit 0; \
|
||||||
|
nvr="$$(rpmspec --srpm -q --qf '%{NAME}\t%{VERSION}\t%{RELEASE}\n' $(SPECFILE))"; \
|
||||||
|
latest_builds=$$(git -C $(TOPLVL)/projects/common tag -l | sort -rn); \
|
||||||
|
for b in $$latest_builds; do \
|
||||||
|
url="$(DOWNLOAD_MIRROR)/releases/$$b/clear/source/package-sources"; \
|
||||||
|
echo "Checking for source files in build $$b ..."; \
|
||||||
|
if grep -q "$$nvr" <(curl -s -f -L $(MIRROR_CURL_OPTS) $$url); then \
|
||||||
|
$(call fetch-from-srpm,$$b); \
|
||||||
|
if [ $$? -eq 0 ]; then \
|
||||||
|
echo "Source files retrieved from build $$b"; \
|
||||||
|
exit 0; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
echo "Source files not found for package"; \
|
||||||
|
exit 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
prekoji-checks:
|
prekoji-checks:
|
||||||
@@ -241,8 +292,10 @@ koji: prekoji-checks kojidef
|
|||||||
@if ! git branch | grep -q -E '^\* master'; then \
|
@if ! git branch | grep -q -E '^\* master'; then \
|
||||||
echo "Error: Must be on the master branch to submit to koji" >&2; \
|
echo "Error: Must be on the master branch to submit to koji" >&2; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
if git rev-parse --verify --quiet origin/master > /dev/null; then \
|
||||||
|
git pull --rebase; \
|
||||||
fi
|
fi
|
||||||
git pull --rebase
|
|
||||||
git tag $(SRPMVERS)
|
git tag $(SRPMVERS)
|
||||||
git push origin master refs/tags/$(SRPMVERS)
|
git push origin master refs/tags/$(SRPMVERS)
|
||||||
$(KOJI_CMD) build $$KOJI_NOWAIT $(KOJI_TAG) $(PKG_BASE_URL)/$(PKG_NAME)?#$(SRPMVERS)
|
$(KOJI_CMD) build $$KOJI_NOWAIT $(KOJI_TAG) $(PKG_BASE_URL)/$(PKG_NAME)?#$(SRPMVERS)
|
||||||
@@ -270,33 +323,20 @@ rekoji-nowait:
|
|||||||
$(MAKE) KOJI_NOWAIT="--nowait --background" rekoji
|
$(MAKE) KOJI_NOWAIT="--nowait --background" rekoji
|
||||||
|
|
||||||
logcheck:
|
logcheck:
|
||||||
@perl $(TOPLVL)/projects/common/logcheck.pl results/build.log
|
@perl $(TOPLVL)/projects/common/logcheck.pl results/logs/build.log
|
||||||
|
|
||||||
$(TOPLVL)/repo:
|
$(TOPLVL)/repo:
|
||||||
@echo "Creating local RPM repository $(TOPLVL)/repo"
|
@echo "Creating local RPM repository $(TOPLVL)/repo"
|
||||||
mkdir $(TOPLVL)/repo
|
mkdir $(TOPLVL)/repo
|
||||||
|
$(MAKE) localrepocreate
|
||||||
|
|
||||||
#help repoadd: Creates a local Yum repository in the $(TOPLVL)/repo directory.
|
#help repoadd: Adds locally-built RPMs for this package to the local RPM
|
||||||
repoadd: results/build.log $(TOPLVL)/repo
|
#help repository. If this repository does not yet exist, it is created and
|
||||||
@if [ -z "`grep '^Wrote: .*$(shell basename $(SRPMFILE))$$' results/build.log`" ]; then \
|
#help enabled.
|
||||||
|
repoadd: results/logs/build.log $(TOPLVL)/repo
|
||||||
|
@if [ -z "`grep '^Wrote: .*$(shell basename $(SRPMFILE))$$' results/logs/build.log`" ]; then \
|
||||||
echo "You have not yet succesfully built this release yet"; exit 1; \
|
echo "You have not yet succesfully built this release yet"; exit 1; \
|
||||||
fi
|
fi
|
||||||
@if [ -f .repo-index ]; then \
|
|
||||||
echo "Cleaning old rpms:"; \
|
|
||||||
for r in `cat .repo-index`; do \
|
|
||||||
echo "-$$r"; \
|
|
||||||
rm $(TOPLVL)/repo/$$r; \
|
|
||||||
done; \
|
|
||||||
rm .repo-index; \
|
|
||||||
fi
|
|
||||||
for r in $(LATEST_RPMS); do echo "+$$r"; echo $$(basename $$r) >> .repo-index; cp $$r $(TOPLVL)/repo; done
|
|
||||||
( cd $(TOPLVL)/repo ; if type createrepo_c 1>/dev/null 2>&1; then createrepo_c .; else createrepo .; fi );
|
|
||||||
@cp $(TOPLVL)/projects/common/image-creator/yum.conf $(TOPLVL)/repo/.yum.conf
|
|
||||||
@printf "\n\n[local]\nname=Local\nfailovermethod=priority\nenabled=1\ngpgcheck=0\n" >> $(TOPLVL)/repo/.yum.conf
|
|
||||||
@printf "baseurl=file://$$(realpath $(TOPLVL))/repo/\n\n" >> $(TOPLVL)/repo/.yum.conf
|
|
||||||
|
|
||||||
#help repodel: Removes package from local Yum repository.
|
|
||||||
repodel:
|
|
||||||
@if [ -f .repo-index ]; then \
|
@if [ -f .repo-index ]; then \
|
||||||
echo "Cleaning old rpms:"; \
|
echo "Cleaning old rpms:"; \
|
||||||
for r in `cat .repo-index`; do \
|
for r in `cat .repo-index`; do \
|
||||||
@@ -305,6 +345,32 @@ repodel:
|
|||||||
done; \
|
done; \
|
||||||
rm .repo-index; \
|
rm .repo-index; \
|
||||||
fi
|
fi
|
||||||
|
for r in $(LATEST_RPMS); do echo "+$$r"; echo $$(basename $$r) >> .repo-index; cp $$r $(TOPLVL)/repo; done
|
||||||
|
$(MAKE) localrepocreate
|
||||||
|
$(call localrepoenable,${PM_CONF},${MOCK_CONF})
|
||||||
|
|
||||||
|
#help repodel: Removes RPMs from the local RPM repository that were
|
||||||
|
#help previously added by 'make repoadd' for this package.
|
||||||
|
repodel:
|
||||||
|
@if [ -f .repo-index ]; then \
|
||||||
|
echo "Cleaning old rpms:"; \
|
||||||
|
for r in `cat .repo-index`; do \
|
||||||
|
echo "-$$r"; \
|
||||||
|
rm -f $(TOPLVL)/repo/$$r; \
|
||||||
|
done; \
|
||||||
|
rm .repo-index; \
|
||||||
|
$(MAKE) localrepocreate; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
#help repoenable: Enables the local RPM repository for use with Yum/DNF and
|
||||||
|
#help Mock. If this repository does not yet exist, it is created.
|
||||||
|
repoenable: $(TOPLVL)/repo ; $(call localrepoenable,${PM_CONF},${MOCK_CONF})
|
||||||
|
|
||||||
|
#help repodisable: Disables the local RPM repository.
|
||||||
|
repodisable: localrepodisable ;
|
||||||
|
|
||||||
|
#help repostatus: Summarizes the local RPM repository status.
|
||||||
|
repostatus: localrepostatus ;
|
||||||
|
|
||||||
loop-up:
|
loop-up:
|
||||||
$(loopup)
|
$(loopup)
|
||||||
@@ -333,18 +399,25 @@ install:
|
|||||||
|
|
||||||
#help generateupstream: Run this rule to create or update the 'upstream' file
|
#help generateupstream: Run this rule to create or update the 'upstream' file
|
||||||
#help by downloading the upstream source tarballs listed in the spec file and
|
#help by downloading the upstream source tarballs listed in the spec file and
|
||||||
#help calculating their hashes. Autospec performs this step automatically, so ignore
|
#help calculating their hashes. Autospec performs this step automatically, so
|
||||||
#help it for packages managed with autospec.
|
#help ignore it for packages managed with autospec. Additional curl options
|
||||||
|
#help may be used for downloading the upstream source tarballs by defining the
|
||||||
|
#help CURL_OPTS variable for this rule.
|
||||||
generateupstream:
|
generateupstream:
|
||||||
@rm -f upstream
|
@[ -e upstream ] && mv upstream upstream.bak; \
|
||||||
@urls=$$(rpmspec -D '_vendor clr' -P $(SPECFILE) | grep Source | cut -d: -f2- | grep '://'); \
|
urls=$$(rpmspec -D '_vendor clr' -P $(SPECFILE) | sed -n "s|^Source[0-9]*[[:blank:]]*:[[:blank:]]*\(..*://..*\)$$|\1|p"); \
|
||||||
for url in $$urls; do \
|
for url in $$urls; do \
|
||||||
filename=$$(basename $$url); \
|
filename=$$(basename $$url); \
|
||||||
if [ ! -e $$filename ]; then \
|
if [ ! -e $$filename ]; then \
|
||||||
curl --fail -L -O $$url; \
|
if ! curl --fail -L -O $(CURL_OPTS) $$url; then \
|
||||||
fi; \
|
echo "Failed to download $$url"; \
|
||||||
echo $$(sha1sum $$filename | cut -d\ -f1)/$$filename >> upstream; \
|
[ -e upstream.bak ] && mv --no-clobber upstream.bak upstream; \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
echo $$(sha1sum $$filename | cut -d\ -f1)/$$filename >> upstream; \
|
||||||
done
|
done
|
||||||
|
@rm -f upstream.bak
|
||||||
@cat upstream
|
@cat upstream
|
||||||
|
|
||||||
#help drop-abandoned: Remove all unused patches from the git tree
|
#help drop-abandoned: Remove all unused patches from the git tree
|
||||||
|
|||||||
+14
-1
@@ -26,6 +26,9 @@ CGIT_BASE_URL =
|
|||||||
# Location of upstream tarball cache used by 'make build', 'make sources', etc.
|
# Location of upstream tarball cache used by 'make build', 'make sources', etc.
|
||||||
SOURCES_URL =
|
SOURCES_URL =
|
||||||
|
|
||||||
|
# Additional curl options to use when downloading files from SOURCES_URL
|
||||||
|
SOURCES_CURL_OPTS =
|
||||||
|
|
||||||
# Location where package repos are hosted.
|
# Location where package repos are hosted.
|
||||||
PKG_BASE_URL = https://github.com/clearlinux-pkgs
|
PKG_BASE_URL = https://github.com/clearlinux-pkgs
|
||||||
|
|
||||||
@@ -38,6 +41,9 @@ PROJ_PKGS = autospec clr-bundles common
|
|||||||
# Clear Linux download mirror to use
|
# Clear Linux download mirror to use
|
||||||
DOWNLOAD_MIRROR = https://cdn.download.clearlinux.org
|
DOWNLOAD_MIRROR = https://cdn.download.clearlinux.org
|
||||||
|
|
||||||
|
# Additional curl options to use when downloading files from DOWNLOAD_MIRROR
|
||||||
|
MIRROR_CURL_OPTS =
|
||||||
|
|
||||||
# Location of release content from latest Clear Linux release
|
# Location of release content from latest Clear Linux release
|
||||||
LATEST_RELEASE = $(DOWNLOAD_MIRROR)/current
|
LATEST_RELEASE = $(DOWNLOAD_MIRROR)/current
|
||||||
|
|
||||||
@@ -48,12 +54,19 @@ LATEST_SRPMS = $(LATEST_RELEASE)/source/SRPMS
|
|||||||
PACKAGES_FILE = $(TOPLVL)/projects/common/packages
|
PACKAGES_FILE = $(TOPLVL)/projects/common/packages
|
||||||
|
|
||||||
# Configuration file for autospec.
|
# Configuration file for autospec.
|
||||||
AUTOSPEC_CONF = $(TOPLVL)/projects/common/autospec.conf
|
AUTOSPEC_CONF = $(TOPLVL)/projects/common/conf/autospec.conf
|
||||||
|
|
||||||
# Set this variable to any non-empty value to use the package mappings stored
|
# Set this variable to any non-empty value to use the package mappings stored
|
||||||
# in "pkg-mapping" for cloning/pulling package repos.
|
# in "pkg-mapping" for cloning/pulling package repos.
|
||||||
USE_PACKAGE_MAPPING = yes
|
USE_PACKAGE_MAPPING = yes
|
||||||
|
|
||||||
|
# Package manager config file. Default to the in-tree copy of dnf.conf.
|
||||||
|
PM_CONF = $(TOPLVL)/projects/common/conf/dnf.conf
|
||||||
|
|
||||||
|
# Mock configuration file. Default to the in-tree copy.
|
||||||
|
MOCK_CONF = $(TOPLVL)/projects/common/conf/clear.cfg
|
||||||
|
|
||||||
|
|
||||||
# Include any site local configuration variables. These variables may override
|
# Include any site local configuration variables. These variables may override
|
||||||
# the definitions given above.
|
# the definitions given above.
|
||||||
-include $(TOPLVL)/projects/common/Makefile.config.site_local
|
-include $(TOPLVL)/projects/common/Makefile.config.site_local
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ define loopup
|
|||||||
@sudo partprobe /dev/loop$(DEVICE)
|
@sudo partprobe /dev/loop$(DEVICE)
|
||||||
@sleep 1
|
@sleep 1
|
||||||
@if [ -e /dev/loop$(DEVICE)p3 ]; then \
|
@if [ -e /dev/loop$(DEVICE)p3 ]; then \
|
||||||
sudo mount /dev/loop$(DEVICE)p3 $(TOPLVL)/image; \
|
sudo mount /dev/loop$(DEVICE)p3 $(TOPLVL)/image; \
|
||||||
else \
|
else \
|
||||||
sudo mount /dev/loop$(DEVICE)p2 $(TOPLVL)/image; \
|
sudo mount /dev/loop$(DEVICE)p2 $(TOPLVL)/image; \
|
||||||
fi
|
fi
|
||||||
@sudo mount /dev/loop$(DEVICE)p1 $(TOPLVL)/image/boot
|
@sudo mount /dev/loop$(DEVICE)p1 $(TOPLVL)/image/boot
|
||||||
endef
|
endef
|
||||||
@@ -62,6 +62,82 @@ define remotepkgname
|
|||||||
$(if $(USE_PACKAGE_MAPPING),$$(awk -v P="$(1)" '$$1 == P { res=$$2 } END { print res ? res : P }' $(TOPLVL)/projects/common/pkg-mapping),$(1))
|
$(if $(USE_PACKAGE_MAPPING),$$(awk -v P="$(1)" '$$1 == P { res=$$2 } END { print res ? res : P }' $(TOPLVL)/projects/common/pkg-mapping),$(1))
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
# Enables the local RPM repo by installing package manager and Mock configs.
|
||||||
|
# First argument is the path to the package manager config, and the second
|
||||||
|
# argument is the path to the mock config. Each of these config files is
|
||||||
|
# augmented for local repo support.
|
||||||
|
define localrepoenable
|
||||||
|
@cp $(1) $(TOPLVL)/repo/yum.conf
|
||||||
|
@printf "\n\n[local]\nname=Local\nfailovermethod=priority\nenabled=1\ngpgcheck=0\n" >> $(TOPLVL)/repo/yum.conf
|
||||||
|
@printf "baseurl=file://$$(realpath $(TOPLVL))/repo/\n\n" >> $(TOPLVL)/repo/yum.conf
|
||||||
|
@cp $(2) $(TOPLVL)/repo/clear.cfg
|
||||||
|
@printf "\n\n[localrepo]\nname=Local repo\nfailovermethod=priority\nenabled=1\ngpgcheck=0\n" >> $(TOPLVL)/repo/clear.cfg
|
||||||
|
@printf "baseurl=file://$$(realpath $(TOPLVL))/repo/\n\n" >> $(TOPLVL)/repo/clear.cfg
|
||||||
|
@sed -i '/^"""/d; $$a"""' $(TOPLVL)/repo/clear.cfg
|
||||||
|
endef
|
||||||
|
|
||||||
|
# Disables the local RPM repo by removing the installed package manager and
|
||||||
|
# Mock configuration files.
|
||||||
|
localrepodisable:
|
||||||
|
@rm -f $(TOPLVL)/repo/yum.conf
|
||||||
|
@rm -f $(TOPLVL)/repo/clear.cfg
|
||||||
|
|
||||||
|
# Runs createrepo_c (or createrepo) for the local RPM repo
|
||||||
|
localrepocreate:
|
||||||
|
( cd $(TOPLVL)/repo ; if type createrepo_c 1>/dev/null 2>&1; then createrepo_c .; else createrepo .; fi );
|
||||||
|
|
||||||
|
# Remove all RPMs from the local RPM repo
|
||||||
|
localrepoclean:
|
||||||
|
@find $(TOPLVL)/repo -maxdepth 1 -name '*.rpm' -delete
|
||||||
|
|
||||||
|
# Summarizes the local RPM repo status
|
||||||
|
localrepostatus:
|
||||||
|
@if [ ! -d $(TOPLVL)/repo ]; then \
|
||||||
|
echo '** Local repo not found'; \
|
||||||
|
exit 0; \
|
||||||
|
fi; \
|
||||||
|
if [ -f $(TOPLVL)/repo/yum.conf ]; then \
|
||||||
|
echo '** Local repo enabled for Yum/DNF.'; \
|
||||||
|
else \
|
||||||
|
echo '** Local repo not enabled for Yum/DNF.'; \
|
||||||
|
fi; \
|
||||||
|
if [ -f $(TOPLVL)/repo/clear.cfg ]; then \
|
||||||
|
echo '** Local repo enabled for Mock.'; \
|
||||||
|
else \
|
||||||
|
echo '** Local repo not enabled for Mock.'; \
|
||||||
|
fi; \
|
||||||
|
echo -n '** Local repo package list: '; \
|
||||||
|
( \
|
||||||
|
cd "$(TOPLVL)/repo"; \
|
||||||
|
LC_COLLATE="C"; \
|
||||||
|
shopt -s nullglob; \
|
||||||
|
set -- *.rpm; \
|
||||||
|
if [ -n "$$1" ]; then \
|
||||||
|
printf '\n'; printf '%q\n' "$$@"; \
|
||||||
|
else \
|
||||||
|
printf 'none found\n'; \
|
||||||
|
fi; \
|
||||||
|
)
|
||||||
|
|
||||||
|
# Detection of whether to use the local RPM repo occurs on-the-fly. Normally,
|
||||||
|
# variable definitions appear in Makefile.config, but these variables are not
|
||||||
|
# intended to be user-modifiable.
|
||||||
|
ifeq ($(wildcard $(TOPLVL)/repo/clear.cfg),)
|
||||||
|
MOCK_CONFIG_VAL = $(realpath $(MOCK_CONF))
|
||||||
|
else
|
||||||
|
MOCK_CONFIG_VAL = $(realpath $(TOPLVL)/repo/clear.cfg)
|
||||||
|
USE_LOCAL_REPO = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
localreponotice:
|
||||||
|
@if [ -n "${USE_LOCAL_REPO}" ]; then \
|
||||||
|
printf '\n\n** NOTICE: Using local repo for the build. Continuing after 3 seconds.\n'; \
|
||||||
|
printf '** If this is not desired, run `make repodisable`.\n'; \
|
||||||
|
printf '** The repo can be re-enabled later with `make repoenable`.\n'; \
|
||||||
|
printf '** Run `touch $(TOPLVL)/repo/opt-in-build` to prevent the 3 second delay.\n\n\n'; \
|
||||||
|
[ -f $(TOPLVL)/repo/opt-in-build ] || sleep 3; \
|
||||||
|
fi >&2
|
||||||
|
|
||||||
.PHONY: help
|
.PHONY: help
|
||||||
##### Code
|
##### Code
|
||||||
# Make sure that HELPSPACE has exactly HELPLEN spaces in it
|
# Make sure that HELPSPACE has exactly HELPLEN spaces in it
|
||||||
+51
-7
@@ -4,12 +4,13 @@ all: clone
|
|||||||
|
|
||||||
TOPLVL = .
|
TOPLVL = .
|
||||||
|
|
||||||
include $(TOPLVL)/projects/common/Makefile.functions
|
|
||||||
include $(TOPLVL)/projects/common/Makefile.config
|
include $(TOPLVL)/projects/common/Makefile.config
|
||||||
|
include $(TOPLVL)/projects/common/Makefile.shared
|
||||||
|
|
||||||
SHELL = /bin/bash
|
SHELL = /bin/bash
|
||||||
|
|
||||||
PKGS = $(shell cat $(PACKAGES_FILE))
|
PKGS = $(shell cat $(PACKAGES_FILE))
|
||||||
|
PKGS_LOCAL = $(sort $(filter ${PKGS},$(subst packages/,,$(wildcard packages/*))))
|
||||||
|
|
||||||
proj_PKGS = $(addprefix proj_,$(PROJ_PKGS))
|
proj_PKGS = $(addprefix proj_,$(PROJ_PKGS))
|
||||||
clone_PKGS = $(addprefix clone_,$(PKGS))
|
clone_PKGS = $(addprefix clone_,$(PKGS))
|
||||||
@@ -64,7 +65,7 @@ cvecheck:
|
|||||||
#help of merge commits, while displaying any changes since your last pull. It is
|
#help of merge commits, while displaying any changes since your last pull. It is
|
||||||
#help silent if there are no changes.
|
#help silent if there are no changes.
|
||||||
.PHONY: pull ${PULL_PKGS}
|
.PHONY: pull ${PULL_PKGS}
|
||||||
PULL_PKGS:= $(addprefix PULL_projects/,$(PROJ_PKGS)) $(addprefix PULL_packages/,$(PKGS))
|
PULL_PKGS:= $(addprefix PULL_projects/,$(PROJ_PKGS)) $(addprefix PULL_packages/,${PKGS_LOCAL})
|
||||||
${PULL_PKGS}:
|
${PULL_PKGS}:
|
||||||
@p=$(patsubst PULL_%,%,$@) ; \
|
@p=$(patsubst PULL_%,%,$@) ; \
|
||||||
if [ ! -d "$$p/.git" ]; then echo "Nothing to pull for $$p - $$p/.git missing"; exit 0; fi; \
|
if [ ! -d "$$p/.git" ]; then echo "Nothing to pull for $$p - $$p/.git missing"; exit 0; fi; \
|
||||||
@@ -80,7 +81,11 @@ ${PULL_PKGS}:
|
|||||||
fi ; \
|
fi ; \
|
||||||
git --no-pager log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit $$O..$$N; echo; \
|
git --no-pager log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit $$O..$$N; echo; \
|
||||||
fi ; \
|
fi ; \
|
||||||
$(call gitoliteurl,$$p); \
|
if [ "$$p" = "projects/autospec" ] ; then \
|
||||||
|
git remote set-url --push origin https://github.com/clearlinux/autospec.git; \
|
||||||
|
else \
|
||||||
|
$(call gitoliteurl,$$p); \
|
||||||
|
fi ; \
|
||||||
else \
|
else \
|
||||||
echo "$$p: no such remote 'origin'"; \
|
echo "$$p: no such remote 'origin'"; \
|
||||||
fi ; \
|
fi ; \
|
||||||
@@ -187,23 +192,62 @@ provides:
|
|||||||
|
|
||||||
#help autospecnew: Creates a new autospec package with for a given URL=$(URL)
|
#help autospecnew: Creates a new autospec package with for a given URL=$(URL)
|
||||||
#help with NAME=$(NAME). Several files used by autospec will be created in the
|
#help with NAME=$(NAME). Several files used by autospec will be created in the
|
||||||
#help process. For more information about autospec, see the project page on Github https://github.com/clearlinux/autospec
|
#help process.
|
||||||
autospecnew:
|
#help Use MOCK_OPTS environment varible to pass down arbitrary mock options
|
||||||
|
#help to autospec.
|
||||||
|
#help For more information about autospec, see the project page on Github https://github.com/clearlinux/autospec
|
||||||
|
autospecnew: localreponotice
|
||||||
@if [ -z $(NAME) ] || [ -z $(URL) ]; then \
|
@if [ -z $(NAME) ] || [ -z $(URL) ]; then \
|
||||||
echo "Please specify NAME and URL. The ARCHIVES variable is optional."; \
|
echo "Please specify NAME and URL. The ARCHIVES variable is optional."; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
@git clone $(PKG_BASE_URL)/$(NAME) $(TOPLVL)/packages/$(NAME) &> /dev/null || true
|
-$(MAKE) clone_$(NAME)
|
||||||
@if [ ! -d $(TOPLVL)/packages/$(NAME)/.git ]; then \
|
@if [ ! -d $(TOPLVL)/packages/$(NAME)/.git ]; then \
|
||||||
echo "no remote repository found, creating new package repository and running autospec"; \
|
echo "no remote repository found, creating new package repository and running autospec"; \
|
||||||
mkdir -p $(TOPLVL)/packages/$(NAME); \
|
mkdir -p $(TOPLVL)/packages/$(NAME); \
|
||||||
|
( \
|
||||||
|
cd $(TOPLVL)/packages/$(NAME); \
|
||||||
|
git init; \
|
||||||
|
git remote add origin $(PKG_BASE_URL)/$(NAME); \
|
||||||
|
$(call gitoliteurl,packages/$(NAME)); \
|
||||||
|
$(call subjectprefix,$(NAME)); \
|
||||||
|
); \
|
||||||
printf 'PKG_NAME := %s\nURL = %s\nARCHIVES = %s\n\ninclude ../common/Makefile.common\n' $(NAME) '$(value URL)' '$(value ARCHIVES)' > $(TOPLVL)/packages/$(NAME)/Makefile; \
|
printf 'PKG_NAME := %s\nURL = %s\nARCHIVES = %s\n\ninclude ../common/Makefile.common\n' $(NAME) '$(value URL)' '$(value ARCHIVES)' > $(TOPLVL)/packages/$(NAME)/Makefile; \
|
||||||
python3 $(TOPLVL)/projects/autospec/autospec/autospec.py --integrity -t packages/$(NAME) --config $(AUTOSPEC_CONF) $(URL) --name $(NAME); \
|
python3 $(TOPLVL)/projects/autospec/autospec/autospec.py \
|
||||||
|
--target packages/$(NAME) \
|
||||||
|
--integrity \
|
||||||
|
--config "$(AUTOSPEC_CONF)" \
|
||||||
|
--name $(NAME) \
|
||||||
|
--archives $(ARCHIVES) \
|
||||||
|
--mock-config $(MOCK_CONFIG_VAL) \
|
||||||
|
--mock-opts "$(MOCK_OPTS)" \
|
||||||
|
$${SETVERSION:+ --version $${SETVERSION}} \
|
||||||
|
${NON_INTERACTIVE} ${SKIP_GIT} ${CLEANUP} \
|
||||||
|
$(URL); \
|
||||||
$(TOPLVL)/projects/common/checkblacklist.sh $(TOPLVL)/projects/common/blacklist $(TOPLVL)/packages/${NAME}/results/*.rpm; \
|
$(TOPLVL)/projects/common/checkblacklist.sh $(TOPLVL)/projects/common/blacklist $(TOPLVL)/packages/${NAME}/results/*.rpm; \
|
||||||
else \
|
else \
|
||||||
echo "$(NAME) already exists at $(TOPLVL)/packages/$(NAME)"; \
|
echo "$(NAME) already exists at $(TOPLVL)/packages/$(NAME)"; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
$(TOPLVL)/repo:
|
||||||
|
@echo "Creating local RPM repository $(TOPLVL)/repo"
|
||||||
|
mkdir $(TOPLVL)/repo
|
||||||
|
$(MAKE) localrepocreate
|
||||||
|
|
||||||
|
#help repoenable: Enables the local RPM repository for use with Yum/DNF and
|
||||||
|
#help Mock. If this repository does not yet exist, it is created.
|
||||||
|
repoenable: $(TOPLVL)/repo ; $(call localrepoenable,${PM_CONF},${MOCK_CONF})
|
||||||
|
|
||||||
|
#help repodisable: Disables the local RPM repository.
|
||||||
|
repodisable: localrepodisable ;
|
||||||
|
|
||||||
|
#help repoclean: Removes all RPMs from the local RPM repository.
|
||||||
|
repoclean: localrepoclean localrepocreate ;
|
||||||
|
|
||||||
|
#help repostatus: Summarizes the local RPM repository status.
|
||||||
|
repostatus: localrepostatus ;
|
||||||
|
|
||||||
|
|
||||||
# Define site local toplevel targets in a separate makefile
|
# Define site local toplevel targets in a separate makefile
|
||||||
-include $(TOPLVL)/projects/common/Makefile.toplevel.site_local
|
-include $(TOPLVL)/projects/common/Makefile.toplevel.site_local
|
||||||
|
|||||||
@@ -31,43 +31,13 @@ $ ./user-setup.sh
|
|||||||
After the script completes, make sure to logout and login again to complete the
|
After the script completes, make sure to logout and login again to complete the
|
||||||
setup process.
|
setup process.
|
||||||
|
|
||||||
The script either accepts no options, or all (3) options in case you are
|
The script accepts several options, or no options at all. The options are
|
||||||
configuring the Koji CLI for remote building on a Koji server. The options are
|
documented in the script's `--help` output. Note that if you are supplying any
|
||||||
documented in the script's `--help` output.
|
of the three Koji cert options (`-k`, `-s`, or `-c`), the other two options
|
||||||
|
must be supplied as well.
|
||||||
|
|
||||||
### Manual setup
|
If you do not wish to run the user-setup script, see the "Manual setup" section
|
||||||
|
below for hints about how to initialize the tooling workspace.
|
||||||
On your Clear Linux system, create a workspace for Clear Linux development
|
|
||||||
work:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ mkdir clearlinux
|
|
||||||
```
|
|
||||||
|
|
||||||
Clone this repo into a `projects` directory within the workspace:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ cd clearlinux
|
|
||||||
$ mkdir projects
|
|
||||||
$ git clone https://github.com/clearlinux/common projects/common
|
|
||||||
```
|
|
||||||
|
|
||||||
Create the toplevel tooling Makefile:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ ln -s projects/common/Makefile.toplevel Makefile
|
|
||||||
```
|
|
||||||
|
|
||||||
Clone all Clear Linux package and project repositories:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ make clone
|
|
||||||
```
|
|
||||||
|
|
||||||
Note: You can clone the repos in parallel by using make's `-j` option.
|
|
||||||
|
|
||||||
At this point, the `packages` directory will contain all Clear Linux package
|
|
||||||
repos, and `projects` will contain common, clr-bundles, and autospec repos.
|
|
||||||
|
|
||||||
## Example usage
|
## Example usage
|
||||||
|
|
||||||
@@ -141,3 +111,66 @@ package, a `make bump` command is available for this purpose.
|
|||||||
$ make bump
|
$ make bump
|
||||||
$ make build
|
$ make build
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Other topics
|
||||||
|
|
||||||
|
### Customizing the mock config
|
||||||
|
|
||||||
|
In the past, the various make commands that call `mock` required a mock config
|
||||||
|
installed at `/etc/mock/clear.cfg`. However, at present, the commands will
|
||||||
|
instead use the mock config within this repo (`conf/clear.cfg`).
|
||||||
|
|
||||||
|
If you wish to use a custom mock config, you must override the `MOCK_CONF`
|
||||||
|
variable to specify a different value to pass to mock's `-r` option. The value
|
||||||
|
is either a full path that ends with `.cfg`, or a config NAME installed at
|
||||||
|
`/etc/mock/<NAME>.cfg`. You can override the `MOCK_CONF` config variable by
|
||||||
|
redefining it in `Makefile.config.site_local`, which must reside at the
|
||||||
|
toplevel directory in this repo.
|
||||||
|
|
||||||
|
For example, to retain the old behavior of mock using `/etc/mock/clear.cfg`,
|
||||||
|
add this line to `Makefile.config.site_local`:
|
||||||
|
|
||||||
|
```
|
||||||
|
MOCK_CONF = /etc/mock/clear.cfg
|
||||||
|
```
|
||||||
|
|
||||||
|
If `Makefile.config.site_local` doesn't exist already, create it.
|
||||||
|
|
||||||
|
### Manual setup
|
||||||
|
|
||||||
|
If you did not run the user-setup script (see "Automated setup" section above),
|
||||||
|
you will want to set up the developer tooling workspace manually. This section
|
||||||
|
provides general documentation for the manual setup process, and it is not
|
||||||
|
meant to be exhaustive.
|
||||||
|
|
||||||
|
On your Clear Linux system, create a workspace for Clear Linux development
|
||||||
|
work:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ mkdir clearlinux
|
||||||
|
```
|
||||||
|
|
||||||
|
Clone this repo into a `projects` directory within the workspace:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ cd clearlinux
|
||||||
|
$ mkdir projects
|
||||||
|
$ git clone https://github.com/clearlinux/common projects/common
|
||||||
|
```
|
||||||
|
|
||||||
|
Create the toplevel tooling Makefile:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ ln -s projects/common/Makefile.toplevel Makefile
|
||||||
|
```
|
||||||
|
|
||||||
|
Clone all Clear Linux package and project repositories:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ make clone
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: You can clone the repos in parallel by using make's `-j` option.
|
||||||
|
|
||||||
|
At this point, the `packages` directory will contain all Clear Linux package
|
||||||
|
repos, and `projects` will contain common, clr-bundles, and autospec repos.
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# Configuration files
|
||||||
|
|
||||||
|
This directory contains various configuration files used by the developer
|
||||||
|
tooling framework.
|
||||||
|
|
||||||
|
Unless otherwise noted in the config file documentation below, the config files
|
||||||
|
can be modified with custom, site-local changes by modifying a variable in
|
||||||
|
`Makefile.config.site_local` to point to a location of your choice (e.g.
|
||||||
|
somewhere in `/etc`). The framework will then read the config file from the
|
||||||
|
location you have specified instead, so copy the in-tree copy to that location
|
||||||
|
as a starting point if you need to.
|
||||||
|
|
||||||
|
* `autospec.conf`: default Autospec configuration file used by `make autospec`
|
||||||
|
and `make autospecnew`. All configuration is commented out by default, so
|
||||||
|
default Autospec settings are used. Config variable: `AUTOSPEC_CONF`
|
||||||
|
|
||||||
|
* `clear.cfg`: default Mock configuration file used by various targets that
|
||||||
|
call out to Mock. Config variable: `MOCK_CONF`
|
||||||
|
|
||||||
|
* `dnf.conf`: DNF conf for use as the package manager configuration file, made
|
||||||
|
available for the framework's local repo support. Config variable: `PM_CONF`
|
||||||
|
|
||||||
|
* `yum.conf`: YUM conf for use as the package manager configuration file, made
|
||||||
|
available for the framework's local repo support. Config variable: `PM_CONF`
|
||||||
|
|
||||||
|
* `koji.conf`: template Koji configuration file. It is installed by
|
||||||
|
`user-setup.sh` to `/etc/koji.conf`, and the in-tree copy is not used. If you
|
||||||
|
are using Koji with the framework, you will need to modify `/etc/koji.conf`
|
||||||
|
according to how the Koji instance is set up for your environment. Configuring
|
||||||
|
the installation location via `Makefile.config.site_local` is not possible at
|
||||||
|
the moment but is a planned feature.
|
||||||
@@ -18,6 +18,6 @@
|
|||||||
# an absolute path or a path relative to this autospec.conf.
|
# an absolute path or a path relative to this autospec.conf.
|
||||||
#packages_file =
|
#packages_file =
|
||||||
|
|
||||||
# Path to yum config, used for generating whatrequires. It can be an absolute
|
# Path to dnf/yum config, used for generating whatrequires. It can be an absolute
|
||||||
# path or a path relative to this autospec.conf.
|
# path or a path relative to this autospec.conf.
|
||||||
#yum_conf =
|
#yum_conf =
|
||||||
@@ -10,13 +10,14 @@ config_opts['releasever'] = 'clear'
|
|||||||
config_opts['package_manager'] = 'dnf'
|
config_opts['package_manager'] = 'dnf'
|
||||||
|
|
||||||
|
|
||||||
config_opts['yum.conf'] = """
|
config_opts['dnf.conf'] = """
|
||||||
|
|
||||||
[main]
|
[main]
|
||||||
cachedir=/var/cache/yum
|
cachedir=/var/cache/dnf
|
||||||
|
keepcache=1
|
||||||
debuglevel=1
|
debuglevel=1
|
||||||
reposdir=/dev/null
|
reposdir=/dev/null
|
||||||
logfile=/var/log/yum.log
|
logfile=/var/log/dnf.log
|
||||||
retries=20
|
retries=20
|
||||||
obsoletes=1
|
obsoletes=1
|
||||||
gpgcheck=0
|
gpgcheck=0
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
[main]
|
||||||
|
keepcache=1
|
||||||
|
debuglevel=1
|
||||||
|
logfile=/var/log/dnf.log
|
||||||
|
exactarch=1
|
||||||
|
obsoletes=1
|
||||||
|
gpgcheck=0
|
||||||
|
plugins=0
|
||||||
|
retries=10
|
||||||
|
installonly_limit=3
|
||||||
|
reposdir=/root/mash
|
||||||
|
|
||||||
|
[clear]
|
||||||
|
name=Clear
|
||||||
|
baseurl=https://cdn.download.clearlinux.org/current/x86_64/os/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=0
|
||||||
|
|
||||||
|
[clear-source]
|
||||||
|
name=Clear sources
|
||||||
|
failovermethod=priority
|
||||||
|
baseurl=https://cdn.download.clearlinux.org/current/source/SRPMS/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=0
|
||||||
+1
-1
@@ -82,7 +82,7 @@ sub find_file {
|
|||||||
return $file;
|
return $file;
|
||||||
}
|
}
|
||||||
|
|
||||||
open(BUILD_LOG, '<', "results/build.log") or die $!;
|
open(BUILD_LOG, '<', "results/logs/build.log") or die $!;
|
||||||
while (<BUILD_LOG>) {
|
while (<BUILD_LOG>) {
|
||||||
if($_ =~ /(\S+):([0-9]*):([0-9]*): note: (basic block|loop) (vectorized)/) {
|
if($_ =~ /(\S+):([0-9]*):([0-9]*): note: (basic block|loop) (vectorized)/) {
|
||||||
$fmv->{s_name} = (split('/',$1))[-1];
|
$fmv->{s_name} = (split('/',$1))[-1];
|
||||||
|
|||||||
+1
-1
@@ -23,7 +23,7 @@ if [ "$#" -eq 0 ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -e /etc/yum.conf ]; then
|
if [ ! -e /etc/yum.conf ]; then
|
||||||
echo "Error: yum.conf is missing. Please copy projects/common/image-creator/yum.conf to /etc"
|
echo "Error: yum.conf is missing. Please copy projects/common/conf/yum.conf to /etc"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Regular → Executable
+1
@@ -54,4 +54,5 @@ qemu-system-x86_64 \
|
|||||||
-drive file="$IMAGE",if=virtio,aio=threads,format=raw \
|
-drive file="$IMAGE",if=virtio,aio=threads,format=raw \
|
||||||
-netdev user,id=mynet0,hostfwd=tcp::${VMN}0022-:22,hostfwd=tcp::${VMN}2375-:2375 \
|
-netdev user,id=mynet0,hostfwd=tcp::${VMN}0022-:22,hostfwd=tcp::${VMN}2375-:2375 \
|
||||||
-device virtio-net-pci,netdev=mynet0 \
|
-device virtio-net-pci,netdev=mynet0 \
|
||||||
|
-device virtio-rng-pci \
|
||||||
-debugcon file:debug.log -global isa-debugcon.iobase=0x402 $@
|
-debugcon file:debug.log -global isa-debugcon.iobase=0x402 $@
|
||||||
+134
-101
@@ -1,102 +1,131 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
SCRIPT=$(/usr/bin/basename $0)
|
SCRIPT=$(/usr/bin/basename $0)
|
||||||
PEM=""
|
PEM=""
|
||||||
SERVERCA=""
|
SERVERCA=""
|
||||||
CLIENTCA=""
|
CLIENTCA=""
|
||||||
|
WORKSPACE="clearlinux"
|
||||||
|
PACKAGE_REPOS=
|
||||||
|
|
||||||
help() {
|
help() {
|
||||||
printf "%s\n" >&2 "Usage: $SCRIPT [options]" \
|
printf "%s\n" >&2 "Usage: $SCRIPT [options]" \
|
||||||
"" \
|
"" \
|
||||||
"Options:" \
|
"Options:" \
|
||||||
"-k --client-cert PEM_FILE: Enable client user cert for koji configuration; requires a PEM file argument" \
|
"" \
|
||||||
"-s --server-ca PEM_FILE: Enable server CA cert for koji configuration; requires a PEM file argument" \
|
"-d --directory NAME: Set up workspace in the given directory." \
|
||||||
"-c --client-ca PEM_FILE: Enable client CA cert for koji configuration; requires a PEM file argument" \
|
"-a --clone-packages: Clone all package repos." \
|
||||||
""
|
"-j --jobs [NUM]: Clone repos with NUM jobs. If NUM is not given, it is set to the available CPU count." \
|
||||||
|
"" \
|
||||||
|
"-k --client-cert PEM_FILE: Enable client user cert for koji configuration; requires a PEM file argument" \
|
||||||
|
"-s --server-ca PEM_FILE: Enable server CA cert for koji configuration; requires a PEM file argument" \
|
||||||
|
"-c --client-ca PEM_FILE: Enable client CA cert for koji configuration; requires a PEM file argument" \
|
||||||
|
""
|
||||||
|
}
|
||||||
|
|
||||||
|
error() {
|
||||||
|
echo -e "Error: $1\n" >&2
|
||||||
|
help
|
||||||
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
"--help"|"-h")
|
"--help"|"-h")
|
||||||
help
|
help
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
"--client-cert"|"-k")
|
"--client-cert"|"-k")
|
||||||
shift
|
shift
|
||||||
PEM="$PWD/$1"
|
PEM="$(realpath $1)"
|
||||||
;;
|
;;
|
||||||
"--server-ca"|"-s")
|
"--server-ca"|"-s")
|
||||||
shift
|
shift
|
||||||
SERVERCA="$PWD/$1"
|
SERVERCA="$(realpath $1)"
|
||||||
;;
|
;;
|
||||||
"--client-ca"|"-c")
|
"--client-ca"|"-c")
|
||||||
shift
|
shift
|
||||||
CLIENTCA="$PWD/$1"
|
CLIENTCA="$(realpath $1)"
|
||||||
;;
|
;;
|
||||||
*)
|
"--jobs"|"-j")
|
||||||
help
|
if echo "$2" | grep -qx "[1-9][0-9]*"; then
|
||||||
exit 1
|
shift
|
||||||
;;
|
JOBS="$1"
|
||||||
esac
|
elif [ -f /proc/cpuinfo ]; then
|
||||||
shift
|
JOBS=$(grep -Ec '^processor.*:.*[0-9]+$' /proc/cpuinfo)
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"--directory"|"-d")
|
||||||
|
[ -z "$2" ] && error "Must supply a directory name to the -d option"
|
||||||
|
[ "${2:0:1}" = "-" ] && error "Directory name cannot begin with \"-\""
|
||||||
|
shift
|
||||||
|
WORKSPACE="$1"
|
||||||
|
;;
|
||||||
|
"--clone-packages"|"-a")
|
||||||
|
PACKAGE_REPOS=1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
error() {
|
|
||||||
echo -e "Error: $1\n" >&2
|
|
||||||
help
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -z "$PEM" ] && [ -z "$SERVERCA" ] && [ -z "$CLIENTCA" ]; then
|
if [ -z "$PEM" ] && [ -z "$SERVERCA" ] && [ -z "$CLIENTCA" ]; then
|
||||||
USE_KOJI=
|
USE_KOJI=
|
||||||
else
|
else
|
||||||
if [ -z "$PEM" ] || [ -z "$SERVERCA" ] || [ -z "$CLIENTCA" ]; then
|
if [ -z "$PEM" ] || [ -z "$SERVERCA" ] || [ -z "$CLIENTCA" ]; then
|
||||||
error "Must specify all three command line options (or none)"
|
error "Must specify all three command line options (or none)"
|
||||||
fi
|
fi
|
||||||
if [ ! -f "$PEM" ]; then
|
if [ ! -f "$PEM" ]; then
|
||||||
error "Missing koji client PEM key file"
|
error "Missing koji client PEM key file"
|
||||||
fi
|
fi
|
||||||
if [ ! -f "$SERVERCA" ]; then
|
if [ ! -f "$SERVERCA" ]; then
|
||||||
error "Missing koji server CA PEM file"
|
error "Missing koji server CA PEM file"
|
||||||
fi
|
fi
|
||||||
if [ ! -f "$CLIENTCA" ]; then
|
if [ ! -f "$CLIENTCA" ]; then
|
||||||
error "Missing koji client CA PEM file"
|
error "Missing koji client CA PEM file"
|
||||||
fi
|
fi
|
||||||
USE_KOJI="yes"
|
USE_KOJI="yes"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$JOBS" ]; then
|
||||||
|
JOBS_ARG="-j $JOBS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "$WORKSPACE" ]; then
|
||||||
|
error "Directory \"$WORKSPACE\" already exists. \
|
||||||
|
Either remove this workspace, or use a different workspace name."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
required_progs() {
|
required_progs() {
|
||||||
local bindir="/usr/bin"
|
local bindir="/usr/bin"
|
||||||
for f in git mock rpm rpmbuild ; do
|
for f in git mock rpm rpmbuild ; do
|
||||||
[ ! -x "${bindir}/${f}" ] && missing+="${f} "
|
[ ! -x "${bindir}/${f}" ] && missing+="${f} "
|
||||||
done
|
done
|
||||||
[ "$PEM" ] && [ ! -x /usr/bin/koji ] && missing+="koji "
|
[ "$PEM" ] && [ ! -x /usr/bin/koji ] && missing+="koji "
|
||||||
if [ -n "$missing" ]; then
|
if [ -n "$missing" ]; then
|
||||||
echo "Install the following programs and re-run this script:" >&2
|
echo "Install the following programs and re-run this script:" >&2
|
||||||
echo $missing >&2
|
echo $missing >&2
|
||||||
echo 'All programs should be provided in the "os-clr-on-clr" bundle.' >&2
|
echo 'All programs should be provided in the "os-clr-on-clr" bundle.' >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
required_progs
|
required_progs
|
||||||
|
|
||||||
echo 'Initializing development workspace in "clearlinux" . . .'
|
echo "Initializing development workspace in \"$WORKSPACE\" . . ."
|
||||||
if [ -d "clearlinux" ]; then
|
|
||||||
echo 'Directory "clearlinux" already exists in current directory.' >&2
|
|
||||||
echo "Cannot initialize workspace." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir clearlinux
|
mkdir "$WORKSPACE"
|
||||||
cd clearlinux
|
cd "$WORKSPACE"
|
||||||
|
|
||||||
echo "Setting up common repo . . ."
|
echo "Setting up common repo . . ."
|
||||||
mkdir projects
|
mkdir projects
|
||||||
git clone https://github.com/clearlinux/common projects/common
|
git clone https://github.com/clearlinux/common projects/common
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "Failed to clone common repo." >&2
|
echo "Failed to clone common repo." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Finish setup for packages/projects hierarchy
|
# Finish setup for packages/projects hierarchy
|
||||||
@@ -105,48 +134,52 @@ mkdir -p packages/common
|
|||||||
ln -sf ../../projects/common/Makefile.common packages/common/Makefile.common
|
ln -sf ../../projects/common/Makefile.common packages/common/Makefile.common
|
||||||
|
|
||||||
if [ "$USE_KOJI" ]; then
|
if [ "$USE_KOJI" ]; then
|
||||||
echo "Setting up koji certs . . ."
|
echo "Setting up koji certs . . ."
|
||||||
mkdir -p ~/.koji
|
mkdir -p ~/.koji
|
||||||
cp "$PEM" ~/.koji/client.crt
|
cp "$PEM" ~/.koji/client.crt
|
||||||
cp "$CLIENTCA" ~/.koji/clientca.crt
|
cp "$CLIENTCA" ~/.koji/clientca.crt
|
||||||
cp "$SERVERCA" ~/.koji/serverca.crt
|
cp "$SERVERCA" ~/.koji/serverca.crt
|
||||||
|
|
||||||
if [ ! -f /etc/koji.conf ]; then
|
if [ ! -f /etc/koji.conf ]; then
|
||||||
echo "Setting up koji config . . ."
|
echo "Setting up koji config . . ."
|
||||||
sudo cp projects/common/koji-client-files/koji.conf /etc
|
sudo cp projects/common/conf/koji.conf /etc
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -f /etc/mock/clear.cfg ]; then
|
|
||||||
echo "Setting up mock config . . ."
|
|
||||||
sudo mkdir -p /etc/mock
|
|
||||||
sudo cp projects/common/koji-client-files/clear.cfg /etc/mock
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Adding user to kvm group . . ."
|
echo "Adding user to kvm group . . ."
|
||||||
sudo usermod -a -G kvm $USER
|
sudo usermod -a -G kvm $USER
|
||||||
|
|
||||||
echo "Cloning special project repositories . . ."
|
echo "Cloning special project repositories . . ."
|
||||||
make clone-projects
|
make ${JOBS_ARG} clone-projects
|
||||||
|
|
||||||
if [ -z "$NO_PACKAGE_REPOS" ]; then
|
if [ -n "$PACKAGE_REPOS" ]; then
|
||||||
echo "Cloning all package repositories . . ."
|
echo "Cloning all package repositories . . ."
|
||||||
make clone-packages
|
make ${JOBS_ARG} clone-packages
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "Creating mix workspace . . ."
|
||||||
|
mkdir -p mix
|
||||||
|
|
||||||
if [ "$USE_KOJI" ]; then
|
if [ "$USE_KOJI" ]; then
|
||||||
echo "Testing koji installation . . ."
|
echo "Testing koji installation . . ."
|
||||||
if koji moshimoshi; then
|
if koji moshimoshi; then
|
||||||
echo -en "\n************************\n\n"
|
echo -en "\n************************\n\n"
|
||||||
echo "Koji installed and configured successfully"
|
echo "Koji installed and configured successfully"
|
||||||
else
|
else
|
||||||
echo -en "\n************************\n\n"
|
echo -en "\n************************\n\n"
|
||||||
echo "Error with koji installation or configuration" >&2
|
echo "Error with koji installation or configuration" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -en "\n************************\n"
|
echo -en "\n************************\n"
|
||||||
|
|
||||||
echo 'Workspace has been set up in the "clearlinux" directory'
|
echo "Workspace has been set up in \"$WORKSPACE\""
|
||||||
echo 'NOTE: logout and log back in or run "newgrp kvm" to finalize the setup process'
|
if [ -z "$PACKAGE_REPOS" ]; then
|
||||||
|
echo "NOTE: To clone all package repos, run \"cd $WORKSPACE; make [-j NUM] clone-packages\""
|
||||||
|
echo "NOTE: To clone a single package repo with NAME, run \"cd $WORKSPACE; make clone_NAME\""
|
||||||
|
fi
|
||||||
|
echo 'NOTE: logout and log back in to finalize the setup process'
|
||||||
|
|
||||||
|
|
||||||
|
# vi: ft=sh sw=2 et sts=2
|
||||||
|
|||||||
Reference in New Issue
Block a user