Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor qmk_install.sh #10681

Merged
merged 10 commits into from
Nov 26, 2020
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions docs/newbs_getting_started.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,10 @@ After Homebrew is installed run this command:

You will need to install Git and Python. It's very likely that you already have both, but if not, one of the following commands should install them:

* Debian / Ubuntu / Devuan: `sudo apt install git python3 python3-pip`
* Fedora / Red Hat / CentOS: `sudo yum install git python3 python3-pip`
* Arch / Manjaro: `sudo pacman -S git python python-pip python-setuptools libffi`
* Debian / Ubuntu / Devuan: `sudo apt install -y git python3-pip`
* Fedora / Red Hat / CentOS: `sudo yum -y install git python3-pip`
* Arch / Manjaro: `sudo pacman --needed --noconfirm -S git python-pip libffi`
* Void: `sudo xbps-install -y git python3-pip`

Install the global CLI to bootstrap your system:

Expand Down
39 changes: 0 additions & 39 deletions util/freebsd_install.sh

This file was deleted.

16 changes: 16 additions & 0 deletions util/install/arch.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash

_qmk_install() {
echo "Installing dependencies"

sudo pacman --needed --noconfirm -S \
base-devel clang diffutils gcc git unzip wget zip \
python-pip \
avr-binutils \
arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib \
avrdude dfu-programmer dfu-util
sudo pacman --needed --noconfirm -U https://archive.archlinux.org/packages/a/avr-gcc/avr-gcc-8.3.0-1-x86_64.pkg.tar.xz
sudo pacman --needed --noconfirm -S avr-libc # Must be installed after the above, or it will bring in the latest avr-gcc instead

python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt
}
22 changes: 22 additions & 0 deletions util/install/debian.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/bin/bash

DEBIAN_FRONTEND=noninteractive
DEBCONF_NONINTERACTIVE_SEEN=true
export DEBIAN_FRONTEND DEBCONF_NONINTERACTIVE_SEEN

_qmk_install_prepare() {
sudo apt-get update
}

_qmk_install() {
echo "Installing dependencies"

sudo apt-get -yq install \
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

python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt
}
15 changes: 15 additions & 0 deletions util/install/fedora.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash

_qmk_install() {
echo "Installing dependencies"

# TODO: Check whether devel/headers packages are really needed
sudo dnf -y install \
clang diffutils git gcc glibc-headers kernel-devel kernel-headers make unzip wget zip \
python3 \
avr-binutils avr-gcc avr-libc \
arm-none-eabi-binutils-cs arm-none-eabi-gcc-cs arm-none-eabi-newlib \
avrdude dfu-programmer dfu-util

python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt
}
18 changes: 18 additions & 0 deletions util/install/freebsd.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/bash

_qmk_install_prepare() {
sudo pkg update
}

_qmk_install() {
echo "Installing dependencies"

sudo pkg install -y \
git wget gmake gcc zip unzip diffutils \
python3 \
avr-binutils avr-gcc avr-libc \
arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib \
avrdude dfu-programmer dfu-util

sudo python3 -m pip install -r $QMK_FIRMWARE_DIR/requirements.txt
}
33 changes: 33 additions & 0 deletions util/install/gentoo.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash

_qmk_install_prepare() {
echo "This script will make a USE change in order to ensure that that QMK works on your system."
echo "All changes will be sent to the file /etc/portage/package.use/qmkfirmware -- please review it, and read Portage's output carefully before installing any packages on your system."
echo "You will also need to ensure that your kernel is compiled with support for the microcontroller that you are using (e.g. enable Arduino for the Pro Micro). Further information can be found on the Gentoo wiki."

read -p "Proceed? [y/N] " res
case $res in
[Yy]*)
return 0;;
*)
return 1;;
esac
}

_qmk_install() {
echo "Installing dependencies"

sudo touch /etc/portage/package.use/qmkfirmware
# tee is used here since sudo doesn't apply to >>
echo "sys-devel/gcc multilib" | sudo tee --append /etc/portage/package.use/qmkfirmware >/dev/null
sudo emerge -auN sys-devel/gcc
sudo emerge -au --noreplace \
app-arch/unzip app-arch/zip net-misc/wget sys-devel/clang sys-devel/crossdev \
dev-lang/python3 \
fauxpark marked this conversation as resolved.
Show resolved Hide resolved
dev-embedded/avrdude dev-embedded/dfu-programmer app-mobilephone/dfu-util

sudo crossdev -s4 --stable --g \<9 --portage --verbose --target avr
sudo crossdev -s4 --stable --g \<9 --portage --verbose --target arm-none-eabi

python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt
}
13 changes: 13 additions & 0 deletions util/install/linux_shared.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash

# For those distros that do not package bootloadHID
_qmk_install_bootloadhid() {
if ! command -v bootloadHID > /dev/null; then
wget https://www.obdev.at/downloads/vusb/bootloadHID.2012-12-08.tar.gz -O - | tar -xz -C /tmp
pushd /tmp/bootloadHID.2012-12-08/commandline/ > /dev/null
if make; then
sudo cp bootloadHID /usr/local/bin
fi
popd > /dev/null
fi
}
26 changes: 26 additions & 0 deletions util/install/macos.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/bin/bash

_qmk_install_prepare() {
echo "Checking Homebrew installation"

if ! brew --version >/dev/null 2>&1; then
echo "Error! Homebrew is broken or not installed."
echo "Please run \`brew doctor\` or follow the installation instructions at https://brew.sh/, then re-run this script."
return 1
fi

brew update && brew upgrade
}

_qmk_install() {
echo "Installing dependencies"

# All macOS dependencies are managed in the Homebrew package:
# https://github.com/qmk/homebrew-qmk
brew install qmk/qmk/qmk

brew link --force avr-gcc@8
brew link --force arm-gcc-bin@8

python3 -m pip install -r $QMK_FIRMWARE_DIR/requirements.txt
}
36 changes: 36 additions & 0 deletions util/install/msys2.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/bin/bash

_qmk_install_prepare() {
pacman -Syu
}

_qmk_install() {
echo "Installing dependencies"

pacman --needed --noconfirm --disable-download-timeout -S pactoys-git
pacboy sync --needed --noconfirm --disable-download-timeout \
base-devel: toolchain:x clang:x git: unzip: \
python3-pip:x \
avr-binutils:x avr-gcc:x avr-libc:x \
arm-none-eabi-binutils:x arm-none-eabi-gcc:x arm-none-eabi-newlib:x \
avrdude:x bootloadhid:x dfu-programmer:x dfu-util:x teensy-loader-cli:x

_qmk_install_drivers

python3 -m pip install -r "$QMK_FIRMWARE_DIR/requirements.txt"
}

_qmk_install_drivers() {
echo "Installing drivers"

tmpdir=$(mktemp -d)
cp "$QMK_FIRMWARE_UTIL_DIR/drivers.txt" $tmpdir
pushd $tmpdir > /dev/null

wget "https://github.com/qmk/qmk_driver_installer/releases/download/v1.01/qmk_driver_installer.exe"

cmd.exe //c "qmk_driver_installer.exe --all --force drivers.txt"

popd > /dev/null
rm -r $tmpdir
}
31 changes: 31 additions & 0 deletions util/install/opensuse.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/bin/bash

_qmk_install_prepare() {
case $(grep ID /etc/os-release) in
*15.1*)
REPO_RELEASE=Leap_15.1;;
*15.2*)
REPO_RELEASE=Leap_15.2;;
*)
#REPO_RELEASE=Tumbleweed;;
echo "ERROR: Tumbleweed is currently not supported."
exit 1
esac

sudo zypper addrepo https://download.opensuse.org/repositories/devel:gcc/openSUSE_$REPO_RELEASE/devel:gcc.repo
sudo zypper addrepo https://download.opensuse.org/repositories/hardware/openSUSE_$REPO_RELEASE/hardware.repo
sudo zypper --gpg-auto-import-keys refresh
}

_qmk_install() {
echo "Installing dependencies"

sudo zypper install -y \
make clang gcc unzip wget zip \
python3-pip \
cross-avr-binutils cross-avr-gcc8 avr-libc \
cross-arm-binutils cross-arm-none-gcc8 cross-arm-none-newlib-devel \
avrdude dfu-programmer dfu-util

python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt
}
Comment on lines +1 to +31
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no Tumbleweed directory for devel:gcc, and cross-arm-none-gcc8 throws a bunch of linker errors on Leap... so OpenSUSE support is broken at this time. If any OpenSUSE user is able to provide a fix (or better yet, fix the packages and repos), it would be much appreciated!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be worth grabbing the official ARM toolchain in this circumstance, then?
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

Copy link
Member Author

@fauxpark fauxpark Oct 23, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd kinda like to avoid another ~/qmk_utils folder if at all possible, considering you have to modify the .bashrc to add it to PATH (and some users may not be running bash), and then a new terminal must be opened before qmk doctor displays the correct results. Preferably the already existing package should be fixed.

15 changes: 15 additions & 0 deletions util/install/sabayon.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash

_qmk_install() {
echo "Installing dependencies"

sudo equo install \
app-arch/unzip app-arch/zip net-misc/wget sys-devel/clang sys-devel/gcc sys-devel/crossdev \
dev-lang/python \
dev-embedded/avrdude dev-embedded/dfu-programmer app-mobilephone/dfu-util

sudo crossdev -s4 --stable --g \<9 --portage --verbose --target avr
sudo crossdev -s4 --stable --g \<9 --portage --verbose --target arm-none-eabi

python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt
}
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After switching to the sabayonlinux.org repo (rather than sabayon-weekly) I was able to update the distro - for some reason the weekly repo wanted to upgrade mesa to a version that was not in any of the mirrors.
Now, the crossdev commands fail with:

/usr/bin/crossdev: line 1019: multilib_env: command not found

 * error: could not load multilib settings for HCHOST

🤷

25 changes: 25 additions & 0 deletions util/install/slackware.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/bin/bash

_qmk_install_prepare() {
echo "Before you continue, please ensure that your user is added to sudoers and that sboinstall is configured."
read -p "Proceed? [y/N] " res

case $res in
[Yy]*)
;;
*)
return 1;;
esac
}

_qmk_install() {
echo "Installing dependencies"

sudo sboinstall \
avr-binutils avr-gcc avr-libc \
arm-binutils arm-gcc newlib \
python3 \
avrdude dfu-programmer dfu-util teensy_loader_cli

python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt
}
18 changes: 18 additions & 0 deletions util/install/solus.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/bash

_qmk_install_prepare() {
sudo eopkg ur
}

_qmk_install() {
echo "Installing dependencies"

sudo eopkg it -c \
system.devel git wget zip unzip \
python3 \
avr-binutils avr-gcc avr-libc \
arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib \
avrdude dfu-programmer dfu-util

python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt
}
15 changes: 15 additions & 0 deletions util/install/void.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash

_qmk_install() {
echo "Installing dependencies"

sudo xbps-install \
gcc git make wget unzip zip \
python3-pip \
avr-binutils avr-gcc avr-libc \
cross-arm-none-eabi-binutils cross-arm-none-eabi-gcc cross-arm-none-eabi-newlib \
avrdude dfu-programmer dfu-util teensy_loader_cli \
libusb-compat-devel

python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt
}
Loading