Guide on building Lollipop for the OnePlus One

Search This thread

Striatum_bdr

Senior Member
May 29, 2011
4,650
2,176
Marseille
Make clobber cleans all the compile tree. It isn't mandatory each time but can lead to errors. Most of the times unneeded probably.
 

raycaster3

Senior Member
Apr 17, 2011
3,888
1,202
S.Ogden
Is "make clobber" really mandatory to do? The building like this takes hours. Shouldn't the builder check what have changed and compiled only that?
It's not mandatory. I usually do make clean after every build and make clobber every 4th. If you use ccacche it's not that much longer. I mean you could just build dirty and repo sync and go without either, but you're asking for issues eventually. That's my limited experience. I've only been building for the past year or so.
 

Rycon33

Senior Member
Apr 28, 2011
3,215
2,130
Xiaomi Poco F3
Nice write-up mate. This will definitely motivates others to build as well. ?

Just to clarify, ./get-prebuilts need be done one time only and not for every build. At least on my personal experience.
 
  • Like
Reactions: Quasar

sahilkhurana

Senior Member
Dec 18, 2010
257
17
Delhi
If I understand correctly, after syncing source and building ROM, I would have exhausted 40GB of space ? OP says it is 20GB + 40 GB. My life hangs in a balance as I have 50GB overall free space. :)
 

Quasar

Inactive Recognized Developer
Dec 3, 2013
2,296
3,202
Mumbai
If I understand correctly, after syncing source and building ROM, I would have exhausted 40GB of space ? OP says it is 20GB + 40 GB. My life hangs in a balance as I have 50GB overall free space. :)

I'd say you shouldn't risk having very less space. Clear up at least 60 GB before building to be on the safe side.

Sent from my A0001 using XDA Premium 4 mobile app
 
  • Like
Reactions: sahilkhurana

Top Liked Posts

  • There are no posts matching your filters.
  • 40
    Today I went about and built a copy of CM12 for my phone so that I can control when I get updates and I can get the most latest update. There was a few issues I ran into following other peoples guides in the Android L Dicussions, so I thought I'll do a quick write on exactly what I did so you can go about building it for yourself.

    A good resource on building CyanogenMod is available at http://wiki.cyanogenmod.org/w/Build_for_bacon, they don't have a guide for CM12, but still has some useful information.

    Make sure you use the same operating system as I am using which is Ubuntu. I tried using Debian earlier, but had issues which may have been resulted to me not having enought memory on disk or me interupting the download of source code.

    Preparing System for Build

    Install the following items via apt-get.
    Code:
    sudo apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-6-jdk openjdk-6-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev
    As per the instructions on the wiki for building CM, if you use a 32bit system, do not install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev.

    Install the latest version of Java's development kit using the following.
    Code:
    sudo apt-get install openjdk-7-jdk

    Install the Android Development Kit using the following.
    Code:
    sudo apt-get install android androidsdk-uiautomatorviewer android-copyright android-src-vendor android-emulator android-tools-adb android-headers android-tools-adbd androidsdk-ddms  android-tools-fastboot androidsdk-hierarchyviewer android-tools-fsutils androidsdk-traceview

    Run the following in terminal.
    Code:
    mkdir -p ~/bin
    curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    chmod a+x ~/bin/repo

    reboot your system or use the following in terminal to load the .profile file again.
    Code:
    . ~/.profile

    Getting the source code.

    Now we can get onto grabbing the source code of CM12.
    Run the following in terminal.
    Code:
    mkdir ~/cm
    cd ~/cm
    repo init -u git://github.com/CyanogenMod/android.git -b cm-12.0
    mkdir .repo/local_manifests
    nano .repo/local_manifests/local_manifests.xml

    When nano appears, paste the following into it and then exit using ctrl-x and choose to save.
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <manifest>
    <project name="CyanogenMod/android_device_oneplus_bacon" path="device/oneplus/bacon" remote="github" />
    <project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" />
    <project name="CyanogenMod/android_device_oppo_msm8974-common" path="device/oppo/msm8974-common" remote="github" />
    <project name="CyanogenMod/android_device_oppo_common" path="device/oppo/common" remote="github" revision="cm-12.0" />
    <project name="CyanogenMod/android_kernel_oneplus_msm8974" path="kernel/oneplus/msm8974" remote="github" />
    <project name="TheMuppets/proprietary_vendor_oppo" path="vendor/oppo" remote="github" />
    <project name="TheMuppets/proprietary_vendor_oneplus" path="vendor/oneplus" remote="github" />
    <project name="CyanogenMod/android_frameworks_opt_connectivity" path="frameworks/opt/connectivity" remote="github" revision="cm-11.0" />
    </manifest>

    Continue getting the code using the following.
    Code:
    repo sync
    cd vendor/cm
    ./get-prebuilts
    cd ../..

    Building CM12
    Run the following commands to build CyanogenMod.
    Code:
    . build/envsetup.sh
    breakfast bacon
    brunch bacon

    After successful build, you should be able to go about copying the built CyanogenMod and installing it into your phone. The CyanogenMod build is located in ~/cm/out/target/product/bacon/ named something like cm-12-*-UNOFFICIAL-bacon.zip

    You can install folllowing: http://xdaforums.com/oneplus-one/general/lollipop-install-guide-oneplus-one-t2940091

    Re-building to update.
    To re-build, you should just be able to run the following (Not yet tested myself, but makes logical sense).
    Code:
    make clobber
    repo sync
    cd vendor/cm
    ./get-prebuilts
    cd ../..
    . build/envsetup.sh
    brunch bacon

    Q&A
    Q: Recieve error: fatal: duplicate path device/qcom/sepolicy in ~/cm/.repo/manifest.xml
    A: edit .repo/local_manifests/local_manifests.xml to remove the item which matches the item located in bold.

    Q: How big is the repo?
    A: 20GB just source code and 40GB when built. Therefore you should aim to have about 60GB free on your system.
    3
    Can someone assist me on how to go about making a self running script for the following commands from the OP so that I could run it and "walk away" from the computer? It would be nice to run it every evening at bedtime and then have an update waiting on me the next morning.

    make clobber
    repo sync -j1
    cd vendor/cm
    ./get-prebuilts
    cd ../..
    . build/envsetup.sh
    brunch bacon

    You can make a cronjob.

    nano ~/bin/makebacon
    Paste the following into the file.
    Code:
    #!/bin/bash
    cd ~/cm
    make clobber
    repo sync -j1
    cd vendor/cm
    ./get-prebuilts
    cd ../..
    . build/envsetup.sh
    brunch bacon

    run chmod +x ~/bin/makebacon

    With that, you can just type makebacon to build, or setup a cronjob by following http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/ the path to the script will be /home/USER/bin/makebacon

    Edit - another question: How did you retrieve this:
    <?xml version="1.0" encoding="UTF-8"?>
    <manifest>
    <project name="CyanogenMod/android_device_oneplus_bacon" path="device/oneplus/bacon" remote="github" />
    <project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" />
    <project name="CyanogenMod/android_device_oppo_msm8974-common" path="device/oppo/msm8974-common" remote="github" />
    <project name="CyanogenMod/android_device_oppo_common" path="device/oppo/common" remote="github" revision="cm-12.0" />
    <project name="CyanogenMod/android_kernel_oneplus_msm8974" path="kernel/oneplus/msm8974" remote="github" />
    <project name="TheMuppets/proprietary_vendor_oppo" path="vendor/oppo" remote="github" />
    <project name="TheMuppets/proprietary_vendor_oneplus" path="vendor/oneplus" remote="github" />
    <project name="CyanogenMod/android_frameworks_opt_connectivity" path="frameworks/opt/connectivity" remote="github" revision="cm-11.0" />
    </manifest>

    From this page
    https://github.com/CyanogenMod/android_device_oneplus_bacon

    I saw people having success with building using that, so I just pulled it and used it. I don't know the original person who posted, but it was in http://xdaforums.com/oneplus-one/general/android-l-discussions-rumors-talk-l-t2829974
    3
    Since yesterday the ./get-prebuilds is no longer working, some changes in the compiler? Although it's compiling fine :)
    They removed terminal emulator from the build so get-prebuilts is no longer needed.
    2
    If I understand correctly, after syncing source and building ROM, I would have exhausted 40GB of space ? OP says it is 20GB + 40 GB. My life hangs in a balance as I have 50GB overall free space. :)

    You'll run out of space building.
    2
    how big is the cm 12 download?

    20GB, probably larger once compiled.