THIS_MAKEFILE := $(lastword $(MAKEFILE_LIST))
-include Makefile.local
VERSION := $(shell sed -n 's/^Version:\s*//p' ../rpm/ferroclass.spec)
NAME := $(shell sed -n 's/^Name:\s*//p' ../rpm/ferroclass.spec)
_OBS_USER_CFG := $(shell grep '^user=' ~/.config/osc/oscrc 2>/dev/null | head -1 | sed 's/^user=//')
OBS_USER ?= $(if $(_OBS_USER_CFG),$(_OBS_USER_CFG),$(USER))
OBS_PROJECT ?= home:$(OBS_USER):$(NAME)
OBS_PACKAGE ?= $(NAME)
OBS_DIR ?= $(HOME)/obs/$(OBS_PROJECT)/$(OBS_PACKAGE)
OSC_REPO ?= openSUSE_Tumbleweed
OSC_ARCH ?= x86_64
RPM_DIR := ../rpm
TARGETS := osc-checkout osc-sync osc-add osc-commit osc-build osc-build-rocky9 osc-build-rocky10 osc-service-run help
ifndef DEBUG
.SILENT:
endif
.PHONY: $(TARGETS)
osc-checkout: osc-checkout-start osc-checkout-do osc-checkout-end
osc-checkout-do:
osc checkout $(OBS_PROJECT) $(OBS_PACKAGE)
osc-sync: osc-sync-start osc-sync-do osc-sync-end
osc-sync-do:
@test -d $(OBS_DIR)/.osc || (echo "ERROR: $(OBS_DIR) is not an OBS checkout. Run 'make osc-checkout' first or set OBS_PROJECT correctly." && exit 1)
cp $(RPM_DIR)/ferroclass.spec $(OBS_DIR)/ferroclass.spec
cp $(RPM_DIR)/ferroclass.changes $(OBS_DIR)/ferroclass.changes
sed -e 's/@VERSION@/$(VERSION)/g' _service.in > $(OBS_DIR)/_service
cp $(RPM_DIR)/$(NAME)-$(VERSION).tar.gz $(OBS_DIR)/
cp $(RPM_DIR)/$(NAME)-$(VERSION)-vendor.tar.gz $(OBS_DIR)/
@echo "Removing stale tarballs from OBS checkout..."
@cd $(OBS_DIR) && for f in $(NAME)-[0-9]*.tar.gz; do \
case "$$f" in \
$(NAME)-$(VERSION).tar.gz|$(NAME)-$(VERSION)-vendor.tar.gz) ;; \
*) rm -v "$$f" ;; \
esac; \
done
osc-add: osc-add-start osc-add-do osc-add-end
osc-add-do:
cd $(OBS_DIR) && osc addremove
osc-commit: osc-commit-start osc-commit-do osc-commit-end
osc-commit-do:
cd $(OBS_DIR) && osc commit
osc-build: osc-build-start osc-build-do osc-build-end
osc-build-do:
cd $(OBS_DIR) && osc build $(OSC_REPO) $(OSC_ARCH)
osc-build-rocky9: osc-build-rocky9-start osc-build-rocky9-do osc-build-rocky9-end
osc-build-rocky9-do:
cd $(OBS_DIR) && osc build RockyLinux_9 x86_64
osc-build-rocky10: osc-build-rocky10-start osc-build-rocky10-do osc-build-rocky10-end
osc-build-rocky10-do:
cd $(OBS_DIR) && osc build RockyLinux_10 x86_64
osc-service-run: osc-service-run-start osc-service-run-do osc-service-run-end
osc-service-run-do:
cd $(OBS_DIR) && osc service manualrun
%-start:
$(info ****** making $*)
%-end:
$(info ****** finished $*)
help: help-start help-do help-end
help-do:
@sed -n -e "s/^## \?\(.*\)/\1/p" "$(THIS_MAKEFILE)"
@echo ""
@echo "VARIABLE VALUE"
@echo "--------------"
@echo "OBS_USER = $(OBS_USER)"
@echo "OBS_PROJECT = $(OBS_PROJECT)"
@echo "OBS_PACKAGE = $(OBS_PACKAGE)"
@echo "OBS_DIR = $(OBS_DIR)"
@echo "OSC_REPO = $(OSC_REPO)"
@echo "OSC_ARCH = $(OSC_ARCH)"
@echo "VERSION = $(VERSION)"
@echo "NAME = $(NAME)"