Calico: Port calico to a new platform--mips64el

Created on 8 Nov 2016  Â·  5Comments  Â·  Source: projectcalico/calico

@djosborne
Hi djosborne, I wanna port calico to mips64el platform. But when installing github-pages, I got the following error.

Build command from README.md file

Building Method

The docs require jekyll, a ruby gem. Install the github-pages gem which includes
jekyll to ensure you are using the exact version of jekyll that github pages
is using to serve the live site.

gem install github-pages
jekyll serve -I

Build result

[root@dscn2 calico]# jekyll serve -I
Configuration file: /usr/local/calico/_config.yml
Configuration file: /usr/local/calico/_config.yml
            Source: /usr/local/calico
       Destination: /usr/local/calico/_site
 Incremental build: enabled
      Generating...
                    done in 265.943 seconds.
 Auto-regeneration: enabled for '/usr/local/calico'
Configuration file: /usr/local/calico/_config.yml
    Server address: http://127.0.0.1:4000/
  Server running... press ctrl-c to stop.

Platfrom info

[root@dscn2 calico]# uname -a
Linux dscn2 4.4.21+ #3 SMP PREEMPT Wed Oct 12 09:14:23 CST 2016 mips64 mips64 mips64 GNU/Linux
[root@dscn2 calico]# cat /etc/issue
Fedora release 21 (Twenty One)
Kernel \r on an \m (\l)

[root@dscn2 calico]# ruby -v
ruby 2.1.4p265 (2014-10-27 revision 48166) [mips64el-linux]
[root@dscn2 calico]# gem -v
2.2.2
[root@dscn2 calico]# gcc -v
......  ...... 
gcc version 4.9.3 20150626 (Red Hat 4.9.3-3) (GCC)

some confusions

I can not find a file named calico whose architecture is mips64el.

[root@dscn2 calico]# pwd
/usr/local/calico
[root@dscn2 calico]# find . -type d -name bin
./v1.5/getting-started/mesos/demos/cni/cni/bin
./v1.6/getting-started/mesos/demos/cni/cni/bin
./_site/v1.5/getting-started/mesos/demos/cni/cni/bin
./_site/v1.6/getting-started/mesos/demos/cni/cni/bin
[root@dscn2 calico]# cd ./_site/v1.5/getting-started/mesos/demos/cni/cni/bin
[root@dscn2 bin]# ls
calico  calico-ipam
[root@dscn2 bin]# file calico-ipam
calico-ipam: ELF 64-bit LSB executable, ### x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=00747fe5bcde089bb4c2f1ba7ab5348bc02ac5bf, stripped
[root@dscn2 bin]# file calico
calico: ELF 64-bit LSB executable, ### x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=00747fe5bcde089bb4c2f1ba7ab5348bc02ac5bf, stripped

Why

the files calico and calico-ipam are "x86_64" architecture, but I notice the following content and see the docs site on my PC(mips64el) indeed.
As the output states, docs should then be viewable at http://localhost:4000/

Could

you tell my build for calico is successful or not, why? My calico source code is from github. https://github.com/projectcalico/calico

Most helpful comment

The make binary step will need a populated vendor/ directory to build the golang binary. That seems to be failing. As per the output:

# To build without Docker just run "glide install -strip-vendor"

All 5 comments

Hey @vans88 I think you're in the wrong repository!

This repository is for documentation and demos.

If you are trying to build calico components, you'll need to locate the correct repository.

Our Repo Structure Document is not in great shape, so reply here with what you are trying to build and I can assist further.

yep, @djosborne Many thanks for you reply. I need to build calico compontens on my mips64el platform, such as calicoctl,calico,calico-ipam and your suggestions is very useful for me.
This afternoon, I cloned the project https://github.com/projectcalico/calico-cni and ran the command "make binary". The following error was occurred.

Error info

[root@dscn2 calico-cni]# pwd
/usr/local/calico-cni
[root@dscn2 calico-cni]# make binary
# To build without Docker just run "glide install -strip-vendor"
if [ "none" != "none" ]; then \
          EXTRA_DOCKER_BIND="-v none:/go/src/github.com/projectcalico/libcalico-go:ro"; \
fi; \
docker run --rm -v /usr/local/calico-cni:/go/src/github.com/projectcalico/calico-cni:rw $EXTRA_DOCKER_BIND \
      --entrypoint /bin/sh dockerepo/glide -e -c ' \
cd /go/src/github.com/projectcalico/calico-cni && \
glide install -strip-vendor && \
chown 0:0 -R vendor'
FATA[0002] Error response from daemon: Cannot start container f99c9ee27a42d27b85afab2e9e03560b2940d2ccc70ed29d49a2de4eeb7a67e9: [8] System error: mountpoint for devices not found
Makefile:36: recipe for target 'vendor' failed
make: *** [vendor] Error 1

docker info

[root@dscn2 calico-cni]# docker version
Client version: 1.6.0
Client API version: 1.18
Go version (client): go1.4.2 gccgo (GCC) 5.2.0 20150716 (Red Hat 5.2.0-5)
Git commit (client): 9d26a07/1.6.0
OS/Arch (client): linux/mipsn64
Server version: 1.6.0
Server API version: 1.18
Go version (server): go1.4.2 gccgo (GCC) 5.2.0 20150716 (Red Hat 5.2.0-5)
Git commit (server): 9d26a07/1.6.0
OS/Arch (server): linux/mipsn64
[root@dscn2 calico-cni]# docker info
Containers: 19
Images: 46
Storage Driver: devicemapper
 Pool Name: docker-8:2-2097581-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: extfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 1.637 GB
 Data Space Total: 107.4 GB
 Data Space Available: 105.7 GB
 Metadata Space Used: 3.101 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.144 GB
 Udev Sync Supported: true
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.90 (2014-09-01)
Execution Driver: native-0.2
Kernel Version: 4.4.21+
Operating System: Fedora 21 (Twenty One)
CPUs: 15
Total Memory: 7.814 GiB
Name: dscn2
ID: HTUW:UGJ4:D4QB:CROO:X5LJ:DFGF:RFKX:XS4Q:SBU3:SQXR:G345:6AR7
Username: vans88
Registry: [https://index.docker.io/v1/]

CPU info

[root@dscn2 calico-cni]# lscpu
Architecture:          mips64
Byte Order:            Little Endian
CPU(s):                15
On-line CPU(s) list:   0-14
Thread(s) per core:    1
Core(s) per socket:    7
Socket(s):             2
NUMA node(s):          4
Model name:            ICT Loongson-3B R2 (Loongson-3B1500) @ 1100MHz
NUMA node0 CPU(s):     0-2
NUMA node1 CPU(s):     3-6
NUMA node2 CPU(s):     7-10
NUMA node3 CPU(s):     11-14

CGroup info

[root@dscn2 calico-cni]# rpm -qa | grep cgroup
libcgroup-pam-0.41-6.fc21.loongson.mips64el
libcgroup-tools-0.41-6.fc21.loongson.mips64el
libcgroup-0.41-6.fc21.loongson.mips64el
libcgroup-devel-0.41-6.fc21.loongson.mips64el
[root@dscn2 calico-cni]# mount -t cgroup
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu type cgroup (rw,nosuid,nodev,noexec,relatime,cpu)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
[root@dscn2 calico-cni]# ls /sys/fs/cgroup/
blkio  cpu  cpuset  memory  net_cls  net_cls,net_prio  net_prio  systemd

googling

Through googling with keywords "mountpoint for devices not found", there are many links about CGroups. one link point to project "https://github.com/tianon/cgroupfs-mount", but when I read its "README.md" file, I got the following content:

[root@dscn2 cgroupfs-mount]# pwd
/usr/local/cgroupfs-mount
## Do I need this?
If you're using `systemd` as your init system, you do not need this, as
`systemd` will already configure and manage a properly mounted cgroup hierarchy.

what

if so, What should I do next?

The make binary step will need a populated vendor/ directory to build the golang binary. That seems to be failing. As per the output:

# To build without Docker just run "glide install -strip-vendor"

@vans88 Hoping that last message helped you through your build issues. I'm going to close out this issue. If you encounter issues in the future when building each artifact, please do your best to open an issue on the relevant repository, and someone should be able to assist you there further.

@djosborne Many thanks for your reply and very agree with your point.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

winromulus picture winromulus  Â·  3Comments

squat picture squat  Â·  5Comments

redbaron picture redbaron  Â·  3Comments

mindw picture mindw  Â·  4Comments

mohit5577 picture mohit5577  Â·  5Comments