Giter VIP home page Giter VIP logo

iridium-browser-dev's Introduction

HOWTO compile Iridium on Linux

See also https://code.google.com/p/chromium/wiki/LinuxBuildInstructions and https://code.google.com/p/chromium/wiki/LinuxFasterBuilds

Clone iridium-browser-dev

We use a clone of the iridium-browser-dev repository as our base for developing Iridium.

git clone https://github.com/iridium-browser/iridium-browser-dev.git

Google depot tools

Make sure to have the depot tools from Google in your path.

Configure Iridium development

You need a base directory for your Iridium development. You can use the iridium-browser-dev directory from above. For all the following commands, make sure you are in that directory.

gclient config --name=src "git+https://git.iridiumbrowser.de/git/iridium-browser"

This creates the .gclient configuration file so that you can use the depot tools with Iridium.

Sync Iridium source

The Iridium source and all dependencies are managed by gclient. This will take a while when you do it for the first time. You should have around 30 GB disk space available to do Iridium development.

gclient sync --with_branch_heads --nohooks

This creates a new directory called src.

Install build dependencies

Building requires various packages installed on your system.

bison brlapi-devel curl dejavu-fonts elfutils ffmpeg-devel flex gcc-c++ git-core git-svn gperf krb5-devel lksctp-tools-devel lsb-release mozilla-nspr-devel mozilla-nss-devel nodejs openbox pam-devel patch perl perl-libwww-perl pkg-config pkgconfig(alsa) pkgconfig(atk) pkgconfig(bluez) pkgconfig(gconf-2.0) pkgconfig(gl) pkgconfig(glib-2.0) pkgconfig(gnome-keyring-1) pkgconfig(gtk+-2.0) pkgconfig(gtk+-3.0) pkgconfig(libavcodec) pkgconfig(libavdevice) pkgconfig(libavfilter) pkgconfig(libavformat) pkgconfig(libavresample) pkgconfig(libavutil) pkgconfig(libdrm) pkgconfig(libelf) pkgconfig(libffi) pkgconfig(libpci) pkgconfig(libpostproc) pkgconfig(libpulse) pkgconfig(libswresample) pkgconfig(libswscale) pkgconfig(libxslt) pkgconfig(openssl) pkgconfig(pulseaudio) pkgconfig(speech-dispatcher) pkgconfig(sqlite3) pkgconfig(udev) pkgconfig(xkbcommon) pkgconfig(xscrnsaver) pkgconfig(xt) pkgconfig(xtst) python python-crypto python-devel python-numpy python-opencv python-openssl python-psutil python-yaml python3-CherryPy rpm ruby subversion wdiff xcompmgr zip (+texlive-ipa-fonts maybe)

There is an installation helper script (src/build/install-build-deps.sh), but its scope is very limited and only works for x86/x86_64 systems that use both apt-get and the Debian package names.

Prepare building

After you have the build dependencies and source, some third party packages need to be prepared. This happens by running the gclient hooks.

gclient runhooks

(This downloads toolchains and buildroots from google and this will be deactivated soon enough…)

A symlink may need to be set for nodejs if DEPS did not specify a download for node.

src/third_party/node/linux/node-linux-x64/bin/node -> /usr/bin/node

Build

You are now ready to build. Ninja is managing the build process. It will only compile what is required and detects changes automatically. This produces a chrome binary at src/out/Release/chrome, which is the Iridium program.

ninja -C src/out/Release chrome chrome_sandbox

Install sandbox

To run Iridium, the sandbox needs to be set up. On Linux, see here for details. Installing the sandbox requires sudo permission on your machine.

BUILDTYPE=Release src/build/update-linux-sandbox.sh

Start it

Whenever you start Iridium, it needs to know the location of the sandbox. It is conveyed by an environment variable. You can add this to your .bashrc, too.

CHROME_DEVEL_SANDBOX=/usr/local/sbin/chrome-devel-sandbox src/out/Release/chrome

Develop

Make your changes and rebuild. To pull in new changes, go to the src directory and run git pull (switch to a branch) and after that, run gclient sync in your base directory again, to make sure third party packages are updated.

In general, development for Iridium is the same as for Chromium. Thus, if you are familiar with that, you are ready to go.

Use a temporary profile

Sometimes, it is useful to use a temporary profile.

CHROME_DEVEL_SANDBOX=/usr/local/sbin/chrome-devel-sandbox src/out/Release/chrome --user-data-dir=/tmp/iridium-temp-profile

Updating

The Iridum source master branch is constantly rebased onto the Chromium upstream. Therefore, to update, you need to hard-reset the src directory to origin/master before running gclient.

cd src
git fetch
git reset --hard origin/master
cd ..
gclient sync --with_branch_heads --nohooks

iridium-browser-dev's People

Contributors

fancycode avatar jengelh avatar longsleep avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.