Closed OTP-Maintainer closed 3 years ago
bmk
said:
Ouch, both PACKET_FASTROUTE and PACKET_USER has the same value on Android.
Skip one of them on Android maybe?
bmk
said:
I tried to install the env for this myself on my LInux Mint 19.3.
But I I did not find a *android-ndk*. There was a *android-sdk* which I installed, but it did not
include the same files it seems. Any suggestions? Beside choosing a different machine to
experiment on?
JIRAUSER14400
said:
I used https://developer.android.com/studio/releases/platform-tools and https://developer.android.com/ndk/downloads
I also tried to uncomment PACKET_FASTROUTE in./erts/emulator/nifs/common/socket_util.c, i.e.
#if defined(PACKET_FASTROUTE)
/*
case PACKET_FASTROUTE:
*ePktType = esock_atom_fastroute;
break;
*/
#endif
Indeed not the right thing to do :-) but the compilation suceeded, albeit with a fair amount of compiler warnings.
I will verify that the build works on an android device as described in the build intructions...
bmk
said:
Can you paste a snippet of the include file where PACKET_FASTROUTE and PACKET_USER
are defined, so I can see if there are any useful comments?
JIRAUSER14400
said:
I suceeded to get an Erlang prompt on my Android device after the ugly uncomment procedure described above, i.e.
jocke@eve:~/vendor$ adb push erlang_23.0_arm /data/localjocke@eve:~/vendor$ adb shell
sargo:/ $ /data/local/tmp/erlang_23.0/bin/erl
Eshell V11.0 (abort with ^G)
1>
To do this I installed:
https://developer.android.com/studio/releases/platform-tools
https://developer.android.com/ndk/downloads
And followed the instructions in:
https://developer.android.com/studio/run/device
It would be really nice if the TODO entries in
https://github.com/erlang/otp/blob/OTP-23.0-rc2/HOWTO/INSTALL-ANDROID.md at some time could be fixed.
Cheers
JIRAUSER14400
said:
PACKET_FASTROUTE etc seems to be defined in the android-ndk release itself but the build error occur in OTP's socket_util.c.
AFAICS:
jocke@eve:~/vendor/otp-OTP-23.0-rc2$ find . -type f -exec grep PACKET_FASTROUTE {} \; -print
#if defined(PACKET_FASTROUTE)
case PACKET_FASTROUTE:
./erts/emulator/nifs/common/socket_util.c
#if defined(PACKET_FASTROUTE)
case PACKET_FASTROUTE:
./erts/emulator/nifs/common/#socket_util.c#
#if defined(PACKET_FASTROUTE)
case PACKET_FASTROUTE:
./erts/emulator/nifs/common/socket_util.c~
jocke@eve:/usr/local/lib/android-ndk-r21$ find . -type f -exec grep PACKET_FASTROUTE {} \; -print
#define PACKET_FASTROUTE 6
./toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/linux/if_packet.h
#define PACKET_FASTROUTE 6
./sysroot/usr/include/linux/if_packet.h
I get a bit confused over this...
bmk
said:
What does net:getifaddrs() return?
TODO: Any suggestions would be welcome. Please :)
bmk
said:
On my machine (Linux Mint 19.3) There is a comment in if_packet.h
{code:java}
/* Unused, PACKET_FASTROUTE and PACKET_LOOPBACK are invisible to user space */
#define PACKET_FASTROUTE 6 /* Fastrouted frame *{code}
This seems to indicate that maybe we should just remote the PACKET_FASTROUTE stuff.
At least until we can figure out what to do with FASTROUTE.
I will create a branch with this change are merge it as soon as we get it through the tests.
JIRAUSER14400
said:
Sounds good
When it comes to the TODO-list in INSTALL-ANDROID.md, i.e.
<cite>
TODO: Propose a permanent fix for the following issue. Adapt the installation specifically for Android, by replacing manually /bin/sh into /system/bin/sh in the various Erlang/OTP release scripts, such as:
bin/erl
bin/start
bin/start_erl
erts-X.Y.Z/bin/erl
erts-X.Y.Z/bin/erl.src
erts-X.Y.Z/bin/start
erts-X.Y.Z/bin/start_erl.src
erts-X.Y.Z/bin/start.src
etc.
WARNING: adb has issues with symlinks (and java.util.zip too). There is only one symlink for epmd in recent Erlang/OTP releases (20 to master-based 23) so it has to be removed before using adb push, and then recreated manually on the target device itself if needed (or epmd can simply be duplicated instead).
$ # Make sure that the epmd symlink is not present before adb push
$ rm bin/epmd
</cite>
That is something I will have to delve into when bundling my app code into a release (with reltools and systools). Time will tell if more Android problems pop up here.
bmk
said:
Could you please create a pull request with your suggested updates to INSTALL-ANDROID.md
bmk
said:
I have merged my fix (commenting out handling of PACKET_FASTROUTE)
into master.
jeromedebretagne
said:
@Joakim, for your info, the mentioned TODO entry for Android has been fixed with [https://github.com/erlang/otp/pull/2729] (and the corresponding documentation has been updated).
Cheers,
Jérôme
Original reporter:
JIRAUSER14400
Affected version:OTP-23.0-rc2
Component:erts
Migrated from: https://bugs.erlang.org/browse/ERL-1208