From 50dd651fab8174c97017bd8a0e17771d15b9a0f0 Mon Sep 17 00:00:00 2001
From: Cassiano Aquino <cassianoaquino@me.com>
Date: Fri, 4 Oct 2019 23:15:47 +0100
Subject: [PATCH 1/2] move dependencies to binary or deb packages

---
 builder/pwnagotchi.yml | 79 ++++++++++++++++++++++++++++++++++--------
 1 file changed, 64 insertions(+), 15 deletions(-)

diff --git a/builder/pwnagotchi.yml b/builder/pwnagotchi.yml
index 515ee70..e091dab 100644
--- a/builder/pwnagotchi.yml
+++ b/builder/pwnagotchi.yml
@@ -3,8 +3,9 @@
     - 127.0.0.1
   become: yes
   vars:
-    pwn_hostname: "pwnagotchi"
-    pwn_version: "master"
+    pwn_hostname: "{{ lookup('env', 'PWN_HOSTNAME') | default('pwnagotchi', true) }}"
+    pwn_version: "{{ lookup('env', 'PWN_VERSION') | default('master', true) }} "
+    bettercap_query: "assets[?contains(name, 'armv6l')].browser_download_url"
 
   tasks:
 
@@ -57,6 +58,7 @@
         - git
         - build-essential
         - python3-pip
+        - unzip
         - gawk
         - libopenmpi-dev
         - libatlas-base-dev
@@ -87,6 +89,25 @@
         - fonts-dejavu
         - fonts-dejavu-core
         - fonts-dejavu-extra
+        - python3-crypto
+        - python3-requests
+        - python3-yaml
+        - python3-smbus
+        - python3-inkyphat
+        - python3-numpy
+        - python3-pil
+        - python3-tweepy
+        - python3-opencv
+        - python3-termcolor
+        - python3-astor
+        - python3-backports.weakref
+        - python3-keras-applications
+        - python3-keras-preprocessing
+        - python3-six
+        - python3-protobuf
+        - python3-wrapt
+        - python3-wheel
+        - python3-mock
 
   - name: configure dphys-swapfile
     file:
@@ -113,16 +134,48 @@
       state: started
       enabled: yes
 
-  - name: build bettercap
-    command: go get -u github.com/bettercap/bettercap
-    environment:
-      GOPATH: /root/go
-      GOROOT: /usr/lib/go
+  - name: acquire python3 pip target
+    command: "python3 -c 'import sys;print(sys.path.pop())'"
+    register: pip_target
 
-  - name: install bettercap
-    copy:
-      src: /root/go/bin/bettercap
-      dest: /usr/bin/bettercap
+  - name: install pip packages that are not architecture tied
+    pip:
+      name: "{{ packages }}"
+      extra_args: "--no-deps --extra-index-url=https://www.piwheels.hostedpi.com/simple/ --prefer-binary --no-cache-dir --platform=armv6l --target={{ pip_target.stdout }}"
+    vars:
+      packages:
+        - absl-py
+        - enum34
+        - gast
+        - google_pasta
+        - opt_einsum
+        - tensorboard
+        - scapy
+        - gym
+        - stable-baselines
+        - file_read_backwards
+        - tensorflow_estimator
+
+  - name: install grpcio
+    command: "pip3 install --no-deps --extra-index-url=https://www.piwheels.hostedpi.com/simple/ --no-cache-dir --prefer-binary --platform=armv6l --only-binary=:all: --target={{ pip_target.stdout }} https://www.piwheels.hostedpi.com/simple/grpcio/grpcio-1.24.1-cp37-cp37m-linux_armv6l.whl"
+
+  - name: install tensorflow
+    command: "pip3 install --no-deps --extra-index-url=https://www.piwheels.hostedpi.com/simple/ --no-cache-dir --prefer-binary --platform=armv6l --only-binary=:all: --target={{ pip_target.stdout }} https://storage.googleapis.com/tensorflow/raspberrypi/tensorflow-1.14.0-cp34-none-linux_armv6l.whl"
+
+  - name: fetch bettercap release information
+    uri:
+      url: https://api.github.com/repos/bettercap/bettercap/releases/latest
+      return_content: yes
+    register: bettercap_release
+
+  - name: download and install bettercap
+    unarchive:
+      src: "{{ bettercap_release.content | from_json | json_query(bettercap_query) | first }}"
+      dest: /usr/bin
+      remote_src: yes
+      exclude:
+        - README.md
+        - LICENSE.md
       mode: 0755
 
   - name: clone bettercap caplets
@@ -151,10 +204,6 @@
       path: /tmp/pwnagotchi
       state: absent
 
-  - name: install python modules
-    pip:
-      requirements: /root/pwnagotchi/scripts/requirements.txt
-
   - name: create cpuusage script
     copy:
       dest: /usr/bin/cpuusage

From cc651c3290ff3b2538694b592f1df1ff9556a85e Mon Sep 17 00:00:00 2001
From: Cassiano Aquino <cassianoaquino@me.com>
Date: Sat, 5 Oct 2019 17:31:14 +0100
Subject: [PATCH 2/2] many builder fixes and support for serial gadget

---
 builder/pwnagotchi.yml | 44 +++++++++++++++++++++++++++++++++---------
 1 file changed, 35 insertions(+), 9 deletions(-)

diff --git a/builder/pwnagotchi.yml b/builder/pwnagotchi.yml
index e091dab..d2263a8 100644
--- a/builder/pwnagotchi.yml
+++ b/builder/pwnagotchi.yml
@@ -42,6 +42,19 @@
     apt:
       update_cache: yes
 
+  - name: remove unecessary apt packages
+    apt:
+      name: "{{ packages }}"
+      state: absent
+      purge: yes
+    var:
+      packages:
+        - rasberrypi-net-mods
+        - dhcpcd5
+        - triggerhappy
+        - wpa_supplicant
+        - nfs-common
+
   - name: upgrade apt distro
     apt:
       upgrade: dist
@@ -101,13 +114,14 @@
         - python3-termcolor
         - python3-astor
         - python3-backports.weakref
-        - python3-keras-applications
-        - python3-keras-preprocessing
+        - python3-h5py
         - python3-six
         - python3-protobuf
         - python3-wrapt
         - python3-wheel
         - python3-mock
+        - python3-scipy
+        - python3-cloudpickle
 
   - name: configure dphys-swapfile
     file:
@@ -125,8 +139,10 @@
         - apt-daily.service
         - apt-daily-upgrade.timer
         - apt-daily-upgrade.service
+        - wpa_supplicant.service
         - bluetooth.service
         - triggerhappy.service
+        - ifup@wlan0.service
 
   - name: enable dphys-swapfile service
     systemd:
@@ -134,33 +150,43 @@
       state: started
       enabled: yes
 
+  - name: enable gadget serial port service
+    systemd:
+      name: getty@ttyGS0.service
+      state: started
+      enabled: yes
+
   - name: acquire python3 pip target
     command: "python3 -c 'import sys;print(sys.path.pop())'"
     register: pip_target
 
-  - name: install pip packages that are not architecture tied
+  - name: install pip packages
     pip:
       name: "{{ packages }}"
       extra_args: "--no-deps --extra-index-url=https://www.piwheels.hostedpi.com/simple/ --prefer-binary --no-cache-dir --platform=armv6l --target={{ pip_target.stdout }}"
     vars:
       packages:
-        - absl-py
+        - inky
+        - smbus2
+        - absl-py>=0.1.6
         - enum34
-        - gast
+        - gast==0.2.2
         - google_pasta
         - opt_einsum
-        - tensorboard
         - scapy
         - gym
+        - keras_applications>=1.0.6
+        - keras_preprocessing>=1.0.5
         - stable-baselines
         - file_read_backwards
-        - tensorflow_estimator
+        - tensorflow_estimator>=1.14.0,<1.15.0
+        - tensorboard>=1.13.0,<1.14.0
 
   - name: install grpcio
     command: "pip3 install --no-deps --extra-index-url=https://www.piwheels.hostedpi.com/simple/ --no-cache-dir --prefer-binary --platform=armv6l --only-binary=:all: --target={{ pip_target.stdout }} https://www.piwheels.hostedpi.com/simple/grpcio/grpcio-1.24.1-cp37-cp37m-linux_armv6l.whl"
 
   - name: install tensorflow
-    command: "pip3 install --no-deps --extra-index-url=https://www.piwheels.hostedpi.com/simple/ --no-cache-dir --prefer-binary --platform=armv6l --only-binary=:all: --target={{ pip_target.stdout }} https://storage.googleapis.com/tensorflow/raspberrypi/tensorflow-1.14.0-cp34-none-linux_armv6l.whl"
+    command: "pip3 install --no-deps --extra-index-url=https://www.piwheels.hostedpi.com/simple/ --no-cache-dir --prefer-binary --platform=armv6l --only-binary=:all: --target={{ pip_target.stdout }} https://www.piwheels.org/simple/tensorflow/tensorflow-1.13.1-cp37-none-linux_armv6l.whl"
 
   - name: fetch bettercap release information
     uri:
@@ -318,7 +344,7 @@
       state: present
       backup: no
       regexp: '(.*)$'
-      line: '\1 modules-load=dwc2,g_ether'
+      line: '\1 modules-load=dwc2,g_cdc'
 
   - name: configure ssh
     lineinfile: