SETUP_DEV_LINUX.md 3.3 KB

How to setup the build environment for browsh on a generic Linux system

This guide was made for x86-64 based Linux systems. You may try to adapt it to other systems. In this guide, it is assumed that you can't install the required go, nodejs and firefox versions from your distribution's repositories. In case they are available, you should try to install go, nodejs and firefox using your distribution's package manager.

Installing golang

Get the latest amd64 binary for Linux on the golang download page.

Extract to /usr/local with:

$ tar  -C /usr/local -xzf go1.11.linux-amd64.tar.gz

Add /usr/local/go/bin to your PATH in ~/.profile

Installing nodejs/npm

Go to the nodejs download page and select the LTS version of the Linux x86 64bit binaries.

$ mkdir /usr/local/lib/nodejs
$ VERSION=v8.11.4
$ DISTRO=linux-x64
$ tar -xJvf node-$VERSION-$DISTRO.tar.xz -C /usr/local/lib/nodejs
$ mv /usr/local/lib/nodejs/node-$VERSION-$DISTRO /usr/local/lib/nodejs/node-$VERSION

Edit your ~/.profile to add /usr/local/lib/nodejs/node-v8.11.4/bin to your PATH, then reload your profile:

$ source ~/.profile

Create symlinks for node and npm:

$ sudo ln -s /usr/local/lib/nodejs/node-$VERSION/bin/node /usr/local/bin/node
$ sudo ln -s /usr/local/lib/nodejs/node-$VERSION/bin/npm /usr/local/bin/npm

Now you should be able to call the go and node binaries:

$ go version
$ node --version

Installing webpack and webpack-cli

(--no-audit is used to get around errors, may not be needed)

$ npm install -g --no-audit webpack
$ npm install -g webpack-cli

Installing web-ext

(--no-audit is used to get around errors, may not be needed)

$ npm install -g --ignore-scripts web-ext

Installing Firefox

You may install firefox from your distribution's repositories. Version 57 or higher is required.

Installing firefox from mozilla's binaries

See interfacer/contrib/setup_firefox.sh for reference.

$ export FIREFOX_VERSION=60.0
$ mkdir -p $HOME/bin
$ pushd $HOME/bin
$ curl -L -o firefox.tar.bz2 https://ftp.mozilla.org/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2
$ bzip2 -d firefox.tar.bz2
$ tar xf firefox.tar
$ popd

Cloning the browsh repository

It's assumed that you already have git installed.

Run this anywhere you want:

$ git clone https://github.com/browsh-org/browsh.git

Setting up the build environment in the cloned repository

Setting up dependencies

$ REPO_ROOT=/path/to/browsh
$ cd $REPO_ROOT/webext
$ source ~/.nvm/nvm.sh # this is optional
$ npm run get-gobindata
$ npm install
$ npm run build
$ diff -u <(echo -n) <(gofmt -d ./)
$ ./node_modules/.bin/prettier --list-different "{src,test}/**/*.js"

Building browsh

$ cd $REPO_ROOT/interfacer
$ go build -o browsh src/main.go

Building the web extension

In $REPO_ROOT/webext:

$ webpack --watch

This will continuously watch for changes made to the web extension and rebuild it.

Run firefox and the webextension

In $REPO_ROOT/webext/dist:

$ web-ext run --verbose --firefox path/to/firefox

Run browsh

$ cd $REPO_ROOT/interfacer
$ go run ./cmd/browsh --firefox.use-existing --debug

Or after building:

$ ./browsh --firefox.use-existing --debug