]> git.donarmstrong.com Git - qmk_firmware.git/blob - util/install_dependencies.sh
Merge remote-tracking branch 'refs/remotes/jackhumbert/master'
[qmk_firmware.git] / util / install_dependencies.sh
1 #!/usr/bin/env bash
2 # This script will attempt to setup the Linux dependencies for compiling QMK/TMK
3
4 # This could probably go much lower, but since we are including an Arch vagrant,
5 # making it the first match makes sense
6
7 if [[ -n "$(type -P pacman )" ]]; then
8   # Arch linux and derivatives like Apricity
9   # Future improvements:
10   # Allow user to speed up package installs using powerpill/wget tweaks
11   # Always run the pacman mirror update script if possible when vagrant comes up
12   # This will ensure that users never get stalled on a horribly slow mirror
13   pacman -Syyu --needed --noconfirm
14   pacman -S --needed --noconfirm \
15     base-devel \
16     avr-gcc \
17     avr-binutils \
18     avr-libc \
19     dfu-util \
20     arm-none-eabi-gcc \
21     arm-none-eabi-binutils \
22     arm-none-eabi-newlib \
23     git \
24     diffutils
25
26 elif [[ -n "$(type -P apt-get)" ]]; then
27   # Debian and derivatives
28   # This block performs completely non-interactive updates {{
29   export DEBIAN_FRONTEND=noninteractive
30   export DEBCONF_NONINTERACTIVE_SEEN=true
31   echo "grub-pc hold" | dpkg --set-selections
32   apt-get -y update
33   apt-get -y --allow-unauthenticated upgrade \
34           -o Dpkg::Options::="--force-confdef" \
35           -o Dpkg::Options::="--force-confold"
36   # }}
37   apt-get install -y \
38     build-essential \
39     gcc \
40     unzip \
41     wget \
42     zip \
43     gcc-avr \
44     binutils-avr \
45     avr-libc \
46     dfu-programmer \
47     dfu-util \
48     gcc-arm-none-eabi \
49     binutils-arm-none-eabi \
50     libnewlib-arm-none-eabi \
51     git \
52     diffutils
53
54 elif [[ -n "$(type -P yum)" ]]; then
55   # Fedora, CentOS or RHEL and derivatives
56   yum -y makecache && yum -y update
57   yum -y install \
58     gcc \
59     glibc-headers \
60     kernel-devel \
61     kernel-headers \
62     make \
63     perl \
64     git \
65     wget \
66     avr-binutils \
67     avr-gcc \
68     avr-libc \
69     dfu-programmer \
70     dfu-util \
71     gcc-arm-none-eabi \
72     binutils-arm-none-eabi \
73     libnewlib-arm-none-eabi \
74     git \
75     diffutils
76   # The listed eabi pacackes do unfortunately not exist for CentOS,
77   # But at least in Fedora they do, so try to install them anyway
78   # TODO: Build them from sources, if the installation fails
79
80 elif [[ -n "$(type -P zypper)" ]]; then
81   # openSUSE
82   zypper --non-interactive refresh  && zypper --non-interactive update
83   zypper --non-interactive install \
84     git \
85     make \
86     gcc \
87     kernel-devel \
88     patch \
89     wget \
90     dfu-programmer \
91     git \
92     diffutils
93   # TODO: The avr and eabi tools are not available as default packages, so we need 
94   # another way to install them
95
96 fi