Runtime: [Release: Virtual ARM Device] Linux ARM Emulator to Build/Run .Net Core

Created on 18 Mar 2016  路  66Comments  路  Source: dotnet/runtime

Here is Linux/ARM Emulator as a virtual ARM device to help system developers that don't have any real embedded devices such as Raspberry Pi2 Board, Samsung ARM Chromebook, and Odroid (X)U3 Board. It means that you can easily build .net core source and run an executable ARM binary on the emulator.

Virtual ARM Device: Linux/ARM Emulator to build/run .Net Core

  • Note: We will continually update this webpage to share changed contents whenever you upload the latest version. (This webpage is last modified on Jul-15-2016 by Geunsik Lim.)

    Requirements

  1. Host OS: Ubuntu 14.04 LTS X64 PC
    (Required RAM Size: 2GiB+)
  2. Target Architecture: ARMV7LE

    Major Goal

  3. To enable Linux/ARM Continuous Integration (CI) based on QEMU/chroot

  4. To build & run dotnet core components (e.g, coreclr and corefx) like sandbox
  5. To provide the system developers (that don't have embedded boards) with Virtual ARM Device

    Download

Step 1: Decompress the compress file with pbzip2 command for parallelism
(And, the existing bzip2 command is also compatible to decompress the file.)

   u1404$leemgs> sudo apt-get install pbzip2 
   u1404$leemgs> sudo ln -s /usr/bin/pbzip2 /usr/bin/pbunzip2
   u1404$leemgs> sudo time tar --use-compress-prog=pbunzip2 -xvf ./linux-arm-emulator-2016****.tar.pbz2

Step 2: Run ./start.sh (Please, refer to ./doc/README.txt for more details)

Step 3: .Net Core world!!!

   arm@emul#>  cd /dotnet/runtime-hardfp-debug-mode-***
   arm@emul#> time ./corerun -c ./  /dotnet/example/hello.exe
   arm@emul#> time ./corerun -c ./  /dotnet/example/MS****/Hello.exe linux
   arm@emul#> time ./corerun -c ./  /dotnet/example/MS****/Hello.exe freebsd
   arm@emul#> time ./corerun -c ./  /dotnet/example/MS****/Hello.exe mac
   arm@emul#> time ./corerun -c ./  /dotnet/example/FloatTest.exe

Step 4: Screenshot: Execution time experiment between debug build and release build
You can see more screenshots at https://github.com/dotnet/coreclr/issues/3784

linux-arm-emulator-20160426-1600 4

emulator-test-debug-and-release

emulator-ncurse-hello-debug-and-release

Build the latest CoreCLR/CoreFX firsthand on Ubuntu 14.04 X64

Compilation with Ubuntu/ARM rootFS for Ubuntu/ARM
  • CoreCLR (w/ cross-build on Ubuntu 14.04 X64):
    instruction - https://github.com/dotnet/coreclr/tree/master/Documentation/building
    sudo time ./cross/build-rootfs.sh arm
    cp -arf ./cross/rootfs/arm /work/dotnet/rootfs-coreclr/
    time ROOTFS_DIR=/work/dotnet/rootfs-coreclr/arm ./build.sh arm debug verbose clean cross
  • CoreFX (w/ cross-build on Ubuntu 14.04 X64):
    instruction - https://github.com/dotnet/corefx/blob/master/Documentation/building/unix-instructions.md
    sudo time ./cross/build-rootfs.sh arm
    cp -arf ./cross/rootfs/arm /work/dotnet/rootfs-corefx/
    time ROOTFS_DIR=/work/dotnet/rootfs-corefx/arm ./build.sh native arm debug clean cross
    time ./build.sh managed debug clean verbose

    Compilation with Linux/ARM Emulator rootFS for Linux/ARM
  • CoreCLR (w/ native-build on Linux/ARM Emulator):
    cd ./linux-arm-emulator-2016**
    ./start.sh - select Menu '3'
    source /dot/setenv/setenv_coreclr.sh
    cd /nfs/coreclr/ (Please, read ./doc/NFS.txt file for details)
    time ./build.sh arm-softfp cross clean verbose

  • CoreCLR (w/ cross-build on Ubuntu 14.04 X64):

sudo mount ./linux-arm-emulator/platform/rootfs-tm1.ext4 /work/dotnet/rootfs-coreclr/linux-arm-emulator
cd ./coreclr/

> vi ./cross/arm-softfp/toolchain.cmake

diff --git a/cross/arm-softfp/toolchain.cmake b/cross/arm-softfp/toolchain.cmake
index 407ab53..ee5a4a3 100644
--- a/cross/arm-softfp/toolchain.cmake
+++ b/cross/arm-softfp/toolchain.cmake
@@ -6,6 +6,7 @@ set(CMAKE_SYSTEM_PROCESSOR armv7l)

 ## Specify the toolchain
 set(TOOLCHAIN "arm-linux-gnueabi")
+set(TOOLCHAIN_CUSTOM "armv7l-tizen-linux-gnueabi/4.9.2")
 set(TOOLCHAIN_PREFIX ${TOOLCHAIN}-)
 #set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc)
 #set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++)
@@ -20,8 +21,8 @@ add_compile_options(-mfpu=vfpv3)
 add_compile_options(--sysroot=${CROSS_ROOTFS})

 set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -target ${TOOLCHAIN}")
-set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
-set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/lib/${TOOLCHAIN}")
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN_CUSTOM}")
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN_CUSTOM}")
 set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}")

> vi ./cross-build-corclr-emul.sh

------------- coreclr cross-build: start ----------------------------
#!/usr/bin/env bash
chroot="/work/dotnet/rootfs-coreclr/linux-arm-emulator"

ROOTFS_DIR=${chroot} CPLUS_INCLUDE_PATH="$chroot/usr/lib/gcc/armv7l-tizen-linux-gnueabi/4.9.2/include/c++/:$chroot/usr/lib/gcc/armv7l-tizen-linux-gnueabi/4.9.2/include/c++/armv7l-tizen-linux-gnueabi/:$chroot/usr/include/llvm/:$chroot/usr/include/llvm-c/:$chroot/usr/local/include" CXXFLAGS="-Wno-deprecated-declarations" ./build.sh arm-softfp cross debug clean verbose clang3.6

------------- coreclr cross-build: end ----------------------------
  • CoreFX (w/ native-build on Linux/ARM Emulator):

    **In Progress!!!**
    

    Do unit test of coreCLR on Raspberry Pi2 board

work@pi2$ cd coreclr/tests/
work@pi2$ time ./runtest.sh \
--testRootDir=/home/pi/coreclr/bin/tests/Windows_NT.x64.Debug \
--testNativeBinDir=/home/pi/coreclr/bin/obj/Linux.arm.Debug/tests \
--coreClrBinDir=/home/pi/coreclr/bin/Product/Linux.arm.Debug \
--mscorlibDir=/home/pi/coreclr/bin/Product/Linux.arm.Debug \
--coreFxBinDir=/home/pi/corefx/bin/Linux.AnyCPU.Debug \
--coreFxNativeBinDir=/home/pi/corefx/bin/Linux.arm.Debug

Todo

  1. Stabilize the file system consistency of guestOS
  2. Support SSHFS
  3. Completely separated a floating point (e.g., softfp and hard-fp) infrastructure

    Changelog

  • Refer to the ./doc/CHANGELOG.txt file.

End.

arch-arm32 area-Meta

Most helpful comment

We now have enabled building and testing of coreclr and corefx on the Linux ARM Emulator. The documentation for the same can be found in coreclr (link will work after dotnet/coreclr#6249 is merged) and corefx.

The build and test process has been integrated into the CI system on a per-PR basis in both coreclr and corefx projects (Debug and Release jobs). Now, we can prevent build and major test regressions from occurring by detecting the same before merging the PR.

All 66 comments

:+1:

We have attached the latest version of Linux/ARM Emulator via Dropbox. If someone can support a free web storage with unlimited space compared to the Dropbox service in order to archive Linux/ARM Emulator version, we will continually upload new version of the Emulator there. Actually, We can not keep the old versions of Linux/ARM Emulator, because the free account of Dropbox is limited with ~2GiB.

@richlander Any chance you could get this hosted?

Awesome!

@richlander , Can you support a hosting service for more effective communication of .net core Linux/ARM?

@benpye, Yesterday, I figured out that OneDrive (~15GiB) had supported the web storage space bigger than Dropbox (~2GiB). I am thinking to move to OnDrive insted of Dropbox as workaround at next release if we cannot find any volunteers that can support mass web storage.

CC: @MyungJoo

"pbzip2" is compatible with regular "bzip2" thus the following ordinary command

tar jxvf ./linux-arm-emulator-20160318-1530.tar.pbz2

can be used instead of

sudo time tar --use-compress-prog=pbunzip2 -xvf ./linux-arm-emulator-20160318-1530.tar.pbz2

Instead, you will have slow decompression speed by using bzip2 w/o pbzip2.

Decompression speed doesn't matter for me. Short and standard command line is preferable.

I would also prefer 'xz' compression since it has much better compression rate and reduces download time.

CC: @benpye , @jkotas , @myungjoo , @manu-silicon , @lemmaa , @prajwal-aithal

We have uploaded the updated version of the "Linux/ARM Emulator". From now on, we will upload the next version via OneDrive (~15GiB) instead of Dropbox (~2GiB).

linux-arm-emulator-ver-20160323-screen

I could host files on my personal server at hoult.org if it's useful. I'm using this emulator at work @b.[email protected].

I'm moving literally right now from a core2duo with 150 GB to a Xeon E3-1231 v3 (pretty much an i7 4770 I think) with 1.4 TB. I wouldn't miss 50 or 100 GB or more.

@brucehoult , Thank you for supporting the mirroring service to archive the old versions of the Linux/ARM Emulator (for evaluating .net core)

:+1:

We have released update version of "Linux/ARM Emulator" (ver. 20160404-1330) on Apr-04-2016.

CC: @manu-silicon , @benpye , @jkotas , @myungjoo, @prajwal-aithal , @lemmaa , @brucehoult

@leemgs do the changes in the new emulator include updating the included build of coreclr to track github?

@brucehoult , the changes in the new emulator are included ./doc/CHANGELOG.txt file. And we will maintain the emulator with github.com (e.g., https://github.com/leemgs/linux-arm-emulator) in the near future after finishing some procedures.

CC: @hongsekim , @wateret

Awesome work! I saw you already found hosting already. Keep going! If you need any infrastructure service that I can help like storage or CI please let me know. I can put it on our Azure account, no problem at all.

@galvesribeiro , 馃憤 Thank you so much. Could you provide the your storage as another mirror service to archive old versions?

@leemgs no problem at all. I want this ARM port going forward so I hope anybody later can get it into old armv6l devices as well.

Regarding the storage, ping me later today on Gitter so I can create an storage account and give you the keys. If a linux host is also needed to build the CI just let me know there as well and we can arrange that.

Good work! :)

@galvesribeiro, Yes, I will ping you today on Gitter (dotnet/coreclr).

We have uploaded the latest Linux/ARM Emulator (version 20160426-1600). You can check the changes from the ./doc/CHANGELOG.txt. From our experiment, the execution time of release build is faster about 3~4 times against that of debug build as following:

emulator-test-debug-and-release

emulator-ncurse-hello-debug-and-release

CC: @manu-silicon , @benpye , @jkotas , @myungjoo, @prajwal-aithal , @lemmaa , @brucehoult , @galvesribeiro

Mirrored, shasum b29ceab62ee0817500194bd9f084b68a51291a96

http://hoult.org/coreclr/linux-arm-emulator-20160426-1600.tar.pbz2

@brucehoult , Could you upload https://dncorerepo.blob.core.windows.net/armemulator/linux-arm-emulator-20160426-1600.2.tar.pbz2 into http://hoult.org/coreclr/ ? The difference is just symbolic link of libunwind.so and typo of the prompt.

Done. http://hoult.org/coreclr/linux-arm-emulator-20160426-1600.2.tar.pbz2

That's quite a small change for 24 MB bigger.

@leemgs could I ask you to add the following to option 3 (make_arm_build_env) in start.sh ?

if ! uname -m | grep -q arm;then QEMU=qemu-arm-static; fi

And then use $QEMU instead of qemu-arm-static in the chroot command.

With this change, start.sh option 3 works to run the environment on real hardware such as Raspberry Pi.

@brucehoult , Do you mean the below patch? BTW, what does "to run the environment on real hardware " mean? Could you tell me an example?

invain@target:/work/dotnet/arm32/linux-arm-emulator$ git diff
diff --git a/start.sh b/start.sh
index 9952bf1..0d95b8b 100755
--- a/start.sh
+++ b/start.sh
@@ -108,6 +108,7 @@ fi
 # .How to force unmount (with a lazy unmount): umount -l ./platform/my/
 # .Note: In case of /etc/init.d/rcS, mount -t tmpfs shm /dev/shm
 #
+QEMU=""
 CHROOT_PS1="\[\e[1;35m\](chroot):\u\[\e[m\]\]"
 function make_arm_build_env {
 sudo mount platform/rootfs-t30.ext4 ./platform/my/
@@ -117,7 +118,8 @@ sudo mount -o bind /dev/pts ./platform/my/dev/pts
 sudo mount -t tmpfs shm     ./platform/my/run/shm
 sudo mount -o bind /sys     ./platform/my/sys
 # sudo mount -o bind /work/nfs     ./platform/my/nfs
-sudo chroot ./platform/my/ qemu-arm-static /usr/bin/env PS1="${CHROOT_PS1}" /bin/bash
+if ! uname -m | grep -q arm;then QEMU=qemu-arm-static; fi
+sudo chroot ./platform/my/ $QEMU /usr/bin/env PS1="${CHROOT_PS1}" /bin/bash
 # sudo umount ./platform/my/nfs
 sudo umount ./platform/my/sys

@leemgs yes, like that.

By real hardware, I mean copy linux-arm-emulator-20160426-1600.tar.pbz2 onto an ARM machine running some other (hard fp) linux .. e.g. Raspberry Pi with Raspbian, or Odroid with Ubuntu Mate, untar, cd into linux-arm-emulator-20160426-1600, then ./start.sh with this patch. And you are running in the soft fp environment, the same as in the emulator, except several times faster.

e.g. on the emulator on Core i7 3770 with Ubuntu 14.04:

root@(none):~# cd /dotnet/runtime-softfp-abi-vfp-debug-mode-20160406/
root@(none):/dotnet/runtime-softfp-abi-vfp-debug-mode-20160406# time ./corerun hello.exe 
Hello World

real    0m39.021s
user    0m33.020s
sys 0m2.180s

example using Odroid XU4 running Ubuntu 15.10 Mate:

$ scp linux-arm-emulator-20160426-1600.tar.pbz2 odroid:
linux-arm-emulator-20160426-1600.tar.pbz2                   100% 1378MB  28.1MB/s   00:49
$ ssh odroid
Welcome to Ubuntu 15.10 (GNU/Linux 3.10.92-76 armv7l)
bruce@hoult-odroid:~$  tar xf ../linux-arm-emulator-20160426-1600.tar.pbz2
bruce@hoult-odroid:~$ cd linux-arm-emulator-20160426-1600
bruce@hoult-odroid:~/linux-arm-emulator-20160426-1600$ ./start.sh
chroot$ cd /dotnet/runtime-softfp-abi-vfp-debug-mode-20160406/
chroot$ time ./corerun hello.exe 
Hello World

real    0m3.779s
user    0m3.230s
sys 0m0.280s
chroot$ 

Summary for different machines (user time, 2nd run):

32.29 ( 1x) Core i7 3770 3.4 GHz
10.17 ( 3x) Raspberry Pi 2, 900 MHz Cortex A7
 8.08 ( 4x) Raspberry Pi 3 1.2 GHz Cortex A-53
 3.23 (10x) Odroid XU4 2.0 GHz Cortex A15

And you are running in the soft fp environment, the same as in the emulator, except several times faster.

@brucehoult , It seems good to the developers. I will apply your proposal in next version. Thanks.

@leemgs may I also suggest the following patch, so that the menu option can be specified on the command line instead of displaying the menu?

--- start.sh.orig   2016-04-28 15:35:59.978271744 +0300
+++ start.sh    2016-04-28 16:01:19.026238416 +0300
@@ -67,10 +67,16 @@
 echo -e ""
 echo -e " ===================================================================== "
 read -p " >> Enter Number (e.g. 1):" MENU_NO
+}



 ### Start Emulator
+function start_emulator {
+MENU_NO=$1
+if [[ "$MENU_NO" = "" ]]; then
+    select_guestos
+fi
 if [[ "$MENU_NO" = "1" ]]; then
    # arm v7 - cortex-a9 with linux 4.3 (up-to-date)
    echo -e ""
@@ -98,7 +104,7 @@
 elif [[ "$MENU_NO" = "q" || "$MENU_NO" = "Q" ]]; then
    exit 1
 else
-   select_guestos  
+   start_emulator  
 fi
 }

@@ -147,7 +153,7 @@

 ### Start Script: main function
 set_configuration
-select_guestos
+start_emulator $1


 # end of line

@brucehoult , It is helpful to give the developers more convenience. :+1: Your additional patch will be included in the next version of the emulator. Thank you for your proposal. LGTM.

ls -d1 /dotnet/runtime-*

/dotnet/runtime-hardfp-abi-vfp-debug-mode-20160426
/dotnet/runtime-hardfp-abi-vfp-release-mode-20160427
/dotnet/runtime-softfp-abi-vfp-debug-mode-20160406

Does emulator really support both hard and soft float point?
If yes then how this support is implemented?
And what is proper way to build CoreCLR for each of hard and soft float point?

@mkborg yes, it's implemented by the softfp toolchain creating elf executables specifying as their interpreter (dynamic linker) /lib/ld-linux.so.3, while the hardfp toolchain creates elf executables with the interpreter specified as /lib/ld-linux-armhf.so.3. Each dynamic linker then uses the appropriate set of dynamic libraries,

And what is proper way to build CoreCLR for each of hard and soft float point?

@mkborg, You can build CoreCLR for each of hard and soft floating point as following:

  • For hard floating point: Build CoreCLR (w/ cross-build on Ubuntu 14.04 X64):
    instruction - https://github.com/dotnet/coreclr/tree/master/Documentation/building
    sudo time ./cross/build-rootfs.sh arm
    time ./build.sh arm debug verbose clean cross skipmscorlib
  • For soft floating point: Build CoreCLR (w/ native-build on Linux/ARM Emulator):
    cd ./linux-arm-emulator-2016**
    ./start.sh - select Menu '3'
    source /dot/setenv/setenv_coreclr.sh
    cd /nfs/coreclr-git/ (Please, read ./doc/NFS.txt file for details)
    time ./build.sh arm debug clean verbose skipmscorlib

@leemgs, Do you use this procedure do build CoreCLR present in those "/dotnet/runtime-*" directories on emulator's file system?
Since emulator is not Ubuntu nor Debian I thought you use ROOTFS_DIR pointing to emulator's file system instead of default cross root file system created by "cross/build-rootfs.sh" script to ensure compatibility.

Do you use this procedure do build CoreCLR present in those "/dotnet/runtime-*" directories on emulator's file system?

@mkborg, Yes.

I thought you use ROOTFS_DIR pointing to emulator's file system instead of default
cross root file system created by "cross/build-rootfs.sh" script to ensure compatibility.

@mkborg, We are not planning to append "cross/build-rootfs.sh" support for a default rootfs of the Linux/ARM Emulator. Instead, please, utilize the below instruction.

  • For soft floating point: Build CoreCLR (w/ native-build for the default rootfs of the Linux/ARM Emulator):
cd ./linux-arm-emulator-2016****
./start.sh - select Menu '3'
source /dot/setenv/setenv_coreclr.sh
cd /nfs/coreclr-git/ (Please, read ./doc/NFS.txt file for details)
time ./build.sh arm debug clean verbose

@brucehoult , Could you archive the latest version https://dncorerepo.blob.core.windows.net/armemulator/linux-arm-emulator-20160426-1600.3.tar.pbz2 ? This version includes your proposals as a minor update.

@brucehoult, Could you append the latest version to your web-server? This version supports Ubuntu/ARM 14.04 rootfs image (HardFP based) as well as the existing Linux/ARM rootfs image (SoftFP based).

Download the latest version 20160426-1600.4 of Linux/ARM Emulator:
https://onedrive.live.com/redir?resid=C93799B86B006829!192&authkey=!AOqJqWXschsBagI&ithint=file%2cpbz2

@leemgs this URL does not seem to work for me. Also, can you give one like previous that I can wget direct to my server in hosting center, not download to PC and then upload again?

Looks like hard FP rootfs in emulator is similar to ordinary cross rootfs created with cross/build-rootfs.sh. Is it somehow different? Is it possible to split emulator into separate hard and soft FP parts to avoid downloading unnecessary one?

I would suggest to remove /var/cache/apt/archives/*.deb files and zero-fill empty space in rootfs image to improve compression rate and reduce resulting archive size.

Please run 'fsck' on rootfs image to make sure it is error-free:
fsck.ext4 -yf rootfs-t30.ext4

e2fsck 1.42.9 (4-Feb-2014)
Pass 1: Checking inodes, blocks, and sizes
Running additional passes to resolve blocks claimed by more than one inode...
Pass 1B: Rescanning for multiply-claimed blocks
Multiply-claimed block(s) in inode 139043: 557226
Multiply-claimed block(s) in inode 148389: 557226
Pass 1C: Scanning directories for inodes with multiply-claimed blocks
Pass 1D: Reconciling multiply-claimed blocks
(There are 2 inodes containing multiply-claimed blocks.)
File /usr/bin/groups (inode #139043, mod time Tue Mar 29 07:19:12 2016)
has 1 multiply-claimed block(s), shared with 1 file(s):
/usr/share/icu/54.1/config/mh-linux (inode #148389, mod time Thu Mar 10 14:55:57 2016)
File /usr/share/icu/54.1/config/mh-linux (inode #148389, mod time Thu Mar 10 14:55:57 2016)
has 1 multiply-claimed block(s), shared with 1 file(s):
/usr/bin/groups (inode #139043, mod time Tue Mar 29 07:19:12 2016)
Multiply-claimed blocks already reassigned or cloned.
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences: +558121 -(567296--567297)
Free blocks count wrong for group #0 (19907, counted=19906).
Free blocks count wrong for group dotnet/coreclr#17 (25065, counted=25066).

, not download to PC and then upload again?

I have uploaded again.

Looks like hard FP rootfs in emulator is similar to ordinary cross rootfs created with
cross/build-rootfs.sh. Is it somehow different?

@mkborg , The difference is just debugging packages such as gdb, strace, ltrace

Is it possible to split emulator into separate hard and soft FP parts to avoid downloading unnecessary one?

@mkborg , Yes. We will keep the existing release method. Then, We will upload the hard FP based additional images (e.g., rootfs-u1404.*.ext4)

Please run 'fsck' on rootfs image to make sure it is error-free:

@mkborg , Thanks, I have recovered filesystem integrity of the image file.

@leemgs new URL? I just get 'The item might not exist or is no longer available"

new URL? I just get 'The item might not exist or is no longer available"

@brucehoult , I am afraid that I cannot continually upload the files into https://dncorerepo.blob.core.windows.net/armemulator/ because of the new security policy of firewall.

  • Download the latest version 20160426-1600.4 of Linux/ARM Emulator:

Default packages: (linux-arm-emulator-20160426-1600.4.tar.pbz2)
https://onedrive.live.com/redir?resid=C93799B86B006829!195&authkey=!AAknnFV-s5CQ05g&ithint=file%2cpbz2

Optional packages: (rootfs-u1404.20160523.ext4.tar.pbz)
https://onedrive.live.com/redir?resid=C93799B86B006829!193&authkey=!AFI3mcSmNQziOVk&ithint=file%2cpbz2

Last time when I was downloading emulator I got truncated file. It happened because download process was unexpectedly interrupted without warning.
Next time please provide file size and some checksum for us to check if download was successful.

Next time please provide file size and some checksum for us to check if download was successful.

@mkborg , No problem. Thanks.

@leemgs I have successfully built CoreCLR in emulator. Now I am trying to build CoreFX in emulator but it fails complaining about missing 'zlib':

CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
  Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)

Could you please add CoreFX dependencies (libcurl4-openssl-dev libkrb5-dev libssl-dev zlib1g-dev) to emulator?

@Dmitri-Botcharnikov FYI

Could you please add CoreFX dependencies (libcurl4-openssl-dev libkrb5-dev libssl-dev zlib1g-dev) to emulator?

@mkborg , Yes, No problem.
@prajwal-aithal , Please, take a look at this issue.

/CC: @myungjoo , @lemmaa , @parjong

@prajwal-aithal Is there any progress on emulator update to build CoreFX?

@mkborg , Geunsik Lim (@leemgs) is handling this.

Could you please add CoreFX dependencies (libcurl4-openssl-dev libkrb5-dev libssl-dev zlib1g-dev) to emulator?

Geunsik Lim (@leemgs) is handling this.

@prajwal , Please, do cross-check about the additional packages to support cross compilation of CoreFX. If you are okay, I will include the additional packages into the existing linux arm emulator.

@leemgs I can verify that the above mentioned packages can be installed in the emulator to enable cross compilation of CoreFX.

Guys, do you still need that storage? I saw the last activity in it on Apr 24. Thanks! Keep the good work!

@prajwal-aithal, @mkborg , The Linux/ARM Emulator ver 20160610.1 includes the packages that you wanted to append to support the compilation of the corefx.

Guys, do you still need that storage? I saw the last activity in it on Apr 24. Thanks! Keep the good work!

@galvesribeiro , Yes, However, I have to upload again the files at home because of the updated firewall policy whenever I release the up-to-date Linux/ARM Emulator.

@brucehoult , Please, append the latest version with wget command into your web-server.

  1. Default packages:
    https://dncorerepo.blob.core.windows.net/armemulator/linux-arm-emulator-20160610.1.tar.pbz2
    https://dncorerepo.blob.core.windows.net/armemulator/linux-arm-emulator-20160610.1.tar.pbz2.md5
  2. Optional packages:
    https://dncorerepo.blob.core.windows.net/armemulator/rootfs-u1404.20160607.ext4.tar.pbz2
    https://dncorerepo.blob.core.windows.net/armemulator/rootfs-u1404.20160607.ext4.tar.pbz2.md5

FYI, CC: @lemmaa, @chunseoklee, @seanshpark, @mylibero, @parjong, @idkiller, @ilyoan, @watere , @sjsinju, @hongsekim, @jyoungyun, @papaslavik , @hqueue , @sam-baravy

Ah, ok! No problem.

@leemgs mirrored to http://hoult.org/coreclr/

Thanks for the wget'able links. It makes it so much easier than downloading on a box with a GUI at home and re-uploading at 1 MB/s. With wget directly on my server ... 50 seconds to get a 1.4 GB file.

@brucehoult , Please, append the latest version with the wget command into your web-server.

  1. Default packages:

https://dncorerepo.blob.core.windows.net/armemulator/linux-arm-emulator-20160610.2.tar.pbz2
https://dncorerepo.blob.core.windows.net/armemulator/linux-arm-emulator-20160610.2.tar.pbz2.md5

Changelog will be available at ./doc/CHANGELOG.txt file.

@leemgs done

@leemgs @prajwal

We are working on SOS-plug-in improvement and we need to rebuild lldb from sources (with our patches and with python scripting enabled). Unfortunately lldb build in emulator fails due to missing dependencies.

Could you please add lldb dependencies (swig libncurses5-dev libedit-dev libxml2-dev) to emulator?

Could you please add lldb dependencies (swig libncurses5-dev libedit-dev libxml2-dev) to emulator?

@prajwal-aithal , Could you check the lldb issue?

We now have enabled building and testing of coreclr and corefx on the Linux ARM Emulator. The documentation for the same can be found in coreclr (link will work after dotnet/coreclr#6249 is merged) and corefx.

The build and test process has been integrated into the CI system on a per-PR basis in both coreclr and corefx projects (Debug and Release jobs). Now, we can prevent build and major test regressions from occurring by detecting the same before merging the PR.

Default packages:
https://dncorerepo.blob.core.windows.net/armemulator/linux-arm-emulator-20160610.4.tar.pbz2
https://dncorerepo.blob.core.windows.net/armemulator/linux-arm-emulator-20160610.4.tar.pbz2.md5

@galvesribeiro , Could you check the azure storage of _dncorerepo_ id? It seems that we cannot connect to the azure storage with the existing azure name & key that was provided by you.

  • with StorageExplorer ( http://storageexplorer.com/ )
Unable to retrieve child resources.
Details: getaddrinfo ENOTFOUND dncorerepo.blob.core.windows.net dncorerepo.blob.core.windows.net:443

@brucehoult , Could you upload the up-to-date linux-arm-emulator binary in your server (e.g. http://hoult.org/coreclr/)?

  • Default packages:
    linux-arm-emulator-20160610.4.tar.pbz2
    linux-arm-emulator-20160610.4.tar.pbz2.md5

  • Optional packages:
    rootfs-u1404.20160607.ext4.tar.pbz2
    rootfs-u1404.20160607.ext4.tar.pbz2.md5

CC: @sjsinju

Was this page helpful?
0 / 5 - 0 ratings

Related issues

nalywa picture nalywa  路  3Comments

bencz picture bencz  路  3Comments

v0l picture v0l  路  3Comments

yahorsi picture yahorsi  路  3Comments

EgorBo picture EgorBo  路  3Comments