From b907d08b86562dc5150470498abc9443c85fd661 Mon Sep 17 00:00:00 2001 From: "Brian J. Murrell" Date: Sun, 12 Dec 2021 20:28:28 -0500 Subject: [PATCH] Run bump_version in make srpm Also add an "rpms" target that builds the RPMs using mock in a target environment. Fix BuildRequires: for RH platforms. Fixes: #3221 Signed-off-by: Brian J. Murrell --- .ci/azure-pipelines-package.yml | 12 +++++++ .copr | 1 + .copr/Makefile | 1 - .gitignore | 7 ++++ bump_version | 27 +++++++++------ fedora/Makefile | 61 +++++++++++++++++++++++---------- fedora/jellyfin-web.spec | 5 ++- 7 files changed, 81 insertions(+), 33 deletions(-) create mode 120000 .copr delete mode 120000 .copr/Makefile diff --git a/.ci/azure-pipelines-package.yml b/.ci/azure-pipelines-package.yml index 39a05e391..e221cc573 100644 --- a/.ci/azure-pipelines-package.yml +++ b/.ci/azure-pipelines-package.yml @@ -17,6 +17,14 @@ jobs: vmImage: 'ubuntu-latest' steps: + - script: echo "##vso[task.setvariable variable=JellyfinVersion]$( awk -F '/' '{ print $NF }' <<<'$(Build.SourceBranch)' | sed 's/^v//' )" + displayName: Set release version (stable) + condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/v') + + - script: './bump-version $(JellyfinVersion)' + displayName: Bump internal version (stable) + condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/v') + - script: 'docker build -f deployment/Dockerfile.$(BuildConfiguration) -t jellyfin-web-$(BuildConfiguration) deployment' displayName: 'Build Dockerfile' condition: or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master')) @@ -68,6 +76,10 @@ jobs: displayName: Set release version (stable) condition: startsWith(variables['Build.SourceBranch'], 'refs/tags') + - script: './bump-version $(JellyfinVersion)' + displayName: Bump internal version (stable) + condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/v') + - task: Docker@2 displayName: 'Push Unstable Image' condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/master') diff --git a/.copr b/.copr new file mode 120000 index 000000000..0c6c7bc54 --- /dev/null +++ b/.copr @@ -0,0 +1 @@ +fedora/ \ No newline at end of file diff --git a/.copr/Makefile b/.copr/Makefile deleted file mode 120000 index ec3c90dfd..000000000 --- a/.copr/Makefile +++ /dev/null @@ -1 +0,0 @@ -../fedora/Makefile \ No newline at end of file diff --git a/.gitignore b/.gitignore index 98aa2d974..449216477 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,10 @@ config.json # log yarn-error.log + +# vim +*.sw? + +# build artifacts +fedora/jellyfin-web-*.src.rpm +fedora/jellyfin-web-*.tar.gz diff --git a/bump_version b/bump_version index c9fcba93b..948f260bd 100755 --- a/bump_version +++ b/bump_version @@ -4,6 +4,7 @@ set -o errexit set -o pipefail +set -o xtrace usage() { echo -e "bump_version - increase the shared version and generate changelogs" @@ -22,8 +23,10 @@ package_file="./package*.json" new_version="$1" -# Parse the version from build.yaml -old_version="$( grep "version:" ${build_file} | sed -E 's/version: "([0-9\.]+[-a-z0-9]*)"/\1/' )" +old_version="$( + grep "version:" ${build_file} \ + | sed -E 's/version: "([0-9\.]+[-a-z0-9]*)"/\1/' +)" echo "Old version: ${old_version}" # Bump the NPM version @@ -32,19 +35,22 @@ npm --no-git-tag-version --allow-same-version version v${new_version_sed} # Set the build.yaml version to the specified new_version old_version_sed="$( sed 's/\./\\./g' <<<"${old_version}" )" # Escape the '.' chars -sed -i "s/${old_version_sed}/${new_version}/g" ${build_file} +sed -i "s/${old_version_sed}/${new_version_sed}/g" ${build_file} + if [[ ${new_version} == *"-"* ]]; then - new_version_deb="$( sed 's/-/~/g' <<<"${new_version}" )" + new_version_pkg="$( sed 's/-/~/g' <<<"${new_version}" )" + new_version_deb_sup="" else - new_version_deb="${new_version}-1" + new_version_pkg="${new_version}" + new_version_deb_sup="-1" fi # Write out a temporary Debian changelog with our new stuff appended and some templated formatting debian_changelog_file="debian/changelog" debian_changelog_temp="$( mktemp )" # Create new temp file with our changelog -echo -e "jellyfin-web (${new_version_deb}) unstable; urgency=medium +echo -e "jellyfin-web (${new_version_pkg}${new_version_deb_sup}) unstable; urgency=medium * New upstream version ${new_version}; release changelog at https://github.com/jellyfin/jellyfin-web/releases/tag/v${new_version} @@ -65,8 +71,7 @@ pushd ${fedora_spec_temp_dir} # Split out the stuff before and after changelog csplit jellyfin-web.spec "/^%changelog/" # produces xx00 xx01 # Update the version in xx00 -new_version_sed="$( sed 's/\./\\./g' <<<"${new_version}" )" # Escape the '.' chars -sed -i "s/${old_version_sed}/${new_version_sed}/g" xx00 +sed -i "s/${old_version_sed}/${new_version_pkg}/g" xx00 # Remove the header from xx01 sed -i '/^%changelog/d' xx01 # Create new temp file with our changelog @@ -80,8 +85,8 @@ popd # Move into place mv ${fedora_spec_temp} ${fedora_spec_file} # Clean up -rm -rf ${fedora_changelog_temp} ${fedora_spec_temp_dir} +rm -rf ${fedora_spec_temp_dir} # Stage the changed files for commit -git add ${build_file} ${debian_changelog_file} ${fedora_spec_file} ${package_file} -git status +git add . +git status -v diff --git a/fedora/Makefile b/fedora/Makefile index 1d3e39ac8..806417adb 100644 --- a/fedora/Makefile +++ b/fedora/Makefile @@ -1,21 +1,46 @@ -VERSION := $(shell sed -ne '/^Version:/s/.* *//p' fedora/jellyfin-web.spec) +DIR := $(dir $(lastword $(MAKEFILE_LIST))) +# install git and npm +$(info $(shell set -x; if [ "$$(id -u)" = "0" ]; then echo "Installing git"; dnf -y install git npm; fi)) +NAME := jellyfin-web +VERSION := $(shell set -x; sed -ne '/^Version:/s/.* *//p' $(DIR)/$(NAME).spec) +RELEASE := $(shell set -x; sed -ne '/^Release:/s/.* *\(.*\)%{.*}.*/\1/p' $(DIR)/$(NAME).spec) +GIT_VER := $(shell set -x; git describe --tags | sed -e 's/^v//' -e 's/-[0-9]*-g.*$$//') +SRPM := jellyfin-web-$(subst -,~,$(GIT_VER))-$(RELEASE)$(shell rpm --eval %dist).src.rpm +TARBALL :=$(NAME)-$(subst -,~,$(GIT_VER)).tar.gz -srpm: - cd fedora/; \ - SOURCE_DIR=.. \ - WORKDIR="$${PWD}"; \ - tar \ - --transform "s,^\.,jellyfin-web-$(VERSION)," \ - --exclude='.git*' \ - --exclude='**/.git' \ - --exclude='**/.hg' \ - --exclude='deployment' \ - --exclude='*.deb' \ - --exclude='*.rpm' \ - --exclude='jellyfin-web-$(VERSION).tar.gz' \ - -czf "jellyfin-web-$(VERSION).tar.gz" \ +epel-8-x86_64_repos := https://rpm.nodesource.com/pub_16.x/el/\$$releasever/\$$basearch/ + +outdir ?= $(PWD)/$(DIR)/ +TARGET ?= fedora-35-x86_64 + +srpm: $(DIR)/$(SRPM) +tarball: $(DIR)/$(TARBALL) + +$(DIR)/$(TARBALL): + cd $(DIR)/; \ + SOURCE_DIR=.. \ + WORKDIR="$${PWD}"; \ + version=$(GIT_VER); \ + tar \ + --transform "s,^\.,$(NAME)-$(subst -,~,$(GIT_VER))," \ + --exclude='.git*' \ + --exclude='**/.git' \ + --exclude='**/.hg' \ + --exclude=deployment \ + --exclude='*.deb' \ + --exclude='*.rpm' \ + --exclude=$(notdir $@) \ + -czf $(notdir $@) \ -C $${SOURCE_DIR} ./ - cd fedora/; \ - rpmbuild -bs jellyfin-web.spec \ - --define "_sourcedir $$PWD/" \ + +$(DIR)/$(SRPM): $(DIR)/$(TARBALL) $(DIR)/jellyfin-web.spec + ./bump_version $(GIT_VER) + cd $(DIR)/; \ + rpmbuild -bs $(NAME).spec \ + --define "_sourcedir $$PWD/" \ --define "_srcrpmdir $(outdir)" + +rpms: $(DIR)/$(SRPM) + mock $(addprefix --addrepo=, $($(TARGET)_repos)) \ + --enable-network \ + -r $(TARGET) $< diff --git a/fedora/jellyfin-web.spec b/fedora/jellyfin-web.spec index 8e04b105a..70e20e5fc 100644 --- a/fedora/jellyfin-web.spec +++ b/fedora/jellyfin-web.spec @@ -10,9 +10,8 @@ URL: https://jellyfin.org Source0: jellyfin-web-%{version}.tar.gz BuildArch: noarch -%if 0%{?fedora} >= 33 -BuildRequires: nodejs -%endif +BuildRequires: git +BuildRequires: npm # Disable Automatic Dependency Processing AutoReqProv: no