]> git.donarmstrong.com Git - qmk_firmware.git/blob - util/linux_install.sh
Add missing links to features page and sidebar section (#5949)
[qmk_firmware.git] / util / linux_install.sh
1 #!/bin/sh
2
3 # Note: This file uses tabs to indent. Please don't mix tabs and spaces.
4
5 GENTOO_WARNING="This script will make a USE change in order to ensure that that QMK works on your system. All changes will be sent to the the file /etc/portage/package.use/qmk_firmware -- please review it, and read Portage's output carefully before installing any packages on your system. You will also need to ensure that your kernel is compiled with support for the keyboard chip that you are using (e.g. enable Arduino for the Pro Micro). Further information can be found on the Gentoo wiki."
6
7 SLACKWARE_WARNING="You will need the following packages from slackbuilds.org:\n\tarm-binutils\n\tarm-gcc\n\tavr-binutils\n\tavr-gcc\n\tavr-libc\n\tavrdude\n\tdfu-programmer\n\tdfu-util\n\tnewlib\nThese packages will be installed with sudo and sboinstall, so ensure that your user is added to sudoers and that sboinstall is configured."
8
9 SOLUS_INFO="Your tools are now installed. To start using them, open new terminal or source these scripts:\n\t/usr/share/defaults/etc/profile.d/50-arm-toolchain-path.sh\n\t/usr/share/defaults/etc/profile.d/50-avr-toolchain-path.sh"
10
11 if grep ID /etc/os-release | grep -qE "fedora"; then
12         sudo dnf install \
13                 arm-none-eabi-binutils-cs \
14                 arm-none-eabi-gcc-cs \
15                 arm-none-eabi-newlib \
16                 avr-binutils \
17                 avr-gcc \
18                 avr-libc \
19                 binutils-avr32-linux-gnu \
20                 dfu-util \
21                 dfu-programmer \
22                 diffutils \
23                 git \
24                 gcc \
25                 glibc-headers \
26                 kernel-devel \
27                 kernel-headers \
28                 make \
29                 perl \
30                 python3 \
31                 unzip \
32                 wget \
33                 zip
34
35 elif grep ID /etc/os-release | grep -qE 'debian|ubuntu'; then
36         DEBIAN_FRONTEND=noninteractive
37         DEBCONF_NONINTERACTIVE_SEEN=true
38         export DEBIAN_FRONTEND DEBCONF_NONINTERACTIVE_SEEN
39         sudo apt-get update
40         sudo apt-get -yq install \
41                 build-essential \
42                 avr-libc \
43                 binutils-arm-none-eabi \
44                 binutils-avr \
45                 dfu-programmer \
46                 dfu-util \
47                 diffutils \
48                 gcc \
49                 gcc-arm-none-eabi \
50                 gcc-avr \
51                 git \
52                 libnewlib-arm-none-eabi \
53                 python3 \
54                 unzip \
55                 wget \
56                 zip
57
58 elif grep ID /etc/os-release | grep -q 'arch\|manjaro'; then
59         sudo pacman -U https://archive.archlinux.org/packages/a/avr-gcc/avr-gcc-8.3.0-1-x86_64.pkg.tar.xz
60         sudo pacman -S \
61                 arm-none-eabi-binutils \
62                 arm-none-eabi-gcc \
63                 arm-none-eabi-newlib \
64                 avr-binutils \
65                 avr-libc \
66                 avr-gcc \
67                 base-devel \
68                 dfu-util \
69                 diffutils \
70                 gcc \
71                 git \
72                 python \
73                 unzip \
74                 wget \
75                 zip
76         git clone https://aur.archlinux.org/dfu-programmer.git /tmp/dfu-programmer
77         cd /tmp/dfu-programmer || exit 1
78         makepkg -sic
79         rm -rf /tmp/dfu-programmer/
80
81 elif grep ID /etc/os-release | grep -q gentoo; then
82         echo "$GENTOO_WARNING" | fmt
83         printf "\nProceed (y/N)? "
84         read -r answer
85         if echo "$answer" | grep -iq "^y"; then
86                 sudo touch /etc/portage/package.use/qmkfirmware
87                 # tee is used here since sudo doesn't apply to >>
88                 echo "sys-devel/gcc multilib" | sudo tee --append /etc/portage/package.use/qmkfirmware >/dev/null
89                 sudo emerge -auN \
90                         app-arch/unzip \
91                         app-arch/zip \
92                         app-mobilephone/dfu-util \
93                         dev-embedded/avrdude \
94                         dev-lang/python:3.5 \
95                         net-misc/wget \
96                         sys-devel/gcc \
97                         sys-devel/crossdev
98                 sudo crossdev -s4 --stable --g =4.9.4 --portage --verbose --target avr
99                 echo "Done!"
100         else
101                 echo "Quitting..."
102         fi
103
104 elif grep ID /etc/os-release | grep -q sabayon; then
105         sudo equo install \
106                 app-arch/unzip \
107                 app-arch/zip \
108                 app-mobilephone/dfu-util \
109                 dev-embedded/avrdude \
110                 dev-lang/python \
111                 net-misc/wget \
112                 sys-devel/gcc \
113                 sys-devel/crossdev
114         sudo crossdev -s4 --stable --g =4.9.4 --portage --verbose --target avr
115         echo "Done!"
116
117 elif grep ID /etc/os-release | grep -qE "opensuse|tumbleweed"; then
118         CROSS_AVR_GCC=cross-avr-gcc8
119         CROSS_ARM_GCC=cross-arm-none-gcc8
120         if grep ID /etc/os-release | grep -q "15.0"; then
121                 CROSS_AVR_GCC=cross-avr-gcc7
122                 CROSS_ARM_GCC=cross-arm-none-gcc7
123         fi
124         sudo zypper install \
125                 avr-libc \
126                 $CROSS_AVR_GCC \
127                 $CROSS_ARM_GCC \
128                 cross-avr-binutils \
129                 cross-arm-none-newlib-devel \
130                 cross-arm-binutils cross-arm-none-newlib-devel \
131                 dfu-tool \
132                 dfu-programmer \
133                 gcc \
134                 python3 \
135                 unzip \
136                 wget \
137                 zip
138
139 elif grep ID /etc/os-release | grep -q slackware; then
140         printf "$SLACKWARE_WARNING\n"
141         printf "\nProceed (y/N)? "
142         read -r answer
143         if echo "$answer" | grep -iq "^y" ;then
144                 sudo sboinstall \
145                         avr-binutils \
146                         avr-gcc \
147                         avr-libc \
148                         avrdude \
149                         dfu-programmer \
150                         dfu-util \
151                         arm-binutils \
152                         arm-gcc \
153                         newlib \
154                         python3
155                 echo "Done!"
156         else
157                 echo "Quitting..."
158         fi
159
160 elif grep ID /etc/os-release | grep -q solus; then
161         sudo eopkg ur
162         sudo eopkg it \
163                 -c system.devel \
164                 arm-none-eabi-gcc \
165                 arm-none-eabi-binutils \
166                 arm-none-eabi-newlib \
167                 avr-libc \
168                 avr-binutils \
169                 avr-gcc \
170                 avrdude \
171                 dfu-util \
172                 dfu-programmer \
173                 python3 \
174                 git \
175                 wget \
176                 zip \
177                 unzip
178         printf "\n$SOLUS_INFO\n"
179
180 else
181         echo "Sorry, we don't recognize your OS. Help us by contributing support!"
182         echo
183         echo "https://docs.qmk.fm/#/contributing"
184 fi