diff --git a/.github/workflows/build-cmake.yml b/.github/workflows/build-cmake.yml new file mode 100644 index 0000000..ebfd151 --- /dev/null +++ b/.github/workflows/build-cmake.yml @@ -0,0 +1,21 @@ +on: + push: + branches: + - master + pull_request: + branches: + - master +jobs: + fedora-cmake-build: + runs-on: ubuntu-latest + container: fedora:34 + steps: + - uses: actions/checkout@v2 + - name: install tools and dependencies + run: | + dnf install -y cmake rpm-build findutils clang-tools-extra 'dnf-command(builddep)' + dnf builddep -y mouse_m908.spec + - name: build mouse_m908 with cmake + run: | + cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -Bbuild + cmake --build build diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..9ece61e --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,33 @@ +on: + push: + branches: + - master + pull_request: + branches: + - master +jobs: + fedora-rpm-build: + runs-on: ubuntu-latest + container: fedora:34 + steps: + - uses: actions/checkout@v2 + - name: install tools and dependencies + run: | + dnf install -y rpm-build findutils clang-tools-extra 'dnf-command(builddep)' + dnf builddep -y mouse_m908.spec + - name: build mouse_m908 rpm package + run: | + make -j4 rpm + centos-rpm-build: + runs-on: ubuntu-latest + container: centos:8 + steps: + - uses: actions/checkout@v2 + - name: install tools and dependencies + run: | + dnf install -y rpm-build findutils clang-tools-extra 'dnf-command(builddep)' 'dnf-command(config-manager)' + dnf config-manager --set-enabled powertools + dnf builddep -y mouse_m908.spec + - name: build mouse_m908 rpm package + run: | + make -j4 rpm diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..6f4cdff --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,155 @@ +on: + push: + tags: + - v* + +jobs: + create-gh-release: + runs-on: ubuntu-latest + container: fedora:latest + steps: + - name: create release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ github.ref }} + draft: false + prerelease: false + - name: put upload_url in artifact + run: | + echo '${{ steps.create_release.outputs.upload_url }}' > release-upload-url + - name: upload artifact + uses: actions/upload-artifact@v2 + with: + name: release-upload-url + path: release-upload-url + + fedora-release-rpm: + runs-on: ubuntu-latest + container: fedora:34 + steps: + - uses: actions/checkout@v2 + - name: get version details + run: | + echo "RELEASE_VER=${GITHUB_REF#*/*/v}" >> ${GITHUB_ENV} + echo "DIST_TAG=$(rpm --eval '%dist')" >> ${GITHUB_ENV} + echo "RPM_RELEASE=$(awk '/Release:/{$0 = $2; FS="%"; $0=$0; print $1}' mouse_m908.spec)" >> ${GITHUB_ENV} + - name: set output variables + run: | + echo "RPM_NAME=mouse_m908-${RELEASE_VER}-${RPM_RELEASE}${DIST_TAG}.x86_64.rpm" >> ${GITHUB_ENV} + echo "SRPM_NAME=mouse_m908-${RELEASE_VER}-${RPM_RELEASE}${DIST_TAG}.src.rpm" >> ${GITHUB_ENV} + - name: install tools and dependencies + run: | + dnf install -y rpm-build findutils clang-tools-extra 'dnf-command(builddep)' + dnf builddep -y mouse_m908.spec + - name: build mouse_m908 rpm package + run: | + make -j4 rpm + make -j4 src-rpm + + - name: upload rpm package artifact + uses: actions/upload-artifact@v2 + with: + name: ${{ env.RPM_NAME }} + path: ${{ env.RPM_NAME }} + - name: upload src rpm package artifact + uses: actions/upload-artifact@v2 + with: + name: ${{ env.SRPM_NAME }} + path: ${{ env.SRPM_NAME }} + + - name: download release-upload-url artifact + uses: actions/download-artifact@v2 + with: + name: release-upload-url + path: release-upload-url + - name: set upload url environment var + run: | + echo "UPLOAD_URL=$(cat release-upload-url/release-upload-url)" >> ${GITHUB_ENV} + - name: upload rpm package to release page + id: upload-release-rpm + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ env.UPLOAD_URL }} + asset_path: ./${{ env.RPM_NAME }} + asset_name: ${{ env.RPM_NAME }} + asset_content_type: application/octet-stream + - name: upload src rpm package to release page + id: upload-release-srpm + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ env.UPLOAD_URL }} + asset_path: ./${{ env.SRPM_NAME }} + asset_name: ${{ env.SRPM_NAME }} + asset_content_type: application/octet-stream + + centos-release-rpm: + runs-on: ubuntu-latest + container: centos:8 + steps: + - uses: actions/checkout@v2 + - name: get version details + run: | + echo "RELEASE_VER=${GITHUB_REF#*/*/v}" >> ${GITHUB_ENV} + echo "DIST_TAG=$(rpm --eval '%dist')" >> ${GITHUB_ENV} + echo "RPM_RELEASE=$(awk '/Release:/{$0 = $2; FS="%"; $0=$0; print $1}' mouse_m908.spec)" >> ${GITHUB_ENV} + - name: set output variables + run: | + echo "RPM_NAME=mouse_m908-${RELEASE_VER}-${RPM_RELEASE}${DIST_TAG}.x86_64.rpm" >> ${GITHUB_ENV} + echo "SRPM_NAME=mouse_m908-${RELEASE_VER}-${RPM_RELEASE}${DIST_TAG}.src.rpm" >> ${GITHUB_ENV} + - name: install tools and dependencies + run: | + dnf install -y rpm-build findutils clang-tools-extra 'dnf-command(builddep)' 'dnf-command(config-manager)' + dnf config-manager --set-enabled powertools + dnf builddep -y mouse_m908.spec + - name: build mouse_m908 rpm package + run: | + make -j4 rpm + make -j4 src-rpm + + - name: upload rpm package artifact + uses: actions/upload-artifact@v2 + with: + name: ${{ env.RPM_NAME }} + path: ${{ env.RPM_NAME }} + - name: upload src rpm package artifact + uses: actions/upload-artifact@v2 + with: + name: ${{ env.SRPM_NAME }} + path: ${{ env.SRPM_NAME }} + + - name: download release-upload-url artifact + uses: actions/download-artifact@v2 + with: + name: release-upload-url + path: release-upload-url + - name: set upload url environment var + run: | + echo "UPLOAD_URL=$(cat release-upload-url/release-upload-url)" >> ${GITHUB_ENV} + - name: upload rpm package to release page + id: upload-release-rpm + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ env.UPLOAD_URL }} + asset_path: ./${{ env.RPM_NAME }} + asset_name: ${{ env.RPM_NAME }} + asset_content_type: application/octet-stream + - name: upload src rpm package to release page + id: upload-release-srpm + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ env.UPLOAD_URL }} + asset_path: ./${{ env.SRPM_NAME }} + asset_name: ${{ env.SRPM_NAME }} + asset_content_type: application/octet-stream diff --git a/makefile b/makefile index 6d66e14..1b8bc94 100644 --- a/makefile +++ b/makefile @@ -52,7 +52,7 @@ upgrade: install # this builds a .rpm for Fedora/RHEL systems rpm: - rpmbuild --buildroot $(PWD)/rpmbuild/BUILDROOT --define "_topdir $(PWD)/rpmbuild" -bb mouse_m908.spec + +rpmbuild --buildroot $(PWD)/rpmbuild/BUILDROOT --define "_topdir $(PWD)/rpmbuild" -bb mouse_m908.spec # this builds .src.rpm for Fedora/RHEL systems src-rpm: diff --git a/mouse_m908.spec b/mouse_m908.spec index 85f4506..80932f1 100644 --- a/mouse_m908.spec +++ b/mouse_m908.spec @@ -7,12 +7,12 @@ Name: mouse_m908 Version: 3.2 -Release: 1 +Release: 1%{?dist} Summary: Control Redragon gaming mice from Linux, BSD and Haiku License: GPL v3 URL: https://github.com/dokutan/mouse_m908 -BuildRequires: gcc-c++ libusb libusb-devel +BuildRequires: gcc-c++ libusb libusb-devel make Requires: libusb ExclusiveArch: x86_64