[HOWTO] ✏ Compiling Fairphone Open OS / Rooting

I added the architecture.

apt-get install zlib1g-dev:i386 didn’t work (missing dependencies)

I tried aptiude then, which suggested to solve those dependencies by removing gcc as a whole (and a lot of other stuff) which I did not want to do.

does the no-sharing-policy also apply to builds only from the sources on code.fairphone.com, i.e. without any changes like root etc.?

That must be what Fairphone calls “encourage the community to build alternative ROMS”

I just want to get rid of the Google Apps … (root would be nice, but isn’t vital to me)

Try installing “phablet-tools” - solved this issue for me on Ubuntu 14.04 LTS.

unfortunately that packages isn’t in Debian’s repository… and I don’t want to mess around with mixing with ubuntu…

Unfortunately yes, root is no problem - the blobs included in the images are…

Still, if you ask someone nicely via PM and don’t make it public…
I had some success with that already. Not mentioning any names of course! :wink:

I guess for these kind of cases the Docker image is the best bet. There, I’ve figured out all these problems for you and you don’t need to mess around with your system :wink:

Thank you so much.
Does it include root? Or is there an instruction about how to root with your docker image?

I don’t think so, but you can always follow the steps described in the How to root with superuser thread afterwards. Since the boot image has been compiled already and can be distributed freely (no blobs in there), this should be pretty straight forward once you have your FP OSOS running on your phone.

1 Like

No, it basically only provides you with a working environment. You have to do the rest yourself.

1 Like

How did you manage to get it compiled with that? If I set the variables to false, I get build errors. There is no rule to make “out/target/product/FP2/obj/STATIC_LIBRARIES/libqc-art_intermediates/libqc-art.a” what is required for “out/target/product/FP2/obj/SHARED_LIBRARIES/libart_intermediates/LINKED/libart.so”.

1 Like

As mentionned later in the thread (but discussion is pretty bad at presenting evolutions in the thread when it gets long) it didn’t work out… I had to copy-paste the libart-*.so to the correct folders by hand (this should be fixed by an upcoming release of the blobs) :wink:

I’ll try another build soon.

1 Like

This commit to CyanogenMod looks like it solves our problem.
With these changes applied I was able to build with

export FP2_USE_PREBUILT_LIBART=true
export FP2_USE_PREBUILT_LIBART_COMPILTER=true

removed. :grin:
Can you imagine why there are proprietary versions of ART libs? Maybe some device specific optimizations like they did for Dalvik?

1 Like

Did anybody tried to encrypt the phone with a self-built Android yet? I’m not sure why it’s not working for me. Phone gets stuck on reboot and logcat shows this messages repeating all the time:

I/ThermalEngine( 281): Sensor:pm8941_tz:36558 mC
W/MountService( 6186): Thread MountService still waiting for MountService ready…
W/MountService( 6186): Thread MountService#onDaemonConnected still waiting for MountService ready…
W/MountService( 6186): Thread main still waiting for MountService ready…

2 Likes

Done that.
It said build was successfull.
So I flashed boot system and recovery

But the system won’t start.

I can access fastboot mode and recovery, but when I want to start the phone normally it hangs on the fairphone logo.

What can I do now? Build again? It took like a whole day.

I already tried to wipe cache and stuff in the recovery. Still doesn’t work.

For me on first start after flashing it takes several minutes until the phone exits the Fairphone logo and goes on with booting. Sometimes I think something is broken, but finally it boots up in most cases. :slightly_smiling:
Maybe give it just a few minutes.

I once again tried to compile the source but still failed:

In file included from external/chromium_org/v8/src/heap/heap.h:12:0,
                 from external/chromium_org/v8/src/contexts.h:8,
                 from external/chromium_org/v8/src/objects-inl.h:17,
                 from external/chromium_org/v8/src/v8.h:39,
                 from external/chromium_org/v8/src/transitions.cc:5:
external/chromium_org/v8/src/counters.h:612:41: internal compiler error: Segmentation fault
   StatsCounter* size_of_CODE_AGE_##name() \
                                         ^
external/chromium_org/v8/src/builtins.h:25:40: note: in expansion of macro 'SC'
 #define CODE_AGE_LIST_IGNORE_ARG(X, V) V(X)
                                        ^
external/chromium_org/v8/src/builtins.h:23:3: note: in expansion of macro 'CODE_AGE_LIST_IGNORE_ARG'
   V(Octogenarian, A)
   ^
external/chromium_org/v8/src/builtins.h:34:3: note: in expansion of macro 'CODE_AGE_LIST_WITH_ARG'
   CODE_AGE_LIST_WITH_ARG(CODE_AGE_LIST_IGNORE_ARG, V)
   ^
external/chromium_org/v8/src/counters.h:614:3: note: in expansion of macro 'CODE_AGE_LIST_COMPLETE'
   CODE_AGE_LIST_COMPLETE(SC)
   ^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://source.android.com/source/report-bugs.html> for instructions.
make: *** [out/target/product/FP2/obj/STATIC_LIBRARIES/v8_tools_gyp_v8_base_gyp_intermediates/v8/src/transitions.o] Fehler 1

#### make failed to build some targets (02:20:38 (hh:mm:ss)) ####

I followed the official build instructions as well as the notes in this thread. tried on Ubuntu 14.04 LTS running as a kvm vm under an Ubuntu 15.10. dmesg doesn’t show anything useful, I believe. I did a fresh repo sync today. I tried with make -j1. The build failed several times (at different stages and with different but similar errors).

Anybody an idea how to debug?

What’s your gcc --version?

the default on Ubuntu 14.04:

simon@vmubuntu1404:~/fairphone_os$ gcc --version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4

Should work according to the build instructions… :frowning:

I’ve been “giving” it one hour now, but still …:pensive: