diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 72abc1b..268ac72 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -13,33 +13,53 @@ on: jobs: deploy: - runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.3.4 + - name: Set up Python uses: actions/setup-python@v2.2.2 with: python-version: '3.7' + - name: Run ci_tests run: ./ci_tests - - name: Install dependencies + + - name: Install system dependencies + run: | + apt-get update + apt-get install devscripts equivs sphinx-common sphinx-rtd-theme-common # dh-virtualenv deps + apt-get install debhelper dh-python python3-all # stdeb deps + + - name: Install dh-virtualenv + run: | + git clone https://github.com/spotify/dh-virtualenv.git + cd dh-virtualenv + mk-build-deps -ri + dpkg-buildpackage -us -uc -b + cd .. + dpkg -i dh-virtualenv_*.deb + + - name: Install python dependencies run: | python -m pip install --upgrade pip pip install setuptools wheel pip install -r requirements-dev.txt + - name: Bump version run: | git config --local user.email "hello@qmk.fm" git config --local user.name "QMK Bot" bumpversion ${{ github.event.inputs.version_part }} + - name: Push changes uses: ad-m/github-push-action@master with: github_token: ${{ secrets.GITHUB_TOKEN }} branch: master tags: true + - name: Build and publish env: TWINE_USERNAME: qmk @@ -47,11 +67,13 @@ jobs: run: | python setup.py sdist bdist_wheel twine upload dist/* + - name: Log in to Docker Hub uses: docker/login-action@v1.10.0 with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + - name: Build and Push to Docker Hub uses: docker/build-push-action@v2.6.1 with: diff --git a/.gitignore b/.gitignore index d0371a1..d4a00e5 100644 --- a/.gitignore +++ b/.gitignore @@ -106,3 +106,6 @@ venv.bak/ # QMK qmk_firmware + +# Debian packages +deb_dist diff --git a/debian/50-qmk.rules b/debian/50-qmk.rules new file mode 100644 index 0000000..679fe4c --- /dev/null +++ b/debian/50-qmk.rules @@ -0,0 +1,65 @@ +# Atmel DFU +### ATmega16U2 +SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2fef", TAG+="uaccess" +### ATmega32U2 +SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", TAG+="uaccess" +### ATmega16U4 +SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff3", TAG+="uaccess" +### ATmega32U4 +SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", TAG+="uaccess" +### AT90USB64 +SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff9", TAG+="uaccess" +### AT90USB162 +SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffa", TAG+="uaccess" +### AT90USB128 +SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", TAG+="uaccess" + +# Input Club +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", ATTRS{idProduct}=="b007", TAG+="uaccess" + +# STM32duino +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", TAG+="uaccess" +# STM32 DFU +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", TAG+="uaccess" + +# BootloadHID +SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", TAG+="uaccess" + +# USBAspLoader +SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", TAG+="uaccess" + +# ModemManager should ignore the following devices +# Atmel SAM-BA (Massdrop) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" + +# Caterina (Pro Micro) +## Spark Fun Electronics +### Pro Micro 3V3/8MHz +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9203", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" +### Pro Micro 5V/16MHz +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9205", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" +### LilyPad 3V3/8MHz (and some Pro Micro clones) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9207", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" +## Pololu Electronics +### A-Star 32U4 +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1ffb", ATTRS{idProduct}=="0101", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" +## Arduino SA +### Leonardo +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" +### Micro +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" +## Adafruit Industries LLC +### Feather 32U4 +SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000c", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" +### ItsyBitsy 32U4 3V3/8MHz +SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000d", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" +### ItsyBitsy 32U4 5V/16MHz +SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000e", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" +## dog hunter AG +### Leonardo +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" +### Micro +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" + +# hid_listen +KERNEL=="hidraw*", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..13a4c5d --- /dev/null +++ b/debian/copyright @@ -0,0 +1,3 @@ +Files: * +Copyright: 2019-2021 Zach White, et al +License: expat diff --git a/requirements-dev.txt b/requirements-dev.txt index 7a5f4ac..f449b1d 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -22,6 +22,7 @@ requests-toolbelt==0.9.1 rfc3986==1.5.0 SecretStorage==3.3.1 six==1.16.0 +stdeb==0.10.0 tqdm==4.62.0 twine==3.4.2 urllib3==1.26.6 diff --git a/setup.cfg b/setup.cfg index 18762aa..a4f86ca 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,3 +1,6 @@ +[global] +command-packages: stdeb.command + [bumpversion] current_version = 0.2.2 commit = True @@ -12,6 +15,9 @@ message = New release: {current_version} → {new_version} [bdist_wheel] universal = 1 +[entry_points] +qmk = qmk_cli.script_qmk:main + [flake8] ignore = E501,E226 @@ -22,11 +28,23 @@ description-file = README.md dist-name = qmk license_file = LICENSE module = qmk_cli -home-page = https://github.com/qmk/qmk_cli +home-page = https://qmk.fm/ requires-python = >=3.7 -[entry_points] -qmk = qmk_cli.script_qmk:main +[sdist_dsc] +# Configuration for the Debian package +with-python2: False +with-python3: True +with-dh-virtualenv: True +compat: 10 +suite: stable +package: qmk +maintainer: QMK Community +section: devel +copyright-file: debian/copyright +depends: build-essential clang-format diffutils gcc git unzip wget zip python3-pip binutils-avr gcc-avr avr-libc binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi avrdude dfu-programmer dfu-util teensy-loader-cli libhidapi-hidraw0 libusb-dev +x-python3-version: >= 3.7 +udev-rules: debian/50-qmk.rules [yapf] align_closing_bracket_with_visual_indent = True