[Development] Error building OSMC source code

Hi all,

I’m trying to build the osmc vero3 source code.
I built and install the armv7 toolchain but I receive the following errors when I build the “mediacenter-osmc”:

Setting up openjdk-8-jre-headless:armhf (8u181-b13-2~deb9u1) ...
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/rmid to provide /usr/bin/rmid (rmid) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/java to provide /usr/bin/java (java) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/jjs to provide /usr/bin/jjs (jjs) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/pack200 to provide /usr/bin/pack200 (pack200) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/unpack200 to provide /usr/bin/unpack200 (unpack200) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/orbd to provide /usr/bin/orbd (orbd) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/servertool to provide /usr/bin/servertool (servertool) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/tnameserv to provide /usr/bin/tnameserv (tnameserv) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode
Setting up ca-certificates-java (20170531+nmu1) ...
Adding debian:OpenTrust_Root_CA_G1.pem
Adding debian:Entrust_Root_Certification_Authority_-_G2.pem
Adding debian:D-TRUST_Root_Class_3_CA_2_EV_2009.pem
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0xfdf78ff0, pid=17870, tid=0xf6756470
#
# JRE version: OpenJDK Runtime Environment (8.0_181-b13) (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
# Java VM: OpenJDK Client VM (25.181-b13 mixed mode linux-aarch32 )
# Problematic frame:
# V  [libjvm.so+0x2fbff0]
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# //hs_err_pid17870.log
Adding debian:COMODO_Certification_Authority.pem
Compiled method (c1)     721   40             java.util.regex.Matcher::search (109 bytes)
 total in heap  [0xfb8ba8c8,0xfb8bac08] = 832
 relocation     [0xfb8ba994,0xfb8ba9bc] = 40
 main code      [0xfb8ba9c0,0xfb8bab00] = 320
 stub code      [0xfb8bab00,0xfb8bab50] = 80
 metadata       [0xfb8bab50,0xfb8bab58] = 8
 scopes data    [0xfb8bab58,0xfb8bab90] = 56
 scopes pcs     [0xfb8bab90,0xfb8babf0] = 96
 dependencies   [0xfb8babf0,0xfb8babf4] = 4
 nul chk table  [0xfb8babf4,0xfb8bac08] = 20
Compiled method (c1)     722   40             java.util.regex.Matcher::search (109 bytes)
 total in heap  [0xfb8ba8c8,0xfb8bac08] = 832
 relocation     [0xfb8ba994,0xfb8ba9bc] = 40
 main code      [0xfb8ba9c0,0xfb8bab00] = 320
 stub code      [0xfb8bab00,0xfb8bab50] = 80
 metadata       [0xfb8bab50,0xfb8bab58] = 8
 scopes data    [0xfb8bab58,0xfb8bab90] = 56
 scopes pcs     [0xfb8bab90,0xfb8babf0] = 96
 dependencies   [0xfb8babf0,0xfb8babf4] = 4
 nul chk table  [0xfb8babf4,0xfb8bac08] = 20
Adding debian:QuoVadis_Root_CA_1_G3.pem
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#
qemu: uncaught target signal 6 (Aborted) - core dumped
/var/lib/dpkg/info/ca-certificates-java.postinst: line 43: 17867 Done                    find /etc/ssl/certs -name \*.pem
     17868 Broken pipe             | while read filename; do
    alias=$(basename $filename .pem | tr A-Z a-z | tr -cs a-z0-9 _); alias=${alias%*_}; if [ -n "$FIXOLD" ]; then
        echo "-${alias}"; echo "-${alias}_pem";
    fi; echo "+${filename}";
done
     17870 Aborted                 | java -Xmx64m -jar $JAR -storepass "$storepass"
dpkg: error processing package ca-certificates-java (--configure):
 subprocess installed post-installation script returned error exit status 134
Setting up default-jre-headless (2:1.8-58) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...
Processing triggers for ca-certificates (20161130+nmu1+deb9u1) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...

done.
done.
Errors were encountered while processing:
 ca-certificates-java
E: Sub-process /usr/bin/dpkg returned an error code (1)
Failed to install
Makefile:20: recipe for target 'vero3' failed
make: *** [vero3] Error 1
make: Leaving directory '/mnt/package/mediacenter-osmc'
Makefile:20: recipe for target 'vero3' failed
make: *** [vero3] Error 2

Thank you in advance for the help.
Bye.

The toolchain for vero3 (Vero4K/+) is aarch64-toolchain-osmc, not armv7-toolchain-osmc.

Edit: I’ve never had a need to build the whole of OSMC but, for example, to build the mediacenter-osmc package, I’d simply run:

git clone git://github.com/osmc/osmc
cd osmc/package/mediacenter-osmc
make vero3

Hi,

thanks for the reply.
This is the error when the mediaceter-osmc is built without the arm7 toolchain:

Updating sources
Sources updated successfully
Package armv7-toolchain-osmc is not found on the system, checking APT
Can't find the package in APT repo. It needs to be built first or you need to wait for upstream to add it
Makefile:20: recipe for target 'vero3' failed
make: *** [vero3] Error 1

Are you building on a PC or Vero?
You should build mediacenter natively with armv7 toolchain. The aarch64 toolchain is only used for the kernel

Sam

I’m trying this on a Vero4K

Updating sources
Sources updated successfully
Package armv7-toolchain-osmc is not found on the system, checking APT
Found in APT and will install
Installing package armv7-toolchain-osmc...
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  armv7-toolchain-osmc
0 upgraded, 1 newly installed, 0 to remove and 18 not upgraded.
Need to get 57.1 MB of archives.
After this operation, 225 MB of additional disk space will be used.
Get:1 http://ftp.fau.de/osmc/osmc/apt stretch/main armhf armv7-toolchain-osmc all 1.4.4 [57.1 MB]
etc...

Hi Sam,

I’m building on a PC. I’d like to create the image for the Vero.
Thanks.

You will need armv7 toolchain.
Just clone the repo and run make vero3 from /package/mediacenter-osmc and the build script will do the rest.

Hi gmc,

I know that there is the possibility to clone and get the armv7 toolchain from the repository.
Anyway, I’d like to build everything on my own from the source code.

Here below the steps that I followed (I’m building the code on a Ubuntu machine):

  1. Build the armv7 toolchain:
~/osmc/toolchains/armv7-toolchain-osmc$ make
sudo bash build.sh
sudo rm -f *.deb > /dev/null 2>&1
sudo rm -rf output > /dev/null 2>&1
sudo rm -rf opt > /dev/null 2>&1
Updating sources
[......]
Configuring uname
Cleaning up filesystem
Removing ARM QEMU binary
Building Debian package
dpkg-deb: building package 'armv7-toolchain-osmc' in 'armv7-toolchain-osmc.deb'.
Build successful
  1. Install the toolchain:
~/osmc/toolchains/armv7-toolchain-osmc$ sudo dpkg -i armv7-toolchain-osmc.deb 
Selecting previously unselected package armv7-toolchain-osmc.
(Reading database ... 248466 files and directories currently installed.)
Preparing to unpack armv7-toolchain-osmc.deb ...
Unpacking armv7-toolchain-osmc (1.4.4) ...
Setting up armv7-toolchain-osmc (1.4.4) ...
Copying QEMU binary
  1. Check if the toolchain has been properly installed:
~/osmc/toolchains/armv7-toolchain-osmc$ dpkg -l | grep toolchain
ii  armv7-toolchain-osmc     1.4.4   all    OSMC toolchain for ARMv7
  1. Build the mediacenter-osmc package:
~/osmc/package/mediacenter-osmc$ make vero3
sudo bash build.sh "vero3"
Cleaning old source
Detected tarball source
[.......]
Setting up openjdk-8-jre-headless:armhf (8u181-b13-2~deb9u1) ...
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/rmid to provide /usr/bin/rmid (rmid) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/java to provide /usr/bin/java (java) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/jjs to provide /usr/bin/jjs (jjs) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/pack200 to provide /usr/bin/pack200 (pack200) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/unpack200 to provide /usr/bin/unpack200 (unpack200) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/orbd to provide /usr/bin/orbd (orbd) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/servertool to provide /usr/bin/servertool (servertool) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/tnameserv to provide /usr/bin/tnameserv (tnameserv) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode
Setting up ca-certificates-java (20170531+nmu1) ...
Adding debian:OpenTrust_Root_CA_G1.pem
Adding debian:Entrust_Root_Certification_Authority_-_G2.pem
Adding debian:D-TRUST_Root_Class_3_CA_2_EV_2009.pem
Adding debian:COMODO_Certification_Authority.pem
Adding debian:QuoVadis_Root_CA_1_G3.pem
Adding debian:Verisign_Class_2_Public_Primary_Certification_Authority_-_G3.pem
Adding debian:DigiCert_Global_Root_G2.pem
Adding debian:S-TRUST_Universal_Root_CA.pem
Adding debian:OISTE_WISeKey_Global_Root_GA_CA.pem
Adding debian:SecureSign_RootCA11.pem
Adding debian:SwissSign_Gold_CA_-_G2.pem
Adding debian:EE_Certification_Centre_Root_CA.pem
Adding debian:Swisscom_Root_CA_2.pem
Adding debian:Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.pem
Adding debian:TrustCor_RootCert_CA-2.pem
Adding debian:AddTrust_Low-Value_Services_Root.pem
Adding debian:AffirmTrust_Commercial.pem
Adding debian:Certum_Trusted_Network_CA_2.pem
Adding debian:DigiCert_Assured_ID_Root_G2.pem
Adding debian:Deutsche_Telekom_Root_CA_2.pem
Adding debian:SSL.com_EV_Root_Certification_Authority_RSA_R2.pem
Adding debian:Sonera_Class_2_Root_CA.pem
Adding debian:Hellenic_Academic_and_Research_Institutions_RootCA_2011.pem
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0xfdf78ff0, pid=25779, tid=0xf6756470
#
# JRE version: OpenJDK Runtime Environment (8.0_181-b13) (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
# Java VM: OpenJDK Client VM (25.181-b13 mixed mode linux-aarch32 )
# Problematic frame:
# V  [libjvm.so+0x2fbff0]
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# //hs_err_pid25779.log
Compiled method (c1)    1098   68             java.lang.Character::digit (6 bytes)
 total in heap  [0xfb8ce308,0xfb8ce568] = 608
 relocation     [0xfb8ce3d4,0xfb8ce3fc] = 40
 main code      [0xfb8ce400,0xfb8ce480] = 128
 stub code      [0xfb8ce480,0xfb8ce4e4] = 100
 metadata       [0xfb8ce4e4,0xfb8ce4f4] = 16
 scopes data    [0xfb8ce4f4,0xfb8ce524] = 48
 scopes pcs     [0xfb8ce524,0xfb8ce564] = 64
 dependencies   [0xfb8ce564,0xfb8ce568] = 4
Compiled method (c1)    1099   68             java.lang.Character::digit (6 bytes)
 total in heap  [0xfb8ce308,0xfb8ce568] = 608
 relocation     [0xfb8ce3d4,0xfb8ce3fc] = 40
 main code      [0xfb8ce400,0xfb8ce480] = 128
 stub code      [0xfb8ce480,0xfb8ce4e4] = 100
 metadata       [0xfb8ce4e4,0xfb8ce4f4] = 16
 scopes data    [0xfb8ce4f4,0xfb8ce524] = 48
 scopes pcs     [0xfb8ce524,0xfb8ce564] = 64
 dependencies   [0xfb8ce564,0xfb8ce568] = 4
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#
qemu: uncaught target signal 6 (Aborted) - core dumped
/var/lib/dpkg/info/ca-certificates-java.postinst: line 43: 25776 Done                    find /etc/ssl/certs -name \*.pem
     25777 Broken pipe             | while read filename; do
    alias=$(basename $filename .pem | tr A-Z a-z | tr -cs a-z0-9 _); alias=${alias%*_}; if [ -n "$FIXOLD" ]; then
        echo "-${alias}"; echo "-${alias}_pem";
    fi; echo "+${filename}";
done
     25779 Aborted                 | java -Xmx64m -jar $JAR -storepass "$storepass"
dpkg: error processing package ca-certificates-java (--configure):
 subprocess installed post-installation script returned error exit status 134
Setting up default-jre-headless (2:1.8-58) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...
Processing triggers for ca-certificates (20161130+nmu1+deb9u1) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
done.
Errors were encountered while processing:
 ca-certificates-java
E: Sub-process /usr/bin/dpkg returned an error code (1)
Failed to install
Makefile:20: recipe for target 'vero3' failed
make: *** [vero3] Error 1
make: Leaving directory '/mnt/package/mediacenter-osmc'
Makefile:20: recipe for target 'vero3' failed
make: *** [vero3] Error 2

Thank you for your help.
Bye

Not sure on that. Sounds like a bug. Do you have enough memory?
Have you tried compiling on the Vero3?

I’ve never done a vero build on the PC before.

chroot and run apt-get -f install and it will fix it

Hi Sam,

thank you for your help.

Here the log:

:~/osmc/toolchains$ sudo chroot /opt/osmc-tc/armv7-toolchain-osmc/
:/# sudo env LC_ALL=C apt-get -f install
Unknown host QEMU_IFLA type: 47
Unknown host QEMU_IFLA type: 48
Unknown host QEMU_IFLA type: 43
Unknown host QEMU_IFLA type: 47
Unknown host QEMU_IFLA type: 48
Unknown host QEMU_IFLA type: 43
Reading package lists… Done
Building dependency tree
Reading state information… Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
E: Can not write log (Is /dev/pts mounted?) - posix_openpt (19: No such device)
Setting up ca-certificates-java (20170531+nmu1) …
the keytool command requires a mounted proc fs (/proc).
dpkg: error processing package ca-certificates-java (–configure):
subprocess installed post-installation script returned error exit status 1
Processing triggers for ca-certificates (20161130+nmu1+deb9u1) …
Updating certificates in /etc/ssl/certs…
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d…

the keytool command requires a mounted proc fs (/proc).
E: /etc/ca-certificates/update.d/jks-keystore exited with code 1.
done.
Errors were encountered while processing:
ca-certificates-java
E: Sub-process /usr/bin/dpkg returned an error code (1)

Note, I set the env because of a warning returned by perl. However I don’t think that is the cause of the ca-certificates-java error.

Thank you again for the support.
Bye

Hi,

Build Kodi and kernel natively to avoid problems.
That’s what we do for speed. You can work around it by updating QEMU

Sam

Hi Sam,

thanks for your response.
I don’t have a vero4(+), I’d like to do the OSMC porting for my S905x device.
Thanks.
Bye

Then bring up rootfs first and do it package by package

Sam

Hi Sam,

thanks again.
If I run Armbian on the S905x device and, from there, build the OSMC, do you think that it would work?
Thanks.
Bye.

OSMC is a complete OS so you can’t run some of the packages; you need the whole OS.