Commit 6aa0c159 authored by Federico Vaga's avatar Federico Vaga

Merge branch 'release/v1.0.1'

parents 116839de ce9bb38e
......@@ -49,4 +49,8 @@
modules.order
Module.symvers
Mkfile.old
dkms.conf
\ No newline at end of file
dkms.conf
Makefile.specific
GTAGS
GPATH
GRTAGS
\ No newline at end of file
---
variables:
KOJI_TARGET: 'ohwr7'
KOJI_DISTTAG: '.el7.cern'
DIST_PATH: distribution
BUILD_PATH: distribution/build
stages:
- build
- dkms
- srpm
- kscratch
- kbuild
build:
stage: build
script:
- yum install -y kernel-devel
- LINUX=/usr/src/kernels/*/ make modules
build_dkms_rpm:
stage: dkms
script:
- yum install -y dkms
- make -C distribution dkms-rpm
build_srpm:
stage: srpm
script:
- yum-builddep -y ${DIST_PATH}/*.spec
- LINUX=/usr/src/kernels/*/ make -C distribution srpm
artifacts:
paths:
- distribution/build/SRPMS/${CI_PROJECT_NAME}*src.rpm
expire_in: 1 day
.koji_deps_template: &koji_deps
before_script:
- yum install -y koji krb5-workstation rpm-build
- echo ${OHWR_PASSWORD} | kinit ${OHWR_USER}
kscratch:
<<: *koji_deps
stage: kscratch
script:
- koji --config=.koji build --wait --scratch ${KOJI_TARGET} distribution/build/SRPMS/${CI_PROJECT_NAME}*src.rpm
kbuild-ohwr:
<<: *koji_deps
stage: kbuild
only:
- tags
script:
- koji --config=.koji build --wait ${KOJI_TARGET} distribution/build/SRPMS/${CI_PROJECT_NAME}*src.rpm
[koji]
server = https://kojihub.cern.ch/kojihub
weburl = https://koji.cern.ch/
topurl = https://koji.cern.ch/kojifiles
krb_canon_host = no
krb_rdns = False
......@@ -2,6 +2,13 @@
Changelog
=========
[1.0.1] - 2019-10-07
====================
Added
-----
- gitlab CI with automatic RPM deployment on CERN koji
[1.0.0] - 2019-09-26
====================
......
all: modules
modules modules_install:
@$(MAKE) -C drivers/fmc/ $@
sources srpm:
@$(MAKE) -C distribution $@
clean:
@$(MAKE) -C distribution $@
@$(MAKE) -C drivers/fmc/ $@
.PHONY: sources srpm modules modules_install clean all
TOP_DIR ?= $(shell pwd)/../
DRIVER_NAME := fmc
VERSION := $(shell git describe --abbrev=0)
DIR_NAME := $(DRIVER_NAME)-$(VERSION)
NAME := fmc
VERSION := $(shell git describe --abbrev=0 | tr -d 'v')
DIR_NAME := $(NAME)-$(VERSION)
KEEP_TEMP ?= n
BUILD ?= $(abspath build)
SOURCES ?= $(abspath sources)
PKG_SOURCES := $(SOURCES)/$(DIR_NAME)
BUILD_DKMS := $(BUILD)/dkms
BUILD_DKMSSOURCE := $(BUILD_DKMS)/source
BUILD_DKMSTREE := $(BUILD_DKMS)/tree
RPM_SPEC := $(shell mktemp /tmp/$(NAME)-$(VERSION)-XXXXXX.spec)
DKMS_OPT := --dkmstree $(BUILD_DKMSTREE) -m $(DRIVER_NAME)/$(VERSION)
DKMS_OPT := --dkmstree $(BUILD_DKMSTREE) -m $(NAME)/$(VERSION)
FIND_OPT := -type f -regextype posix-extended
all: kernel
......@@ -20,18 +24,8 @@ dkms-tree:
@mkdir -p $(BUILD_DKMSSOURCE)
@mkdir -p $(BUILD_DKMSTREE)
dkms-src: dkms-tree
$(eval $@_src := $(shell git ls-tree -r --name-only HEAD $(TOP_DIR) | grep -E "drivers|include" | tr '\n' ' '))
$(eval $@_dir := $(BUILD_DKMSSOURCE)/$(DRIVER_NAME)-$(VERSION))
@mkdir -p $($@_dir)/include/linux
@cp -a $($@_src) $(TOP_DIR)/distribution/dkms.conf $($@_dir)
@mv $($@_dir)/ipmi-fru.h $($@_dir)/fmc.h $($@_dir)/include/linux
@cp $(TOP_DIR)/distribution/module-symvers-save $($@_dir)
@cp -a $(TOP_DIR)/LICENSES/GPL-2.0.txt $($@_dir)/LICENSE
@sed -r -i -e "s/@PKGNAME@/$(DRIVER_NAME)/" $($@_dir)/dkms.conf
@sed -r -i -e "s/@PKGVER@/$(VERSION)/" $($@_dir)/dkms.conf
dkms-src: dkms-tree sources-build
@cp -a $(PKG_SOURCES) $(BUILD_DKMSSOURCE)
dkms-add: dkms-src
@dkms add $(DKMS_OPT) --sourcetree $(BUILD_DKMSSOURCE)
......@@ -42,7 +36,50 @@ dkms-tar: dkms-add
dkms-rpm: dkms-add
@dkms mkrpm $(DKMS_OPT) --source-only
dkms-build: dkms-add
@dkms build $(DKMS_OPT)
sources-build:
@mkdir -p $(PKG_SOURCES)
@find $(TOP_DIR)/drivers/fmc/ $(FIND_OPT) -regex '.+/([^.]+[.](c|h)|Makefile|Kbuild)' -exec cp \{} $(PKG_SOURCES) \;
@cp -a $(TOP_DIR)/include $(PKG_SOURCES)/
@cp -a $(TOP_DIR)/LICENSES/GPL-2.0.txt $(PKG_SOURCES)/LICENSE
@cp -a $(TOP_DIR)/CHANGELOG $(PKG_SOURCES)/CHANGELOG
@cp -a $(TOP_DIR)/distribution/dkms.conf $(PKG_SOURCES)/
@sed -r -i -e "s/@PKGNAME@/$(NAME)/" $(PKG_SOURCES)/dkms.conf
@sed -r -i -e "s/@PKGVER@/$(VERSION)/" $(PKG_SOURCES)/dkms.conf
sources-tar: sources-build
cd $(SOURCES); tar czf $(DIR_NAME).tar.gz --exclude-vcs $(DIR_NAME)
sources: sources-tar
srpm-changelog: sources
$(eval $@_pattern := ^\[([0-9]+\.[0-9]+\.[0-9]+)\]\s-\s([0-9]{4}-[0-9]{2}-[0-9]{2})$)
$(eval $@_replace := echo -e "\n"\\* `date --date="\2" "+%a %b %d %Y"` "\1")
@cp -a $(PKG_SOURCES)/CHANGELOG $(SOURCES)/CHANGELOG
@sed -r -i -e "/Changelog/d" -e "/^(=|-|\s)*$$/d" $(SOURCES)/CHANGELOG
@sed -r -i -e 's,$($@_pattern),$($@_replace),e' $(SOURCES)/CHANGELOG
rpm-spec: fmc.spec
# The fmc.spec file is good when we can define variables. With tools like
# koji it is not possible, so we need to create a .spec file without using
# package-specific variables.
@cp $< $(RPM_SPEC)
@sed -i -e "s/%{?_build_version}/$(VERSION)/" $(RPM_SPEC)
srpm: sources rpm-spec srpm-changelog
@rpmbuild -bs --define "_topdir $(BUILD)" \
--define '_sourcedir $(SOURCES)' \
--define "_build_version $(VERSION)" \
$(RPM_SPEC)
ifeq ($(KEEP_TEMP), n)
@rm -f $(RPM_SPEC)
endif
clean:
@rm -rf $(BUILD)
@rm -rf $(BUILD) $(SOURCES) *.tar.gz $(RPM_SPEC)
.PHONY: sources sources-tar sources-build
.PHONY: dkmstree dkms-add kernel-dkms-tar
name: fmc
version: %{?_build_version}
Release: 1%{?dist}
Summary: Linux kernel FMC Layer support
Group: System/Kernel
License: GPLv2
URL: https://gitlab.cern.ch/coht/fmc/
Source0: %{name}-%{version}.tar.gz
Source1: CHANGELOG
Requires:dkms
%description
Kernel modules for FMC support in a DKMS wrapper.
%prep
%setup -q
%install
mkdir -p %{buildroot}/usr/src/%{name}-%{version}
cp -ra * %{buildroot}/usr/src/%{name}-%{version}/
%post
dkms add -m %{name} -v %{version} --rpm_safe_upgrade
dkms build -m %{name} -v %{version} --rpm_safe_upgrade
dkms install -m %{name} -v %{version} --rpm_safe_upgrade
%preun
dkms remove -m %{name} -v %{version} --rpm_safe_upgrade --all ||:
%files
/usr/src/%{name}-%{version}/
%changelog
%include %{SOURCE1}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment