English

[HOWTO] ✏ Compiling Fairphone Open OS / Rooting

Tags: #<Tag:0x00007f05e492b210> #<Tag:0x00007f05e492b0d0>

Most probably your compiler is to new, try gcc-4.8, as stated on the first post.

I would be interested in this as well.

I’ve stopped using the repo because I don’t know how to get the latest code.

It still builds here, I just have no clue what code I’m using. I’m pretty sure it’s not the released code, but it’s hard to check that. But don’t see any recent CVEs in the commits or other changes.

Have you tried removing the build/ dir and starting all over again? Maybe it’s best to wait until they update everything for the new code basis. Are you using a very up-to-date archlinux? Make sure some tools are old enough :slight_smile: (clang linker prebuild issues – no clue, really, but as @jochensp said … maybe it’s a problem with combining your local gcc with the prebuild tools?)

remove build/
$ repo sync -c
and try using the 2.0.2 bin blobs.

But as I said: It’s best just to wait a while longer. I don’t think we have the latest code yet.

Could someone from the Fairphone-Team PLEASE tell whether the download on code.fairphone.com is now updated to version 1.2.8?

2 Likes

In case someone else wants to try this on arch linux (I’ve given up and will try the docker image now):

  • I switched the /usr/bin/python symlink to /usr/bin/python2 to make the python scripts work.
  • I fixed the linker error by replacing prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld with a symlink to /usr/bin/ld.gold as described in https://bbs.archlinux.org/viewtopic.php?id=209698
  • I updated the perl-script in kernel/kernel/timeconst.pl by replacing the defined(@val) on line 373 with @val as described in https://lkml.org/lkml/2012/11/18/159
  • I modified the if-condition on line 619 of device/qcom/common/dtbtool/dtbtool.c to (dp->d_type == DT_REG) || (dp->d_type == DT_UNKNOWN) (this is maybe only necessary on xfs filesystems. it works around a bug in dtbtool, which results in “Found 0 unique DTB(s)”).

With all this in place I finally run into the same make error as merci (build-log: http://termbin.com/d648):

I got this error also very often and got it solved somehow.
I’m not totally sure, but I think you need to apply the binary blobs again. You need to do this after every clean. libwpa/wpa_supplicant is provided as binaries with the blobs and it is directly copied to the output directory.

I already tried applying the binary blobs again and it did not help.

Anyway, the docker image needed the fix for dtbtool, but finished building successfully after only 17h (Remark: It is possible to build on a 2GB RAM machine with 4GB swap.). I’m the proud owner of a google-free fairphone now … :smiley:

1 Like

Hi, I tried following the instructions for compiling, but “repo sync” fails with the following error:

[...]
Fetching project fp2-dev/platform/packages/apps/Amaze
fatal: Couldn't find remote ref refs/heads/fp2-sibon
fatal: Couldn't find remote ref refs/heads/fp2-sibon
error: Cannot fetch fp2-dev/platform/packages/apps/Amaze

Any hint what’s wrong or how this can be fixed?

noticed that too, caused by todays commit to the manifest repo. You either can wait until the fairphone people add the missing repos or use an older version of the manifest (61ca0c35e2b448e8729bceee1599293955b27761 instead of fp2-sibon for the init command)

I had the same error with appops_su so my guess is they add the missing repos.

commit c342a0b722f61fdd5bdce8c77e3d9699a142f827
Author: Teemu Hukkanen teemu@fairphone.com
Date: Thu Apr 21 12:47:14 2016 +0200

Add busybox, appops_su, and Amaze

commit 61ca0c35e2b448e8729bceee1599293955b27761
Author: Teemu Hukkanen teemu@fairphone.com
Date: Thu Nov 12 09:15:15 2015 +0100

Fix previous branch name fix, it is fp2-sibon

fp2-dev/platform/external/busybox is the only empty repository now (you can also see on gerrit, that no branch called fp2-sibon exists). EDIT: Seems like it has content now. Great!

Looks like something is moving & getting pushed. Nice. :slight_smile:

1 Like

I just did a fresh build with the recent commits. And also got the same error again. I think I mixed the things up. You need to do an additional

. build/envsetup.sh

I think it copies some files from blobs to out directory (e.g. libwpa). At least it helped for me.

Can you post what kind of “same” error you get? I’m too lazy to pull the repo again without any “official” notification that everything 1.2.8-new is “in” there right now. But maybe it’s any easy problem that could be fixed?

Oh, I see now, it’s the SHARED_LIBRARIES/libwpa_client_intermediates/export_includes one. Okay.

Flashed the new build some minutes ago. It comes rooted now. Can be enabled in developer settings. :thumbsup:
I was able to flash the binaries without wiping. No need to restore any backup so far. Of course Xposed and OpenGApps must be installed again.

4 Likes

Hey I’ve been an ass about the ability to share our custom roms (and still intend to be since we haven’t had an answer that I know of) but I’d like to congratulate FP on releasing their official builds of FPOSOS. That’s really appreciated.

And the abilities to switch of signature verif. in TWRP and to one-click root the phone are too.

1 Like

I built FPOS a couple times a month or so ago (the unmodified version direct from the FP2 gerritt, then again with the patches from the first post of the uNLP thread), and with the new code it’s failing to build. Steps:

repo sync
(then the four steps from the uNLP thread:)

repo download fp2-dev/platform/frameworks/base 3
repo download fp2-dev/device/qcom/common 4
rm vendor/qcom/proprietary/target/product/FP2/system/etc/permissions/com.qualcomm.location.xml
rm vendor/qcom/proprietary/target/product/FP2/system/priv-app/com.qualcomm.location/com.qualcomm.location.apk

. build/envsetup.sh
choosecombo 1 FP2 2
make -j8

And the failure point:

Reading library jar [/home/andy/fairphone_os/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar]
frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DataConnection.java:964: error: cannot find symbol
            result.maybeMarkCapabilitiesRestricted();
                  ^
  symbol:   method maybeMarkCapabilitiesRestricted()
  location: variable result of type NetworkCapabilities
Reading library jar [/home/andy/fairphone_os/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar]
Reading library jar [/home/andy/fairphone_os/out/target/common/obj/JAVA_LIBRARIES/ext_intermediates/classes.jar]
Reading library jar [/home/andy/fairphone_os/out/target/common/obj/JAVA_LIBRARIES/ext_intermediates/classes.jar]
Reading library jar [/home/andy/fairphone_os/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar]
Reading library jar [/home/andy/fairphone_os/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar]
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Proguard: out/target/common/obj/APPS/OpenWnn_intermediates/proguard.classes.jar
ProGuard, version 4.10
Reading program jar [/home/andy/fairphone_os/out/target/common/obj/APPS/OpenWnn_intermediates/classes.jar]
Reading library jar [/home/andy/fairphone_os/out/target/common/obj/JAVA_LIBRARIES/core-junit_intermediates/classes.jar]
Reading library jar [/home/andy/fairphone_os/out/target/common/obj/JAVA_LIBRARIES/core-libart_intermediates/classes.jar]
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
make: *** [out/target/common/obj/JAVA_LIBRARIES/telephony-common_intermediates/classes-full-debug.jar] Error 41
make: *** Waiting for unfinished jobs....
Reading library jar [/home/andy/fairphone_os/out/target/common/obj/JAVA_LIBRARIES/ext_intermediates/classes.jar]
Preparing output jar [/home/andy/fairphone_os/out/target/common/obj/APPS/HTMLViewer_intermediates/proguard.classes.jar]
  Copying resources from program jar [/home/andy/fairphone_os/out/target/common/obj/APPS/HTMLViewer_intermediates/classes.jar]
Reading library jar [/home/andy/fairphone_os/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar]
Preparing output jar [/home/andy/fairphone_os/out/target/common/obj/APPS/LiveWallpapers_intermediates/proguard.classes.jar]
  Copying resources from program jar [/home/andy/fairphone_os/out/target/common/obj/APPS/LiveWallpapers_intermediates/classes.jar]
Preparing output jar [/home/andy/fairphone_os/out/target/common/obj/APPS/KeyChain_intermediates/proguard.classes.jar]
  Copying resources from program jar [/home/andy/fairphone_os/out/target/common/obj/APPS/KeyChain_intermediates/classes.jar]
Preparing output jar [/home/andy/fairphone_os/out/target/common/obj/APPS/LiveWallpapersPicker_intermediates/proguard.classes.jar]
  Copying resources from program jar [/home/andy/fairphone_os/out/target/common/obj/APPS/LiveWallpapersPicker_intermediates/classes.jar]
Preparing output jar [/home/andy/fairphone_os/out/target/common/obj/APPS/Music_intermediates/proguard.classes.jar]
  Copying resources from program jar [/home/andy/fairphone_os/out/target/common/obj/APPS/Music_intermediates/classes.jar]
Preparing output jar [/home/andy/fairphone_os/out/target/common/obj/APPS/OpenWnn_intermediates/proguard.classes.jar]
  Copying resources from program jar [/home/andy/fairphone_os/out/target/common/obj/APPS/OpenWnn_intermediates/classes.jar]

#### make failed to build some targets (20:59 (mm:ss)) ####

Anyone sucessfully build the new code with uNLP support?

I guess you had the output of an old compilation lying around. Remove your out directory and try it again.

I thought so too, I ran make clean and restarted the compile a while ago. I also noticed that there’s newer fp2-sibon blobs than the one on the compile instruction page, should I be using the 16.04 one instead of 2.0.1?

edit:
Still failed after cleaning out the out folder with make clean. Same error as before, if I’m reading this right:

target Dex: content
frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DataConnection
            result.maybeMarkCapabilitiesRestricted();
                  ^
  symbol:   method maybeMarkCapabilitiesRestricted()
  location: variable result of type NetworkCapabilities
target Dex: dpm
target Jar: framework (out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/javalib.ja
target Dex: ime
target Dex: ims-common
target Dex: input
Copying: out/target/common/obj/JAVA_LIBRARIES/javax.btobex_intermediates/classes.dex
Copying: out/target/common/obj/JAVA_LIBRARIES/javax.obex_intermediates/classes.dex
target Dex: media_cmd
target Dex: monkey
Copying: out/target/common/obj/JAVA_LIBRARIES/org.codeaurora.Performance_intermediates/classes
target Dex: pm
target Dex: qcmediaplayer
Copying: out/target/common/obj/JAVA_LIBRARIES/qcom.fmradio_intermediates/classes.dex
target Dex: requestsync
target Dex: settings
target Dex: svc
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
make: *** [out/target/common/obj/JAVA_LIBRARIES/telephony-common_intermediates/classes-full-de
make: *** Waiting for unfinished jobs....
Copying: out/target/common/obj/JAVA_LIBRARIES/uiautomator.core_intermediates/emma_out/lib/clas

#### make failed to build some targets (02:15:49 (hh:mm:ss)) ####

And the same error again after deleting out (again) and adding the new sibon blob. :frowning:

Most likely you will already know, but as it is java causing this error… are you compiling with openjdk-7 ? Because I had similar java errors, when I tried with the first version
If you don’t just tell with “update-alternatives” which java version to use for make. Otherwise please tell us your system-configuration