Use one of the spins such as XFCE which use lighter desktop environments.
Use one of the spins such as XFCE which use lighter desktop environments.
Code: Select all
[email protected] ~ $ emaint sync --repo rpi3
[email protected] ~ $ emerge -av dev-lang/mono
Code: Select all
[email protected] ~ $ mkdir HelloWorld && cd HelloWorld
[email protected] ~/HelloWorld $ nano -w HelloWorld.cs
Code: Select all
using System;
public class HelloWorld
{
public static void Main()
{
Console.WriteLine("Hello World!");
}
}
Code: Select all
[email protected] ~/HelloWorld $ TERM=xterm mcs HelloWorld.cs
Code: Select all
[email protected] ~/HelloWorld $ TERM=xterm mono HelloWorld.exe
Hello World!
The first message, about kernel sources, is a warning, not an error. The image, as shipped, uses a binary kernel package, so there are (by default) no sources at /usr/src/linux for the ebuild to check. It is a fairly common thing to see on Gentoo. The ebuild is trying, per bug 261869, to ensure your kernel has CONFIG_SYSVIPC enabled, as this is a build requirement. Fortunately, the kernel shipped with the image does have this set. The ebuild assumes you know what you are doing in this situation, outputs the message, and keeps going. The dev-lang/mono package did install successfully on your system - as otherwise there would be no "mcs" binary for you to experience your second issue with ^-^.Gavinmc42 wrote: ↑Thu Jan 10, 2019 5:39 amSakaki, got a message trying to emerge mono.
"Unable to find kernel sources at /usr/src/linux" ...
see http://bugs.gentoo.org/261869
Type "mcs" and I get "Unhandled Exception:......
Code: Select all
[email protected] ~ $ mcs Foo.cs
[email protected] ~ $ mono Foo.exe
Code: Select all
[email protected] ~ $ TERM=xterm mcs Foo.cs
[email protected] ~ $ TERM=xterm mono Foo.exe
Code: Select all
alias mcs='TERM=xterm mcs'
alias mono='TERM=xterm mono'
Code: Select all
[email protected] ~ $ mcs Foo.cs
[email protected] ~ $ mono Foo.exe
Mostly now for emerges etc. I work on a QEMU binfmt_misc aarch64 chroot on a PC workstation. As explained in my wiki article about it (here), this allows me to have a large tmpfs-based /var/tmp/portage, and sufficient memory that swapping is not necessary during builds. Root (and boot) for the build system is on a 250GB Samsung SSD connected via a Sabrent USB adaptor - when building on a PC this can take advantage of the USB3 interface speed. For odd packages that won't build in this way, I simply boot the same image on a regular RPi3B+, and, where possible, distribute the build using distcc (as explained here ff.)Gavinmc42 wrote: Ok, now I want to know how you fit everything on your SD card.
What is your Pi setup?
My 32GB card is getting full and with so much stuff now working in Gentoo64 I need to upgrade storage.
You can do this simply by recursively copying the contents of (e.g.) /home to an ext4 partition on the USB drive, and then adding an entry to /etc/fstab to automount it on boot, and finally clearing the old /home to save space. Make sure to use UUID-based partition naming in /etc/fstab for robustness. See e.g. this post and this wiki entry.Gavinmc42 wrote: Is there a simple way to assign the home demouser folder to USB stick?
Yes, you can, using a nice Portage feature called slotting. Not all packages support this, but, where they do, it is (usually, in the absence of masking conflicts) possible to have multiple versions of the same software installed simultaneously on your system. See e.g. here for further details. And fortunately, LLVM/Clang is slotted on Gentoo; you can see this if you use the (bundled) eix tool on your gentoo-on-rpi3-64bit system:Gavinmc42 wrote: ↑Fri Jan 11, 2019 6:48 amI found the pre-built binaries for Clang/LLVM 3.9.1.
It looks like AArch64 has pre-builts start at version 3.5.
Is there a way that emerge can be used to install multiple ebuild versions?
To build Pony I have to set the compiler to 3.9.1, but I don't want to uninstalled 7.0.0
Code: Select all
[email protected] ~ $ eix --exact sys-devel/llvm
[I] sys-devel/llvm
Available versions:
(0) ~*3.4.2-r100(0/3.4) ~*3.5.2-r100(0/3.5) ~*3.6.2-r100(0/3.6) ~*3.7.1-r3(0/3.7.1) ~*3.9.1-r1(0/3.9.1)
(4) (~)4.0.1-r1
(5) (~)5.0.2
(6) 6.0.1^t{tbz2} [M](~)6.0.1-r2^t
(7) (~)7.0.1^t{tbz2} **7.0.9999^t
(8) **9999^t
{clang debug default-compiler-rt default-libcxx doc exegesis gold libedit +libffi lldb multitarget ncurses ocaml python +sanitize +static-analyzer test xar xml ABI_MIPS="n32 n64 o32" ABI_PPC="32 64" ABI_S390="32 64" ABI_X86="32 64 x32" ELIBC="musl" KERNEL="Darwin FreeBSD linux" LLVM_TARGETS="AArch64 AMDGPU ARM AVR BPF Hexagon Lanai MSP430 Mips NVPTX Nios2 PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore" PYTHON_TARGETS="python2_7" VIDEO_CARDS="radeon"}
Installed versions: 6.0.1(6)^t{tbz2}(18:01:22 10/01/19)(libffi ncurses xml -debug -doc -gold -libedit -test -xar ABI_MIPS="-n32 -n64 -o32" ABI_PPC="-32 -64" ABI_S390="-32 -64" ABI_X86="-32 -64 -x32" KERNEL="-Darwin" LLVM_TARGETS="AArch64 BPF -AMDGPU -ARM -Hexagon -Lanai -MSP430 -Mips -NVPTX -PowerPC -Sparc -SystemZ -X86 -XCore")
Homepage: https://llvm.org/
Description: Low Level Virtual Machine
Code: Select all
RDEPEND="dev-libs/libpcre2
dev-libs/openssl:=
>=sys-devel/llvm-3.9.1:=
<sys-devel/llvm-7.0.0:=
sys-libs/ncurses:=
sys-libs/zlib
vim-syntax? ( app-vim/pony-syntax )"
DEPEND="${RDEPEND}
virtual/pkgconfig"
Code: Select all
[email protected] ~ $ sudo emaint sync --repo rpi3
Code: Select all
[email protected] ~ $ sudo emerge -av dev-lang/pony
These are the packages that would be merged, in order:
Calculating dependencies... done!
[binary NS ] sys-devel/llvm-6.0.1:6::gentoo [7.0.1:7::gentoo] USE="libffi ncurses xml -debug -doc -gold -libedit -test -xar" LLVM_TARGETS="(AArch64) BPF -AMDGPU -ARM -Hexagon -Lanai -MSP430 -Mips -NVPTX -PowerPC -Sparc -SystemZ -X86 -XCore" 18,611 KiB
[ebuild N ] dev-lang/pony-0.25.0::rpi3 USE="-test (-vim-syntax)" 1,346 KiB
Total: 2 packages (1 new, 1 in new slot, 1 binary), Size of downloads: 19,957 KiB
Would you like to merge these packages? [Yes/No]
Code: Select all
[email protected] ~ $ mkdir hello && cd hello
[email protected] ~/hello $ nano -w main.pony
Code: Select all
actor Main
new create(env: Env) =>
env.out.print("Hello, world!")
Code: Select all
[email protected] ~/hello $ ponyc
Building builtin -> /usr/lib/pony/0.25.0/packages/builtin
Building . -> /home/demouser/hello
Generating
Reachability
Selector painting
Data prototypes
Data types
Function prototypes
Functions
Descriptors
Optimising
Writing ./hello.o
Linking ./hello
Code: Select all
[email protected] ~/hello $ ./hello
Hello, world!
Code: Select all
[email protected] ~ $ sudo emaint sync --repo rpi3
[email protected] ~ $ sudo emerge -avu dev-lang/pony
Code: Select all
[email protected] ~ $ mkdir mandelbrot && cd mandelbrot
[email protected] ~/mandelbrot $ wget -c https://raw.githubusercontent.com/ponylang/ponyc/0.25.0/examples/mandelbrot/mandelbrot.pony
Code: Select all
[email protected] ~/mandelbrot $ ponyc
Building builtin -> /usr/lib/pony/0.25.0/packages/builtin
Building . -> /home/demouser/mandelbrot
Building cli -> /usr/lib/pony/0.25.0/packages/cli
Building collections -> /usr/lib/pony/0.25.0/packages/collections
Building ponytest -> /usr/lib/pony/0.25.0/packages/ponytest
Building time -> /usr/lib/pony/0.25.0/packages/time
Building collections/persistent -> /usr/lib/pony/0.25.0/packages/collections/persistent
Building random -> /usr/lib/pony/0.25.0/packages/random
Building buffered -> /usr/lib/pony/0.25.0/packages/buffered
Building files -> /usr/lib/pony/0.25.0/packages/files
Building term -> /usr/lib/pony/0.25.0/packages/term
Building promises -> /usr/lib/pony/0.25.0/packages/promises
Building strings -> /usr/lib/pony/0.25.0/packages/strings
Building signals -> /usr/lib/pony/0.25.0/packages/signals
Building capsicum -> /usr/lib/pony/0.25.0/packages/capsicum
Generating
Reachability
Selector painting
Data prototypes
Data types
Function prototypes
Functions
Descriptors
Optimising
Writing ./mandelbrot.o
Linking ./mandelbrot
Code: Select all
[email protected] ~/mandelbrot $ time ./mandelbrot --output=out.dat
real 0m17.197s
user 0m57.406s
sys 0m0.258s
[email protected] ~/mandelbrot $ file out.dat
out.dat: Netpbm image data, size = 16000 x 16000, rawbits, bitmap
Code: Select all
[email protected] ~/mandelbrot $ sudo emerge -av virtual/imagemagick-tools
[email protected] ~/mandelbrot $ time convert out.dat -resize 4000x4000 -depth 4 -colorspace Gray out.png
real 4m2.034s
user 1m31.596s
sys 0m15.878s
Code: Select all
[email protected] ~/mandelbrot $ gimp out.png &>/dev/null&
Code: Select all
[email protected] ~ $ emaint sync --repo rpi3
[email protected] ~ $ emerge -avu www-client/firefox
Been a while, but IIRC, you need to build a cross-toolchain separately from the dev-embedded/arduino IDE, via crossdev. A good reference is:Gavinmc42 wrote:missing /usr/bin/avr-g+=: no such file or directory
Code: Select all
[email protected] ~ $ sudo emaint sync --repo rpi3
[email protected] ~ $ emerge -avu www-client/chromium
The aquarium test runs OK for me, doesn't crash on Chromium-72 even with 30,000 webgl fish ^-^ Not the world's fastest frame rate though (I think it is about 2s / frame on vc4-fkms-v3d, 256MiB CMA):Gavinmc42 wrote: ↑Tue Jan 15, 2019 11:58 amBoth the new Firefox and Chromium seem to be fine up to 10 tabs, Chromium now using less memory?
Swap and zram changes improves things?
WebGLsamples Aquarium still the ultimate stress test.
I think they fail cleaner than the last time I tested, Gentoo still runs, last time i needed to pull power?
Yes, as in many cases it avoids hitting the backing-store swapfile at all. Not a magic bullet though - if your about-to-be-swapped-out pages are incompressible, it'll add a bit of overhead, and it evicts decompressed swap pages to backing store when the in-memory cache is exhausted. But overall, I find it useful to have turned on.
Both browsers have some core WebAssembly support, yes, although Chromium-72 seems to have the edge over Firefox-64. I tried e.g. the WasmBoy[1] benchmark (using the Tobu Tobu Girl open-source ROM), and Chromium hit around 40fps, while Firefox was around 30fps:
Code: Select all
[email protected] ~ $ sudo emaint sync --repo rpi3
[email protected] ~ $ sudo emerge -av1u virtual/rust virtual/cargo
It seems to make an improvement, but I don't know how to qualify it, except to say it feels a bit faster and perhaps more reliable?Not a magic bullet though - if your about-to-be-swapped-out pages are incompressible, it'll add a bit of overhead, and it evicts decompressed swap pages to backing store when the in-memory cache is exhausted. But overall, I find it useful to have turned on.
Code: Select all
[email protected] ~ $ sudo emaint sync --repo rpi3
[email protected] ~ $ sudo emerge -vu www-client/chromium dev-embedded/rpi3-64bit-meta