Giter VIP home page Giter VIP logo

docker-lineageos's Introduction

docker-lineageos

Create a Docker based environment to build LineageOS.

This Dockerfile will create a docker container which is based on Ubuntu 16.04. It will install the "repo" utility and any other build dependencies which are required to compile LineageOS (formerly known as CyanogenMod).

The main working directory is a shared folder on the host system, so the Docker container can be removed at any time.

NOTE: Remember that LineageOS is a huge project. It will consume a large amount of disk space (~80 GB) and it can easily take hours to build.

How to run/build

NOTES:

  • You will need to install Docker to proceed!
  • If an image does not exist, docker build is executed first
git clone https://github.com/stucki/docker-lineageos.git
cd docker-lineageos
./run.sh

The run.sh script accepts the following switches:

Switch Alternative Description
-u --enable-usb Runs the container in privileged mode (this way you can use adb right from the container)
-r --rebuild Force rebuild the image from scratch
-ws --with-su Sets the WITH_SU environment variable to true (your builds will include the su binary)

The container uses "screen" to run the shell. This means that you will be able to open additional shells using screen keyboard shortcuts.

ADB in the container

If you're on Linux and want to use adb from within the container running with -u might not be enough. Make sure you have the Android udev rules installed on your host system so you can access your device without needing superuser permissions.

How to build LineageOS for your device

repo init -u git://github.com/lineageos/android.git -b lineage-15.1
repo sync -c -j 16
source build/envsetup.sh
breakfast <device codename>   # example: breakfast grouper
brunch <device codename>      # example: brunch grouper

Links

For further information, check the following links:

More information

==================

docker-lineageos's People

Contributors

alvarobrey avatar amfern avatar bebehei avatar kaystrobach avatar meanderingcode avatar michalcz avatar peque avatar scintill avatar seanfreiburg avatar stucki avatar swrh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docker-lineageos's Issues

Cannot use ADB inside docker when adb server isn't started with sudo

When I try to list the adb devices it returns with an error:

build@976cd17ce1e8:~/android$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
????????????    no permissions

It turns out that the adb server has to be started with root privileges, the following does work:

build@976cd17ce1e8:~/android$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
build@976cd17ce1e8:~/android$ adb devices
List of devices attached 
335b3080        unauthorized

Unauthorized here is normal because I did not give permission to adb on my phone.

Docker registry?

I saw that this docker is not listed anywhere on Docker Hub.

Why don't you consider creating an automated build there?

Document recommendations

Hi, thank you for this project, it really helps!

maybe it would be useful for those who are pretty new to android and docker,
that repo sync is much faster if it is 'repo sync -c j5'
and also, that if used together with docker under windows 7, i.e. docker under oracle virtual box, then bug in virtual box will not allow to repo sync to complete (even with options), just some bug in network bridge driver of virtialbox.
in docker for windows on Hyper=V (windows 10) is runs smooth

thank you again for your work, it's great, I use it already almost 2 months

Cron jobs

Would be awesome if you could add cronjobs support to this Docker, by customing two ENV variables:

CRONJOB_TIME="00 12 * * *"
DEVICE_LIST="hammerhead,bullhead"

This would improve a lot for example considering the usage of a nightly build.

Thank you in advance :)

Old Path to /home/cmbuild/prebuilts/

While building I got an error for a missing standard library. After lots of trial and error I recognized the old path in the error message. Unfortunately I can't post the complete message here right now, cause my build process is just working and I don't want to mess it up. I fixed it by adding the folder /home/cmbuild and set a symlink to /home/build/android/prebuilts/

The error was in the path for gcc arm64. I don't know if it is just for arm64 or not.

I would search for the error, but I have no idea where this false path comes from, because its nowhere in the repository.

BSD's (OSX) readlink -f is different from GNU's

GNU will canonicalize the result whereas OS'x implementation expects a format string.

A solution is to use stat (from this SO answer).

On my machine this works, otherwise the script will fail at the last step to start the container with the following error:

docker: Error response from daemon: Invalid volume spec ":/srv/ccache": Invalid volume specification: ':/srv/ccache'.

I will be successfully dropped into a screen session inside the container.

Will open PR

make: *** No rule to make target 'libsrv_init'

target thumb C: pppd <= external/ppp/pppd/upap.c
make: *** No rule to make target 'libsrv_init', needed by '/home/build/android/android/out/target/product/maguro/obj/EXECUTABLES/pvrsrvinit_intermediates/pvrsrvinit.o'. Stop.
make: *** Waiting for unfinished jobs....
target thumb C: pppd <= external/ppp/pppd/utils.c

make failed to build some targets

i have try to build lineageos with docker on macOS 10.11.6。the source tree has alread downloaded on external device. exec ./run.sh and got an error.

Checking build tools versions...
build/core/main.mk:168: ************************************************************
build/core/main.mk:169: You are building on a case-insensitive filesystem.
build/core/main.mk:170: Please move your source tree to a case-sensitive filesystem.
build/core/main.mk:171: ************************************************************
build/core/main.mk:172: *** Case-insensitive filesystems not supported.
build/core/ninja.mk:166: recipe for target '/home/build/android/out/build-cm_hammerhead.ninja' failed
make: *** [/home/build/android/out/build-cm_hammerhead.ninja] Error 1
make: Leaving directory '/home/build/android'

make failed to build some targets (02:43 (mm:ss))

how to fix it?

Python3 not installed

Hello πŸ‘‹πŸΏ ,

you do not have python3 (only python2 is available) installed inside the container, so how are you executing the repo tool?

Still the bulid container is a great idea πŸ‘πŸΏ

Best wishes

Curl download failed

I had trouble downloading some package. Can't remember which one it was. To fix it i add a ~/.curlrc config file with the following entry: --cipher rsa_rc4_128_sha

Missing package

Hi,

i had to install imagemagick as brunch stopped with critical error that this was missing
sudo apt-get install imagemagick
did it

I tried building LineageOS for flo

samsung_klte_make_faild

build/core/binary.mk:1253: external/deqp/Android.mk: libdeqp: Unused source files:
build/core/binary.mk:1253: external/pdfium/third_party/pdfiumbigint.mk: libpdfiumbigint: Unused source files: bigint/BigInteger.cc bigint/BigIntegerUtils.cc bigint/BigUnsigned.cc bigint/BigUnsignedInABase.cc
frameworks/av/camera/cameraserver/Android.mk:18: Target has integrated cameraserver into mediaserver. This is weakening security measures introduced in 7.0
build/core/package_internal.mk:143: Empty argument supplied to find-subdir-assets
find: '/home/build/android/out/target/common/obj/SHARED_LIBRARIES/libwifi-hal-mock_intermediates': No such file or directory
build/core/package_internal.mk:143: Empty argument supplied to find-subdir-assets
No private recovery resources for TARGET_DEVICE klte
build/core/java.mk:334: warning: overriding commands for target /home/build/android/out/target/common/obj/APPS/Dialer_intermediates/src/src/org/codeaurora/presenceserv/IPresenceService.java' build/core/java.mk:334: warning: ignoring old commands for target /home/build/android/out/target/common/obj/APPS/Dialer_intermediates/src/src/org/codeaurora/presenceserv/IPresenceService.java'
build/core/java.mk:334: warning: overriding commands for target /home/build/android/out/target/common/obj/APPS/Dialer_intermediates/src/src/org/codeaurora/presenceserv/IPresenceServiceCB.java' build/core/java.mk:334: warning: ignoring old commands for target /home/build/android/out/target/common/obj/APPS/Dialer_intermediates/src/src/org/codeaurora/presenceserv/IPresenceServiceCB.java'
build/core/base_rules.mk:316: warning: overriding commands for target /home/build/android/out/target/product/klte/root/res/images/charger/battery_fail.png' build/core/base_rules.mk:316: warning: ignoring old commands for target /home/build/android/out/target/product/klte/root/res/images/charger/battery_fail.png'
build/core/Makefile:34: warning: overriding commands for target /home/build/android/out/target/product/klte/system/etc/clatd.conf' build/core/base_rules.mk:316: warning: ignoring old commands for target /home/build/android/out/target/product/klte/system/etc/clatd.conf'
Starting build with ninja
ninja: Entering directory `.'
ninja: error: '/home/build/android/out/target/product/klte/obj/lib/libtime_genoff.so.toc', needed by '/home/build/android/out/target/product/klte/obj/SHARED_LIBRARIES/libandroid_servers_intermediates/LINKED/libandroid_servers.so', missing and no
known rule to make it
build/core/ninja.mk:151: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
make: Leaving directory '/home/build/android'

make failed to build some targets (29 seconds)

With SU

Would it be possible to add a new flag to the run command that will automatically set the WITH_SU environment variable to true?

Something like

./run.sh -ws

in which ws stands for with su

Running image on old docker

i had trouble to run the docker image. It failed with

Cannot open your terminal '/dev/console' - please check.

My setup:

  • CentOS release 6.8 (Final)
  • Docker version 1.7.1, build 786b29d

To work around this issue i changed the following line in startup.sh
screen -s /bin/bash
to
/bin/bash

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.