Chromium build failed on Gentoo – fixed

This is where it started
localhost ~ # grep "error:" /var/tmp/portage/www-client/chromium-74.0.3729.169/temp/build.log
[3419/16611] python ../../mojo/public/tools/bindings/ --output gen/services/viz/privileged/interfaces/gl/gl__type_mappings --dependency gen/gpu/ipc/common/interfaces__type_mappings --dependency gen/media/mojo/interfaces/interfaces__type_mappings --dependency gen/ui/gfx/geometry/mojo/mojo__type_mappings --dependency gen/ui/gfx/mojo/mojo__type_mappings --dependency gen/url/mojom/url_mojom_gurl__type_mappings --start-typemap public_headers=//gpu/command_buffer/common/constants.h traits_headers=//services/viz/privileged/cpp/context_lost_reason_traits.h type_mappings=viz.mojom.ContextLostReason=gpu::error::ContextLostReason
x86_64-pc-linux-gnu-g++: fatal error: Killed signal terminated program cc1plus
localhost ~ #
localhost ~ # dmesg |grep cc1plus
[20473.830849] [ 28321] 250 28321 564527 228755 4042752 258622 0 cc1plus
[20473.830857] [ 28357] 250 28357 409737 144997 2793472 184788 0 cc1plus
[20473.830866] [ 28372] 250 28372 379021 235063 2592768 69175 0 cc1plus
[20473.830874] [ 28375] 250 28375 405111 298734 2744320 26004 0 cc1plus
[20473.830884] Out of memory: Kill process 28321 (cc1plus) score 237 or sacrifice child
[20473.830888] Killed process 28321 (cc1plus) total-vm:2258108kB, anon-rss:915020kB, file-rss:0kB, shmem-rss:0kB
[20473.960229] oom_reaper: reaped process 28321 (cc1plus), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
[39359.986750] cc1plus invoked oom-killer: gfp_mask=0x6200ca(GFP_HIGHUSER_MOVABLE), nodemask=(null), order=0, oom_score_adj=0
[39359.986750] cc1plus cpuset=/ mems_allowed=0
[39359.986750] CPU: 1 PID: 13930 Comm: cc1plus Tainted: G OE 4.19.44-gentoo #1
[39359.986751] [ 13918] 250 13918 527207 216835 3739648 232411 0 cc1plus
[39359.986751] [ 13930] 250 13930 449644 182289 3117056 187980 0 cc1plus
[39359.986751] [ 13939] 250 13939 383355 270389 2637824 40695 0 cc1plus
[39359.986751] [ 13942] 250 13942 397893 279494 2682880 35731 0 cc1plus
[39359.986751] Out of memory: Kill process 13918 (cc1plus) score 218 or sacrifice child
[39359.986751] Killed process 13918 (cc1plus) total-vm:2108828kB, anon-rss:867336kB, file-rss:4kB, shmem-rss:0kB
[39360.059949] oom_reaper: reaped process 13918 (cc1plus), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
localhost ~ #
Source compiled.
Test phase [not enabled]: www-client/chromium-74.0.3729.169
Install chromium-74.0.3729.169 into /var/tmp/portage/www-client/chromium-74.0.3729.169/image category www-client
Completed installing chromium-74.0.3729.169 into /var/tmp/portage/www-client/chromium-74.0.3729.169/image
Final size of build directory: 6666072 KiB ( 6.3 GiB)
Final size of installed tree: 456428 KiB (445.7 MiB)

Strava meets Python

I use strava to register my rides where I mark my commutes. Once a year I need to identify the commuting ratio for tax reasons.

Strava has an api which is well documented, so please check that out here. The code below will get rides between two dates and calculates the ratio of commutes and private rides.

I’m going to update the code with generators to manage the paging, add some error handling on the requests and clean things up a little, as soon as I get round to it.

Continue reading “Strava meets Python”

Mac OS High Sierra on VirtualBox on Linux/Ubuntu 16.04/Xenial

    1. Need a way to download the install cd from Apple’s store
      I got an xcloud for a month – could have used macincloud
    2. download High Sierra from the app store on the mac
    3. Create virtualbox image
      I Had to go for generic Mac OSX 64 bit, not the specific High Sierra one !!
VBoxManage modifyvm Sierra  --cpuidset 00000001 000306a9 00020800 80000201 178bfbff
VBoxManage setextradata "Sierra" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3"
VBoxManage setextradata "Sierra" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "Sierra" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple"
VBoxManage setextradata "Sierra" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "Sierra" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1
VBoxManage setextradata "Sierra" "VBoxInternal2/EfiGraphicsResolution" "1920x1080"
  1. Configure
  2. change resolution
    Method 1: VBoxManage setextradata “Type Your VM Name Here” VBoxInternal2/EfiGraphicsResolution HxV  (Recommended)
    Method 2: VBoxManage setextradata “Type Your VM Name Here” VBoxInternal2/EfiHorizontalResolution H  (Alternative)
    	  VBoxManage setextradata “Type Your VM Name Here” VBoxInternal2/EfiVerticalResolution V
    Resolutions to choose:
      1280x720 | 1920x1080 | 2560x1440 | 2048x1080 | 3840x2160 | 5120x2880 | 1280x800 | 1280x1024 |1600x900 | 1440x900
         HD 	FHD	    QHD          2K	     4K	         5K


Perl still does my hostnames resolving

Again, I had a large list of hostnames which I needed resolved to their ip addresses.

  • nslookup: slow
  • ping -c 1: slow
  • getent hosts: “random” ipv6 addresses
  • no fping available

So I still use perl for gethostbyname() or getaddrinfo():

Example below takes input from stdin/pipe.

perl -MSocket -nwle'my @addresses = gethostbyname($_); my @ips = map { inet_ntoa($_) } @addresses[4 .. $#addresses]; print "@ips"'

Build an IOS app on Linux – without MAC – using React Native

I found myself not finding an app in the apple store that accommodates my requirements.  I have built an app in the past using mac + xcode which works nicely, but now I have an ubuntu running on my lenovo yoga.  So no Mac.  I have been reading about React and React Native so that’s what I’ll try.  It would allow me to publish the app not only for ios but also for android. Also, saves me from investing in a Mac.  And on top of that, I learn React to build apps just about anywhere.  Win Win Win…

I don’t want to waste time with hackintosh, vm, simulators etc.  I really want this to work.

My two new programming languages for this year will now be Golang (backed by Google) and React (facebook).


So we need Nodejs and expo.  Coding is done in either the online Expo IDE or XDE offline.  On the iPhone, we need the expo client.

nginx change http request header value based on source address

Let’s say you want to change the value of a header value based on the source location, ie localhost vs external.  Or you can drop it all together. This is how it’s done in nginx.

We’re setting a variable first using map in the http{} block and then use it later in the location{} section.

  • Add this to the http{} section:   if loopback, it will set the $customkey variable to the original header value of ‘custom-key’, else it will default to empty
map $remote_addr $customkey { $http_custom_key ;
     default "";
  • Add this to the location{} section where you want the use this for your proxy_pass:  (re)set the header to the previously set variable or remove it.
proxy_set_header custom-key  $customkey;


boot-repair to the rescue

Installing ubuntu from the live-cd these days is too easy, really: insert usb stick, boot, install. Done.

The ability to try before installing is just the icing on the cake.  You check if all your hardware is supported (especially network, display, mouse/keyboard) and go…

If you installed it next to the preinstalled Windows and the latest update destroyed your GRUB bootloader config (or any other), use the same live-cd/usb stick to recover.

just run these lines in a terminal and let the repairing begin:

sudo add-apt-repository ppa:yannubuntu/boot-repair 
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair