Aaaww… this is beautiful
I don’t have access to Gerrit, but this one here looks interesting.
The su source that gets build is located here:
I would just rename it and copy “your” su later.
system/extras/su/Android.mk (change to):
Not sure if it will work/compile, just a quick hack to make “make” happy.
Too bad there are no changelogs posted for changes in Gerrit here. I have no clue what people are working on there.
This is the full changelog, isn’t it? Normally you can see all open merge requests here:
The ones that were merged into the source should appear under “closed”, but apparently there are none (yet). Personally, I also don’t like the idea of keeping things more or less closed (although you can dig through the git commit history of course if you want to).
But yes, we need a public issue tracker as already has been discussed here:
I guess it’s the right way to do it professionally (review, commit). But there is no howto for the “normal” people on how to pull what kind of changes (even if still under review). Some hints how do use it with repo can be found here.
Well if somebody (@xaxa a maybe?) would be so kind to cherry-pick this stuff and do a userdebug build and check if root is working we could include cherry-picking these commits in the build instructions as long as they remain unmerged.
Believe me I will do, and I will put effort into a crystal-clear how-to… just give me some time to make it work and build it.
Ok, I’ve built the source with patches 5…11.
package/apps/Superuser/Superuser/jni/su/su.c:562: error: undefined reference to 'hacks_update_context' package/apps/Superuser/Superuser/jni/su/su.c:478: error: undefined reference to 'bind_remove' package/apps/Superuser/Superuser/jni/su/su.c:486: error: undefined reference to 'bind_ls' package/apps/Superuser/Superuser/jni/su/su.c:490: error: undefined reference to 'bind_uniq_dst' package/apps/Superuser/Superuser/jni/su/su.c:509: error: undefined reference to 'init_remove' package/apps/Superuser/Superuser/jni/su/su.c:517: error: undefined reference to 'init_ls' package/apps/Superuser/Superuser/jni/su/su.c:520: error: undefined reference to 'init_uniq' package/apps/Superuser/Superuser/jni/su/su.c:870: error: undefined reference to 'hacks_init' package/apps/Superuser/Superuser/jni/su/daemon.c:545: error: undefined reference to 'bind_foreach' package/apps/Superuser/Superuser/jni/su/daemon.c:566: error: undefined reference to 'init_foreach' collect2: error: ld returned 1 exit status make: *** [out/target/product/FP2/obj/EXECUTABLES/su_intermediates/LINKED/su] Error 1
When I use CyanogenMod/Superuser instead, the build succeeds, but I find no
su binary build anywhere.
After applying this hack, I got it to build. (Really weird error where build doesn’t pick up all source files.) It doesn’t install
su to the correct location and correct permissions, though.
edit it turns out seSuperuser hasn’t been updated for building in-tree. Use my fork if you want it to compile. I can’t get the daemon to run on startup, though. Not even after adding
import /init.superuser.rc after the other imports in
edit after installing com.koushikdutta.superuser running
su on the shell works!
After successful compiling the Image in a Docker Container. Where can i find them?
out/target/product/FP2. I use this, from the source root, to flash:
sudo ANDROID_PRODUCT_OUT=`pwd`/out/target/product/FP2 `which fastboot` flashall
Note that you probably can’t (easily) flash from the Docker container.
You are right. One would have to configure the container to have access to USB. It’s probably possible, I don’t know how.
But you can easily install fastboot on your host operating system (it is available for Linux, Windows, etc) and flash from there. Incidentally that’s what I did half an hour ago.
In case anyone else had the same problem, what I did to fix it was open the id_rsa.pub file and copy it from my text editor instead of pasting the results of “cat id_rsa.pub”.
But at the same time I also poked around my account on the website and added a user name, that might have been what actually fixed it.
It seems it’s starting to work! These are the steps I took.
repo sync, fetch the superuser-related patches from Fairphone’s Gerrit and add Superuser:
# Apply pending Superuser patches repo download fp2-dev/device/qcom/sepolicy 5 repo download fp2-dev/device/fairphone_devices/sepolicy 6 repo download fp2-dev/device/fairphone_devices/fairphone 7 repo download fp2-dev/platform/frameworks/base 8 repo download fp2-dev/platform/packages/apps/Settings 9 repo download fp2-dev/platform/system/core 10 repo download fp2-dev/platform/system/extras 11 # Add local manifest for Superuser's su mkdir -p .repo/local_manifests wget -O .repo/local_manifests/superuser.xml https://raw.githubusercontent.com/wvengen/Superuser/feature/try-fix-aosp-build/local_manifest.xml repo sync -c package/apps/Superuser package/apps/Widgets
system/core/rootdir/init.rc and add after the existing
edit: editing init.rc may not be necessary, patch 7 seems to add it already.
Then continue to build and upload.
When you have installed Superuser with package name com.koushikdutta.superuser, it may just work.
I’m curious to hear if this works for anyone else.
I’m glad to hear it works for you. I got familiar with this missing import aswell Saying I see you are making the same steps I have done right one week before
Since it is not easy to understand short-held compiling questions, I wasn’t sure about your knowledge-level. My build is running right now, and if it works, I’ll have a one-build solution with TWRP and Superuser-embedded all-at-once. We’ll see…
@xaxa great, let’s see!
This does not yet include the Superuser app. It would be useful to have it installed in the system image, and it would be good for security (or any app using the same id could obtain root when it’s not installed).
It seems that currently only
su in the shell works, not from apps I guess it’s a permissions/user/selinux problem (selinux line + Permission denied for opening local socket).
Does anyone here (running their own version of android) experience the random reboots everybody is discussing here:
When I try to compile, I get the following error:
[code]out/host/linux-x86/bin/checkpolicy: loading policy configuration from out/target/product/generic/obj/ETC/sepolicy_intermediates/policy.conf
external/sepolicy/radio.te:33:ERROR ‘unknown type persist_file’ at token ‘;’ on line 3850:
allow radio persist_file:dir search;
checkpolicy: error(s) encountered while parsing configuration
external/sepolicy/Android.mk:121: recipe for target ‘out/target/product/generic/obj/ETC/sepolicy_intermediates/sepolicy’ failed
make: *** [out/target/product/generic/obj/ETC/sepolicy_intermediates/sepolicy] Error [/code]
When I then do
cd external/sepolicy/; git checkout cae72b60bc2e4f5509c08232f211044af7eb375d and try to compile again
clang: error: linker command failed with exit code 1 (use -v to see invocation) build/core/host_shared_library_internal.mk:44: recipe for target 'out/host/linux-x86/obj32/lib/libnativehelper.so' failed make: *** [out/host/linux-x86/obj32/lib/libnativehelper.so] Error 1
My build (host) system is Arch Linux.
no, I don’t
That won’t make any difference.
That is indeed a necessary step to do (I thought I mentioned that above).
Ok, first try and first successful make ! Instead of a
make -j8 I tried a simple
make. It tooks about 6 hours to build but I have a fully functional Fairphone Open Source OS on my FP2 now.
Thanks a lot everybody for all the tips.