Running make check-all on android after cross-compiling to it.

Jeffrey Brusseau bobajeff82 at gmail.com
Thu Sep 25 09:20:32 PDT 2014


Also the actual path I used for LD_LIBRARY_PATH was
/data/data/com.spartacusrex.spartacuside/files/build/Release+Asserts/lib

(I had to retype everything since it's hard and tedious to copy and paste
from a tablet to computer so that why my quotes aren't matching the
commands I used perfectly )

On Thu, Sep 25, 2014 at 11:11 AM, Jeffrey Brusseau <bobajeff82 at gmail.com>
wrote:

> Scratch the part where is quoted command used to test the error. I
> exported TMPDIR not TMP and It was the bash script I ran afterwards not the
> make command. So it was:
>
>> export TMPDIR=/FOO
>>
> ./run.bash
>>
>
>
> On Thu, Sep 25, 2014 at 11:06 AM, Jeffrey Brusseau <bobajeff82 at gmail.com>
> wrote:
>
>> Ran another test this time I ran the first test manually in bash via a
>> script I made:
>>
>> This is the run.bash file:
>>
>> /data/data/com.spartacusrex.spartacuside/files/build/Release+Asserts/bin/clang
>>> -cc1 -internal-isystem
>>> /data/data/com.spartacusrex.spartacuside/files/build/Release+Asserts/bin/../lib/clang/3.6.0/include
>>> -objcmt-migrate-designated-init -objcmt-migrate-readwrite-property
>>> -objcmt-migrate-instancetype -x objective-c
>>> /data/data/com.spartacusrex.spartacuside/files/llvm/tools/clang/test/ARCMT/designated-init-in-header/
>>> file1.m.in -triple x86_64-apple-darwin11 -fobjc-arc -migrate -o
>>> /data/data/com.spartacusrex.spartacuside/files/build/tools/clang/test/ARCMT/designated-init-in-header/Output/designated-init-in-header.m.tmp1.remap
>>> /data/data/com.spartacusrex.spartacuside/files/build/Release+Asserts/bin/clang
>>> -cc1 -internal-isystem
>>> /data/data/com.spartacusrex.spartacuside/files/build/Release+Asserts/bin/../lib/clang/3.6.0/include
>>> -objcmt-migrate-designated-init -objcmt-migrate-readwrite-property
>>> -objcmt-migrate-instancetype -x objective-c
>>> /data/data/com.spartacusrex.spartacuside/files/llvm/tools/clang/test/ARCMT/designated-init-in-header/
>>> file2.m.in -triple x86_64-apple-darwin11 -fobjc-arc -migrate -o
>>> /data/data/com.spartacusrex.spartacuside/files/build/tools/clang/test/ARCMT/designated-init-in-header/Output/designated-init-in-header.m.tmp2.remap
>>> /data/data/com.spartacusrex.spartacuside/files/build/Release+Asserts/bin/c-arcmt-test
>>> /data/data/com.spartacusrex.spartacuside/files/build/tools/clang/test/ARCMT/designated-init-in-header/Output/designated-init-in-header.m.tmp1.remap
>>> /data/data/com.spartacusrex.spartacuside/files/build/tools/clang/test/ARCMT/designated-init-in-header/Output/designated-init-in-header.m.tmp2.remap
>>> |
>>> /data/data/com.spartacusrex.spartacuside/files/build/Release+Asserts/bin/arcmt-test
>>> -verify-transformed-files
>>> /data/data/com.spartacusrex.spartacuside/files/llvm/tools/clang/test/ARCMT/designated-init-in-header/header1.h.result
>>> /data/data/com.spartacusrex.spartacuside/files/llvm/tools/clang/test/ARCMT/designated-init-in-header/file2.m.in.result
>>>
>>
>> It ran perfectly after exporting the LD_LIBRARY_PATH to libclang:
>>
>> export
>>> LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/data/com.spartacusrex.spartacuside/files/build/Release+Asserts
>>>
>>
>> So then I tried to recreate the error by changing the $TMPDIR environment
>> variable and lo and behold it's the exact error you get from the same test.
>>
>> export TMP=/FOO
>>>
>> make ENABLE_OPTIMIZED=1 check-all
>>>
>>
>> output
>>
>> Error by clang_getRemappingsFromFileList
>>
>> Could not create file: /FOO/heaader1.h-30ac2..h
>>> Could not create file: /FOO/file2.m.in-2c5017.in
>>> error: no files to verify from stdin
>>>
>>
>>
>> So it appears that however clang is actually being run in the test it's
>> not using the correct environment or the variable is being overruled by
>> something in the test.
>>
>>
>> On Sun, Sep 21, 2014 at 11:11 AM, Jeffrey Brusseau <bobajeff82 at gmail.com>
>> wrote:
>>
>>> It looks like the tests are somehow making clang write to /tmp even
>>> though $TEMP and $TMPDIR are set to /data/data/com.spartacusrex.spartacuside/files/tmp.
>>> I've checked python's shell and android's system/bin/sh shell and they
>>> reflect the same values. I've also tested clang by itself (on a simple
>>> helloword.c) and it seems to use the correct directory for temp files.
>>>
>>> Can anyone help me figure out what's going on?
>>>
>>> On Wed, Sep 17, 2014 at 2:30 PM, Jeffrey Brusseau <bobajeff82 at gmail.com>
>>> wrote:
>>>
>>>> I'm trying to run the llvm build tests on android after cross-compiling
>>>> with the NDK toolchain on top of my ubuntu-based system. I've run into some
>>>> issues.
>>>>
>>>> First since python is required I needed to install the Python 2.7 fork
>>>> of Py4A (because Python3 doesn't seem to play nice with llvm's python
>>>> scripts). I also needed to install the unittest module as this distribution
>>>> of python doesn't come with it for some reason. I just copied the
>>>> lib/python2.7/unitest folder from my NDK toolchain over to
>>>> /sdcard/com.android.python27/extras/python/. Plus I needed to set the
>>>> environment variables in Terminal IDE's ~/.bashrc so I added:
>>>>
>>>>     source /data/data/com.spartacusrex.spartacuside/files/python27.sh
>>>>
>>>> In ~/python27.sh I have:
>>>>     export PYTHONHOME=/data/data/com.android.python27/files/python
>>>>     export
>>>> PYTHONPATH=/sdcard/com.android.python27/extras/python:/data/data/com.android.python27/files/python/lib/python2.7/lib-dynload:/data/data/com.android.python27/files/python/lib/python2.7
>>>>     export PATH=$PYTHONHOME/bin:$PATH
>>>>     export
>>>> LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/data/com.android.python27/files/python/lib:/data/data/com.android.python27/files/python/lib/python2.7/lib-dynload
>>>>
>>>> I also needed to change the LLVM_SRC_ROOT,  LLVM_OBJ_ROOT and PYTHON
>>>> variables in the llvm/Makefile.config to point to my $HOME directory in
>>>> Terminal IDE (the terminal emulator I'm running the tests in):
>>>>
>>>>     LLVM_SRC_ROOT   := $(call realpath,
>>>> /data/data/com.spartacusrex.spartacuside/files/llvm)
>>>>     LLVM_OBJ_ROOT   := $(call realpath,
>>>> /data/data/com.spartacusrex.spartacuside/files/build)
>>>>     PYTHON     :=
>>>> /data/data/com.android.python27/files/python/bin/python
>>>>
>>>> In addition I needed to change the path to sh in
>>>> llvm/autoconf/mkinstalldirs to the correct location in android.
>>>>
>>>>     #! /system/bin/sh
>>>>
>>>> So that got it to run. But I still ran into a bunch of errors like:
>>>> shell-init: error retrieving current directory: getcwd: cannot access
>>>> parent directories: Permission denied
>>>> error: Could not create file: /tmp/******
>>>>
>>>> The full output of make check all is in the file I attached.
>>>>
>>>> I think I can get it to work if I'm able to make it use a different tmp
>>>> directory as the /tmp/ directory is nonexistent on Android because every
>>>> app is supposed to have it's own tmp directory. Can anyone show me how to
>>>> change the tmp directory llvm uses for these tests?
>>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140925/dba6eed3/attachment.html>


More information about the llvm-commits mailing list