Skip to content

Commit

Permalink
Merge branch 'develop' into bintray-repository-not-found
Browse files Browse the repository at this point in the history
  • Loading branch information
ds58 authored Nov 20, 2024
2 parents 199ac09 + 033c5e9 commit f5408d2
Show file tree
Hide file tree
Showing 28 changed files with 541 additions and 262 deletions.
16 changes: 16 additions & 0 deletions .github/workflows/gradle-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Gradle test

on:
workflow_dispatch:
push:
branches:
- develop
pull_request:

permissions:
checks: write
contents: read

jobs:
gradle-test:
uses: ihmcrobotics/ihmc-actions/.github/workflows/gradle-test.yml@main
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.8)
cmake_minimum_required(VERSION 3.5.1)
project(ihmcsoemwrapper)

add_subdirectory(swig)
70 changes: 0 additions & 70 deletions Dockerfile

This file was deleted.

72 changes: 72 additions & 0 deletions Dockerfile-arm64_cross
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Do not publish to dockerhub
FROM ubuntu:20.04

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get --yes update \
&& apt-get --yes install \
nano \
git \
wget \
curl \
unzip \
locales \
apt-transport-https \
ca-certificates \
curl \
software-properties-common \
sudo \
build-essential \
swig \
cmake \
openjdk-17-jdk \
gcc-aarch64-linux-gnu \
binutils-aarch64-linux-gnu \
g++-aarch64-linux-gnu \
&& rm -rf /var/lib/apt/lists/*

RUN locale-gen en_US.UTF-8
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV LC_ALL=en_US.UTF-8

ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ENV PATH=$PATH:$JAVA_HOME/bin

# Installing SOEM
WORKDIR /opt
RUN git clone https://github.com/OpenEtherCATsociety/SOEM.git
WORKDIR /opt/SOEM
RUN mkdir build && cd build
WORKDIR /opt/SOEM/build
RUN cmake -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \
-DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \
-DCMAKE_FIND_ROOT_PATH=/usr/aarch64-linux-gnu \
-DCMAKE_PROGRAM_PATH=/usr/aarch64-linux-gnu/bin \
-DHOST_INSTALL="" -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_POSITION_INDEPENDENT_CODE=true \
-DCMAKE_BUILD_TYPE=Release \
..
RUN make
RUN make install

# Setup a robotlab user as the development user, to avoid using root.
# Allows using sudo with robotlab user without a password.
RUN addgroup robotlab \
&& adduser --uid 1000 --gid 1000 --home /home/robotlab --disabled-password robotlab \
&& chown -R robotlab /home/robotlab \
&& adduser robotlab sudo \
&& echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
USER robotlab
WORKDIR /home/robotlab

RUN mkdir -p /home/robotlab/dev/ihmc-ethercat-master/build
RUN mkdir -p /home/robotlab/dev/ihmc-ethercat-master/src
RUN mkdir -p /home/robotlab/dev/ihmc-ethercat-master/swig
VOLUME /home/robotlab/dev/ihmc-ethercat-master/build
VOLUME /home/robotlab/dev/ihmc-ethercat-master/src
VOLUME /home/robotlab/dev/ihmc-ethercat-master/swig
WORKDIR /home/robotlab/dev/ihmc-ethercat-master

ENTRYPOINT ["/bin/bash"]
CMD ["build-arm64_cross.sh"]
62 changes: 62 additions & 0 deletions Dockerfile-x86_64
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Do not publish to dockerhub
FROM ubuntu:20.04

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get --yes update \
&& apt-get --yes install \
nano \
git \
wget \
curl \
unzip \
locales \
apt-transport-https \
ca-certificates \
curl \
software-properties-common \
sudo \
build-essential \
swig \
cmake \
openjdk-17-jdk \
&& rm -rf /var/lib/apt/lists/*

RUN locale-gen en_US.UTF-8
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV LC_ALL=en_US.UTF-8

ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ENV PATH=$PATH:$JAVA_HOME/bin

# Installing SOEM
WORKDIR /opt
RUN git clone https://github.com/OpenEtherCATsociety/SOEM.git
WORKDIR /opt/SOEM
RUN mkdir build && cd build
WORKDIR /opt/SOEM/build
RUN cmake -DHOST_INSTALL="" -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_POSITION_INDEPENDENT_CODE=true -DCMAKE_BUILD_TYPE=Release ..
RUN make
RUN make install

# Setup a robotlab user as the development user, to avoid using root.
# Allows using sudo with robotlab user without a password.
RUN addgroup robotlab \
&& adduser --uid 1000 --gid 1000 --home /home/robotlab --disabled-password robotlab \
&& chown -R robotlab /home/robotlab \
&& adduser robotlab sudo \
&& echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
USER robotlab
WORKDIR /home/robotlab

RUN mkdir -p /home/robotlab/dev/ihmc-ethercat-master/build
RUN mkdir -p /home/robotlab/dev/ihmc-ethercat-master/src
RUN mkdir -p /home/robotlab/dev/ihmc-ethercat-master/swig
VOLUME /home/robotlab/dev/ihmc-ethercat-master/build
VOLUME /home/robotlab/dev/ihmc-ethercat-master/src
VOLUME /home/robotlab/dev/ihmc-ethercat-master/swig
WORKDIR /home/robotlab/dev/ihmc-ethercat-master

ENTRYPOINT ["/bin/bash"]
CMD ["build-x86_64.sh"]
11 changes: 11 additions & 0 deletions build-arm64_cross.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/sh
export AARCH64_CROSS=1

# Build for arm64
mkdir -p build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../linux-aarch64-toolchain.cmake ..
make
../gradlew publishToMavenLocal -Ptarget=JAVA
../gradlew publishToMavenLocal -Ptarget=PLATFORM
cd ..
12 changes: 4 additions & 8 deletions build.sh → build-x86_64.sh
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
#!/bin/bash
# Uncomment for debugging this script
set -o xtrace

#!/bin/sh
# Build for native platform (probably x86_64)
mkdir -p build
cd build

cmake -DCMAKE_BUILD_TYPE=Release ..
make

pwd
ls ..
../gradlew publishToMavenLocal -Ptarget=JAVA
../gradlew publishToMavenLocal -Ptarget=PLATFORM
cd ..
13 changes: 6 additions & 7 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
plugins {
id("us.ihmc.ihmc-build")
id("us.ihmc.log-tools-plugin") version "0.6.3"
id("us.ihmc.ihmc-ci") version "8.3"
id("us.ihmc.ihmc-cd") version "1.26"
id("us.ihmc.log-tools-plugin") version "0.6.4"
}

ihmc {
group = "us.ihmc"
version = "0.14.0"
version = "0.15.0"
vcsUrl = "https://github.com/ihmcrobotics/ihmc-ethercat-master"
openSource = true

Expand All @@ -19,9 +17,10 @@ ihmc {
app.entrypoint("SlaveInfo", "us.ihmc.etherCAT.master.SlaveInfo")

mainDependencies {
api("us.ihmc:soem:1.4.0-ihmc1")
api("us.ihmc:soem-platform-linux:1.4.0-ihmc1")
api("us.ihmc:ihmc-native-library-loader:2.0.2")
api("us.ihmc:soem:1.5.0")
api("us.ihmc:soem-platform-linux-x86_64:1.5.0")
api("us.ihmc:soem-platform-linux-arm64:1.5.0")
api("us.ihmc:ihmc-native-library-loader:2.0.3")
api("us.ihmc:ihmc-realtime:1.6.0")
}

3 changes: 3 additions & 0 deletions buildDockerImages.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/sh
docker build -f Dockerfile-x86_64 -t ihmcrobotics/soem-compile-x86_64:0.1 .
docker build -f Dockerfile-arm64_cross -t ihmcrobotics/soem-compile-arm64_cross:0.1 .
75 changes: 45 additions & 30 deletions buildWithDocker.sh
Original file line number Diff line number Diff line change
@@ -1,34 +1,49 @@
#!/bin/bash
# Uncomment for debugging this script
set -o xtrace
#!/bin/sh
rm -rf buildDocker
mkdir -p buildDocker

# Make sure it works one way or the other to reduce possible errors
if (( EUID == 0 )); then
echo "Run without sudo." 1>&2
exit 1
fi
echo "Building soemJava x86_64"
sudo docker run \
--rm \
--tty \
--interactive \
--network host \
--dns=1.1.1.1 \
--volume "$(pwd)/buildDocker":/home/robotlab/dev/ihmc-ethercat-master/build \
--volume "$(pwd)/src":/home/robotlab/dev/ihmc-ethercat-master/src \
--volume "$(pwd)/swig":/home/robotlab/dev/ihmc-ethercat-master/swig \
--volume "$(pwd)/build.gradle.kts":/home/robotlab/dev/ihmc-ethercat-master/build.gradle.kts \
--volume "$(pwd)/gradle.properties":/home/robotlab/dev/ihmc-ethercat-master/gradle.properties \
--volume "$(pwd)/settings.gradle.kts":/home/robotlab/dev/ihmc-ethercat-master/settings.gradle.kts \
--volume "$(pwd)/CMakeLists.txt":/home/robotlab/dev/ihmc-ethercat-master/CMakeLists.txt \
--volume "$(pwd)/build-x86_64.sh":/home/robotlab/dev/ihmc-ethercat-master/build-x86_64.sh \
--volume "$(pwd)/gradlew":/home/robotlab/dev/ihmc-ethercat-master/gradlew \
--volume "$(pwd)/gradle/wrapper":/home/robotlab/dev/ihmc-ethercat-master/gradle/wrapper \
--volume "$HOME/.m2":/home/robotlab/.m2 \
ihmcrobotics/soem-compile-x86_64:0.1

sleep 1
rm -rf buildDocker
mkdir -p buildDocker
sleep 1

if [ ! "$(sudo -u root docker ps -a | grep ethercat-master)" ]; then
echo "ethercat-master not found. Running new container."
sudo -u root docker run \
--tty \
--interactive \
--name ethercat-master \
--network host \
--dns=1.1.1.1 \
--volume "$(pwd)/buildDocker":/home/robotlab/dev/ihmc-ethercat-master/build \
--volume "$(pwd)/src":/home/robotlab/dev/ihmc-ethercat-master/src \
--volume "$(pwd)/swig":/home/robotlab/dev/ihmc-ethercat-master/swig \
--volume "$(pwd)/build.gradle.kts":/home/robotlab/dev/ihmc-ethercat-master/build.gradle.kts \
--volume "$(pwd)/gradle.properties":/home/robotlab/dev/ihmc-ethercat-master/gradle.properties \
--volume "$(pwd)/settings.gradle.kts":/home/robotlab/dev/ihmc-ethercat-master/settings.gradle.kts \
--volume "$(pwd)/CMakeLists.txt":/home/robotlab/dev/ihmc-ethercat-master/CMakeLists.txt \
--volume "$(pwd)/build.sh":/home/robotlab/dev/ihmc-ethercat-master/build.sh \
--volume "$(pwd)/gradlew":/home/robotlab/dev/ihmc-ethercat-master/gradlew \
--volume "$(pwd)/gradle/wrapper":/home/robotlab/dev/ihmc-ethercat-master/gradle/wrapper \
ihmcrobotics/ethercat-master:0.2
else
sudo -u root docker start --attach ethercat-master
fi
echo "Building soemJava arm64 (cross compiling)"
sudo docker run \
--rm \
--tty \
--interactive \
--network host \
--dns=1.1.1.1 \
--volume "$(pwd)/buildDocker":/home/robotlab/dev/ihmc-ethercat-master/build \
--volume "$(pwd)/src":/home/robotlab/dev/ihmc-ethercat-master/src \
--volume "$(pwd)/swig":/home/robotlab/dev/ihmc-ethercat-master/swig \
--volume "$(pwd)/build.gradle.kts":/home/robotlab/dev/ihmc-ethercat-master/build.gradle.kts \
--volume "$(pwd)/gradle.properties":/home/robotlab/dev/ihmc-ethercat-master/gradle.properties \
--volume "$(pwd)/settings.gradle.kts":/home/robotlab/dev/ihmc-ethercat-master/settings.gradle.kts \
--volume "$(pwd)/CMakeLists.txt":/home/robotlab/dev/ihmc-ethercat-master/CMakeLists.txt \
--volume "$(pwd)/linux-aarch64-toolchain.cmake":/home/robotlab/dev/ihmc-ethercat-master/linux-aarch64-toolchain.cmake \
--volume "$(pwd)/build-arm64_cross.sh":/home/robotlab/dev/ihmc-ethercat-master/build-arm64_cross.sh \
--volume "$(pwd)/gradlew":/home/robotlab/dev/ihmc-ethercat-master/gradlew \
--volume "$(pwd)/gradle/wrapper":/home/robotlab/dev/ihmc-ethercat-master/gradle/wrapper \
--volume "$HOME/.m2":/home/robotlab/.m2 \
ihmcrobotics/soem-compile-arm64_cross:0.1
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
4 changes: 3 additions & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading

0 comments on commit f5408d2

Please sign in to comment.