Difference between revisions of "Template:Luneos build"

From WebOS-Ports
Jump to navigation Jump to search
Line 10: Line 10:
 
===Prepare the Build Environment===
 
===Prepare the Build Environment===
 
{{Commentlink
 
{{Commentlink
|section=prepare-build-environment-for-{{{devicename}}}
+
|section=prepare-build-environment-for-{{{device_name}}}
 
}}
 
}}
  
Line 20: Line 20:
 
====Install the SDK====
 
====Install the SDK====
 
{{Commentlink
 
{{Commentlink
|section=install-the-sdk-for-{{{devicename}}}
+
|section=install-the-sdk-for-{{{device_name}}}
 
}}
 
}}
  
Line 29: Line 29:
 
====Install the Build Packages====
 
====Install the Build Packages====
 
{{Commentlink
 
{{Commentlink
|section=install-the-build-packages-for-{{{devicename}}}
+
|section=install-the-build-packages-for-{{{device_name}}}
 
}}
 
}}
  
Line 47: Line 47:
 
===Create the directories===
 
===Create the directories===
 
{{Commentlink
 
{{Commentlink
|section=create-the-directories-for-{{{devicename}}}
+
|section=create-the-directories-for-{{{device_name}}}
 
}}
 
}}
  
Line 58: Line 58:
 
===Install the <code>repo</code> command===
 
===Install the <code>repo</code> command===
 
{{Commentlink
 
{{Commentlink
|section=install-the-repo-command-for-{{{devicename}}}
+
|section=install-the-repo-command-for-{{{device_name}}}
 
}}
 
}}
  
Line 76: Line 76:
 
=== Initialize the WebOS Ports Open webOS source repository ===
 
=== Initialize the WebOS Ports Open webOS source repository ===
 
{{Commentlink
 
{{Commentlink
|section=initialize-source-repository-for-{{{devicename}}}
+
|section=initialize-source-repository-for-{{{device_name}}}
 
}}
 
}}
  
Line 97: Line 97:
 
=== Download the source code ===
 
=== Download the source code ===
 
{{Commentlink
 
{{Commentlink
|section=download-source-code-for-{{{devicename}}}
+
|section=download-source-code-for-{{{device_name}}}
 
}}
 
}}
  
Line 112: Line 112:
 
=== Get prebuilt apps ===
 
=== Get prebuilt apps ===
 
{{Commentlink
 
{{Commentlink
|section=get-prebuilt-apps-for-{{{devicename}}}
+
|section=get-prebuilt-apps-for-{{{device_name}}}
 
}}
 
}}
 
Next,
 
Next,
Line 126: Line 126:
 
=== Get prebuilt Rom Manager ===
 
=== Get prebuilt Rom Manager ===
 
{{Commentlink
 
{{Commentlink
|section=get-prebuilt-rom-manager-for-{{{devicename}}}
+
|section=get-prebuilt-rom-manager-for-{{{device_name}}}
 
}}Next,
 
}}Next,
  
Line 139: Line 139:
 
=== Prepare the device-specific code ===
 
=== Prepare the device-specific code ===
 
{{Commentlink
 
{{Commentlink
|section=prepare-the-specific-code-for-{{{devicename}}}
+
|section=prepare-the-specific-code-for-{{{device_name}}}
 
}}
 
}}
  
Line 169: Line 169:
 
=== Extract proprietary blobs ===
 
=== Extract proprietary blobs ===
 
{{Commentlink
 
{{Commentlink
|section=extract-proprietary-blobs-for-{{{devicename}}}
+
|section=extract-proprietary-blobs-for-{{{device_name}}}
 
}}
 
}}
Now ensure that your {{{devicename}}} is connected to your computer via the USB cable and that you are in the <code>~/android/system/device/{{{vendor}}}/{{{device}}}</code> directory (you can <code>cd ~/android/system/device/{{{vendor}}}/{{{device}}}</code> if necessary).  Then run the <code>extract-files.sh</code> script:
+
Now ensure that your {{{device_name}}} is connected to your computer via the USB cable and that you are in the <code>~/android/system/device/{{{vendor}}}/{{{device}}}</code> directory (you can <code>cd ~/android/system/device/{{{vendor}}}/{{{device}}}</code> if necessary).  Then run the <code>extract-files.sh</code> script:
  
 
  <code>$ ./extract-files.sh</code>
 
  <code>$ ./extract-files.sh</code>
Line 187: Line 187:
 
=== Turn on caching to speed up build ===
 
=== Turn on caching to speed up build ===
 
{{Commentlink
 
{{Commentlink
|section=turning-on-caching-for-{{{devicename}}}
+
|section=turning-on-caching-for-{{{device_name}}}
 
}}
 
}}
  
Line 201: Line 201:
 
=== Start the build ===
 
=== Start the build ===
 
{{Commentlink
 
{{Commentlink
|section=start-the-build-for-{{{devicename}}}
+
|section=start-the-build-for-{{{device_name}}}
 
}}
 
}}
  
Line 218: Line 218:
 
===If the build breaks...===
 
===If the build breaks...===
 
{{Commentlink
 
{{Commentlink
|section=if-the-build-breaks-for-{{{devicename}}}
+
|section=if-the-build-breaks-for-{{{device_name}}}
 
}}
 
}}
  

Revision as of 11:12, 17 November 2013


WARNING: DO NOT EDIT!

THIS PAGE IS NOT A REGULAR WIKI PAGE. IT IS A WIKI *TEMPLATE* AUTO-INCLUDED INTO POTENTIALLY HUNDREDS OF OTHER PAGES. ANY CHANGE MADE HERE WILL AFFECT ALL THESE PAGES SIMULTANEOUSLY, INCLUDING PAGES DEALING WITH MANY TYPES OF DEVICES. SO DO NOT EDIT THIS PAGE UNLESS YOU KNOW EXACTLY WHAT YOU ARE DOING. THANKS!


Build WebOS Ports Open webOS

Prepare the Build Environment

[[comment_prepare-build-environment-for-{{{device_name}}}|Add a comment to this section]]

Note:

You only need to do these steps the first time you build. If you previously prepared your build environment and have downloaded the WebOS Port Open webOS source code for another device, skip to Prepare the device-specific code.


Install the SDK

[[comment_install-the-sdk-for-{{{device_name}}}|Add a comment to this section]]
If you have not previously installed adb and fastboot, install the Android SDK. "SDK" stands for Software Developer Kit, and it includes useful tools that you can use to flash software, look at the system logs in real time, grab screenshots, and more-- all from your computer.

Helpful Tip

While the SDK contains lots of different things-- the two tools you are most interested in for building WebOS Ports Open webOS are adb and fastboot, located in the /platform-tools directory.

Install the Build Packages

[[comment_install-the-build-packages-for-{{{device_name}}}|Add a comment to this section]]

Several "build packages" are needed to build WebOS Ports Open webOS. You can install these using the package manager of your choice.

Helpful Tip

A package manager in Linux is a system used to install or remove software (usually originating from the Internet) on your computer. With Ubuntu, you can use the Ubuntu Software Center. Even better, you may also use the apt-get install command directly in the Terminal. (Learn more about the apt packaging tool system from Wikipedia.)

For both 32-bit & 64-bit systems, you'll need:

git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev openjdk-6-jre openjdk-6-jdk pngcrush schedtool libxml2 libxml2-utils xsltproc

In addition to the above, for 64-bit systems, get these:

g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-multilib

Also see http://source.android.com/source/initializing.html which lists needed packages.

Create the directories

[[comment_create-the-directories-for-{{{device_name}}}|Add a comment to this section]]

You will need to set up some directories in your build environment.

To create them:

$ mkdir -p ~/bin
$ mkdir -p ~/android/system

Install the repo command

[[comment_install-the-repo-command-for-{{{device_name}}}|Add a comment to this section]]

Enter the following to download the "repo" binary and make it executable (runnable):

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

Put the ~/bin directory in your path of execution

Make sure that the ~/bin directory you just created is in your path of execution so that you can easily run the repo command even when you're not in ~/bin. Assuming you are using the BASH shell, the default in recent versions of Ubuntu, you can set it like this:

$ export PATH=${PATH}:~/bin

Helpful Tip

You can make this change to the path permanent for all future Terminal sessions:

$ gedit ~/.bashrc

This will launch a graphical text editor. Enter

export PATH=${PATH}:~/bin

on its own line, then save the file.

Initialize the WebOS Ports Open webOS source repository

[[comment_initialize-source-repository-for-{{{device_name}}}|Add a comment to this section]]

Enter the following to initialize the repository:

$ cd ~/android/system/
$ repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1


Download the source code

[[comment_download-source-code-for-{{{device_name}}}|Add a comment to this section]]

To start the download of all the source code to your computer:

$ repo sync

The WOP manifests include a sensible default configuration for repo, which we strongly suggest you use (i.e., don't add any options to sync). For reference, our current default values are -j4, and -c. The “-j4” part means that there will be four simultaneous threads/connections. If you experience problems syncing, you can lower this to -j3 or -j2. “-c” will ask repo to pull in only the current branch, instead of the entire WOP history.

Prepare to wait a long time while the source code downloads.

Helpful Tip

The repo sync command is used to update the latest source code from WebOS Ports Open webOS and Google. Remember it, as you can do it every few days to keep your code base fresh and up-to-date.

Get prebuilt apps

[[comment_get-prebuilt-apps-for-{{{device_name}}}|Add a comment to this section]]

Next,

$ cd ~/android/system/vendor/cm

then enter:

$ ./get-prebuilts

You won't see any confirmation- just another prompt. But this should cause some prebuilt apps to be loaded and installed into the source code. Once completed, this does not need to be done again.


Prepare the device-specific code

[[comment_prepare-the-specific-code-for-{{{device_name}}}|Add a comment to this section]]

After the source downloads, ensure you are in the root of the source code (cd ~/android/system), then type:

<pre<noinclude></noinclude> style="color:green">$ source build/envsetup.sh

$ breakfast {{{device}}}

This will download the device specific configuration and kernel source for your device.

Note:

You MUST be using the newest version of repo or you will encounter errors with breakfast! Run repo selfupdate to update to the latest.

Helpful Tip

If you want to know more about what "$ source build/envsetup.sh" does or simply want to know more about the breakfast, brunch and lunch commands, you can head over to the Envsetup_help page

Extract proprietary blobs

[[comment_extract-proprietary-blobs-for-{{{device_name}}}|Add a comment to this section]]

Now ensure that your {{{device_name}}} is connected to your computer via the USB cable and that you are in the ~/android/system/device/{{{vendor}}}/{{{device}}} directory (you can cd ~/android/system/device/{{{vendor}}}/{{{device}}} if necessary). Then run the extract-files.sh script:

$ ./extract-files.sh

You should see the proprietary files (aka “blobs”) get pulled from the device and moved to the right place in the vendor directory. If you see errors about adb being unable to pull the files, adb may not be in the path of execution. If this is the case, see the adb page for suggestions for dealing with "command not found" errors.

Note:

Your device should already be running the branch of WebOS Ports Open webOS you wish to build your own version of for the extract-files.sh script to function properly. If you are savvy enough to pull the files yourself off the device by examining the script, you may do that as well without flashing WebOS Ports Open webOS first.

Note:

It’s important that these proprietary files are properly extracted and moved to the vendor directory. Without them, WebOS Ports Open webOS will build without error, but you’ll be missing important functionality, such as the ability to see anything!


Turn on caching to speed up build

[[comment_turning-on-caching-for-{{{device_name}}}|Add a comment to this section]]

If you want to speed up subsequent builds after this one, type:

$ export USE_CCACHE=1

Helpful Tip

Instead of typing cd ~/android/system every time you want to return back to the root of the source code, here’s a short command that will do it for you: croot . To use this command, as with brunch, you must first do “. build/envsetup.sh” from ~/android/system. Notice there is a period and space (“. ”) in that command.


Start the build

[[comment_start-the-build-for-{{{device_name}}}|Add a comment to this section]]

Time to start building! So now type:

$ croot
$ brunch {{{device}}}</code;>

The build should begin.

Helpful Tip

If the build doesn't start, try lunch and choose your device from the menu. If that doesn't work, try breakfast and choose from the menu. The command make {{{device}}} should then work.

Helpful Tip

A second, bonus tip! If you get a command not found error for croot or brunch or lunch, be sure you’ve done the “ . build/envsetup.sh” command in this Terminal session from the ~/android/system directory.

If the build breaks...

[[comment_if-the-build-breaks-for-{{{device_name}}}|Add a comment to this section]]
  • If you experience this not-enough-memory-related error...
ERROR: signapk.jar failed: return code 1make: *** [out/target/product/{{{device}}}/wop_{{{device}}}-ota-eng.root.zip] Error 1

...you may want to make the following change to:

$ system/build/tools/releasetools/common.py

Change: java -Xmx2048m to java -Xmx1024m or java -Xmx512m

Then start the build again (with brunch).

  • If you see a message about things suddenly being “killed” for no reason, your (virtual) machine may have run out of memory or storage space. Assign it more resources and try again.