Skip to content

Commit

Permalink
Use default-jdk instead of openjdk-8-jdk when packaging
Browse files Browse the repository at this point in the history
  • Loading branch information
Jamie Snape committed Jul 22, 2019
1 parent fb0aa33 commit f7b1889
Show file tree
Hide file tree
Showing 9 changed files with 79 additions and 51 deletions.
2 changes: 1 addition & 1 deletion cmake/cpack.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ set(CPACK_DEBIAN_PACKAGE_NAME ${CMAKE_PROJECT_NAME})
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${MACHINE_ARCH})
set(CPACK_DEBIAN_PACKAGE_RELEASE ${PACKAGE_RELEASE_VERSION})
set(CPACK_DEBIAN_PACKAGE_DEPENDS "lcm (>=1.3.95), freeglut3, ${CPACK_OPENGL} libc6, libgcc1, libglib2.0-0, libglu1-mesa, libgtk2.0-0, libice6, libjpeg8, libpng${CPACK_LIBPNG_VERSION}, libsm6, libstdc++6, libx11-6, libxau6, libxcb1, libxdmcp6, libxext6, libxmu6, libxt6, openjdk-8-jre, python, python-gtk2, python-numpy, python-scipy, zlib1g")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "lcm (>=1.4.0), default-jre | java8-runtime, freeglut3, ${CPACK_OPENGL} libc6, libgcc1, libglib2.0-0, libglu1-mesa, libgtk2.0-0, libice6, libjpeg8, libpng${CPACK_LIBPNG_VERSION}, libsm6, libstdc++6, libx11-6, libxau6, libxcb1, libxdmcp6, libxext6, libxmu6, libxt6, python, python-gtk2, python-numpy, python-scipy, zlib1g")
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/RobotLocomotion/libbot2")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Francois Budin <francois.budin@kitware.com>")

Expand Down
19 changes: 8 additions & 11 deletions scripts/package/linux/ubuntu/bionic/package
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,20 @@ set -euxo pipefail

readonly timestamp=$(date -u +%Y%m%d)

export CPACK_LIBPNG_VERSION=16-16
export PACKAGE_OPENGL=TRUE
rm -f lcm_1.4.0-1_amd64.deb libbot2_0.0.1.*-1_amd64.deb

docker build -t libbot2-bionic-prereqs $(git rev-parse --show-toplevel)/scripts/setup/linux/ubuntu/bionic/
docker run -t -d --name libbot2-bionic -e CPACK_LIBPNG_VERSION=${CPACK_LIBPNG_VERSION} -e PACKAGE_OPENGL=${PACKAGE_OPENGL} libbot2-bionic-prereqs
docker build --tag libbot2-bionic-prereqs $(git rev-parse --show-toplevel)/scripts/setup/linux/ubuntu/bionic/
docker run --detach --name libbot2-bionic --env CPACK_LIBPNG_VERSION=16-16 --env PACKAGE_OPENGL=TRUE --tty libbot2-bionic-prereqs
trap 'docker stop libbot2-bionic && docker rm libbot2-bionic' EXIT
docker cp $(git rev-parse --show-toplevel) libbot2-bionic:/tmp/libbot2
docker exec libbot2-bionic /tmp/libbot2/scripts/package/linux/ubuntu/common/build.sh ${timestamp}
docker cp libbot2-bionic:/tmp/lcm_1.3.95.${timestamp}-1_amd64.deb .
docker cp libbot2-bionic:/tmp/lcm_1.4.0-1_amd64.deb .
docker cp libbot2-bionic:/tmp/libbot2_0.0.1.${timestamp}-1_amd64.deb .
docker stop libbot2-bionic
docker rm libbot2-bionic

# Test package
docker run -t -d --name libbot2-bionic-test ubuntu:18.04
docker cp lcm_1.3.95.${timestamp}-1_amd64.deb libbot2-bionic-test:/tmp
docker run --detach --name libbot2-bionic-test --tty ubuntu:18.04
trap 'docker stop libbot2-bionic libbot2-bionic-test && docker rm libbot2-bionic libbot2-bionic-test' EXIT
docker cp lcm_1.4.0-1_amd64.deb libbot2-bionic-test:/tmp
docker cp libbot2_0.0.1.${timestamp}-1_amd64.deb libbot2-bionic-test:/tmp
docker cp $(git rev-parse --show-toplevel) libbot2-bionic-test:/tmp/libbot2
docker exec libbot2-bionic-test /tmp/libbot2/scripts/package/linux/ubuntu/common/test.sh ${timestamp}
docker stop libbot2-bionic-test
docker rm libbot2-bionic-test
45 changes: 33 additions & 12 deletions scripts/package/linux/ubuntu/common/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,36 +17,57 @@ fi
pushd /tmp
# LCM is built and package as part of this process as there is no
# official LCM package.
git clone https://github.com/lcm-proj/lcm
git clone --branch v1.4.0 --config advice.detachedHead=false --depth 1 https://github.com/lcm-proj/lcm.git

pushd lcm
cat << 'EOF' > lcm-cmake.patch
diff --git a/lcm-cmake/cpack.cmake b/lcm-cmake/cpack.cmake
index 253ab64..52ec648 100644
--- a/lcm-cmake/cpack.cmake
+++ b/lcm-cmake/cpack.cmake
@@ -63,5 +63,5 @@ set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/lcm-proj/lcm")
set(CPACK_DEBIAN_PACKAGE_SECTION "devel")
-set(CPACK_DEBIAN_PACKAGE_DEPENDS "libglib2.0-0, libpcre3")
+set(CPACK_DEBIAN_PACKAGE_DEPENDS "default-jre | java8-runtime, libc6, libgcc1, libglib2.0-0, libpcre3, libstdc++6, python")
message(STATUS "CPack: Packages will be placed under ${CPACK_PACKAGE_DIRECTORY}")
EOF
git apply lcm-cmake.patch
rm -f lcm-cmake.patch
popd

mkdir lcm-build
pushd lcm-build

# Forces the package to be installed in /opt/lcm/<version>
# to be consistent with the fact these packages are not "official".
cmake -DBUILD_SHARED_LIBS:BOOL=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_CXX_FLAGS:STRING="$(dpkg-buildflags --get CXXFLAGS) $(dpkg-buildflags --get CPPFLAGS)" \
-DCMAKE_C_FLAGS:STRING="$(dpkg-buildflags --get CFLAGS) $(dpkg-buildflags --get CPPFLAGS)" \
-DCMAKE_SHARED_LINKER_FLAGS:STRING="$(dpkg-buildflags --get LDFLAGS)" \
-DCPACK_DEBIAN_PACKAGE_VERSION="1.3.95.${timestamp}" \
-DCPACK_DEBIAN_PACKAGE_MAINTAINER="Francois Budin <francois.budin@kitware.com>" \
-DCPACK_PACKAGING_INSTALL_PREFIX="/opt/lcm/1.3.95.${timestamp}" \
-DCMAKE_C_FLAGS=-Wl,-rpath,\$ORIGIN/../lib \
-DCMAKE_CXX_FLAGS=-Wl,-rpath,\$ORIGIN/../lib \
-DCMAKE_INSTALL_PREFIX="/opt/lcm/1.3.95.${timestamp}" \
-DCPACK_DEBIAN_PACKAGE_VERSION:STRING=1.4.0 \
-DCPACK_DEBIAN_PACKAGE_MAINTAINER:STRING="Kitware <kitware@kitware.com>" \
-DCPACK_PACKAGING_INSTALL_PREFIX:PATH=/opt/lcm/1.4.0 \
-DCMAKE_C_FLAGS:STRING=-Wl,-rpath,\$ORIGIN/../lib \
-DCMAKE_CXX_FLAGS:STRING=-Wl,-rpath,\$ORIGIN/../lib \
-DCMAKE_INSTALL_PREFIX:PATH=/opt/lcm/1.4.0 \
-DLCM_ENABLE_EXAMPLES:BOOL=OFF \
-DLCM_ENABLE_TESTS:BOOL=OFF \
../lcm
make
cpack -G DEB
popd
mv lcm-build/packages/lcm_1.3.95.${timestamp}-1_amd64.deb lcm_1.3.95.${timestamp}-1_amd64.deb
mv lcm-build/packages/lcm_1.4.0-1_amd64.deb lcm_1.4.0-1_amd64.deb
rm -rf lcm-build

# Install the package instead of running `make install`. This
# ensures that LCM is installed in the same location when libbot2
# is built and its package is installed. This is necessary because
# some scripts such as `bot-spy` rely on `lcm-spy` and its path
# is hardcoded at compile time.
dpkg -i lcm_1.3.95.${timestamp}-1_amd64.deb
dpkg -i lcm_1.4.0-1_amd64.deb

# Check if package versions are specified in environment variable
LIBPNG_VERSION=""
Expand All @@ -61,10 +82,10 @@ fi
mkdir libbot2-build
pushd libbot2-build
cmake -DPACKAGE_LIBBOT2:BOOL=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_CXX_FLAGS:STRING="$(dpkg-buildflags --get CXXFLAGS) $(dpkg-buildflags --get CPPFLAGS)" \
-DCMAKE_C_FLAGS:STRING="$(dpkg-buildflags --get CFLAGS) $(dpkg-buildflags --get CPPFLAGS)" \
-DCMAKE_PREFIX_PATH="/opt/lcm/1.3.95.${timestamp}" \
-DCMAKE_PREFIX_PATH:PATH=/opt/lcm/1.4.0 \
-DCMAKE_SHARED_LINKER_FLAGS:STRING="$(dpkg-buildflags --get LDFLAGS)" \
$LIBPNG_VERSION \
$CMAKE_PACKAGE_OPENGL \
Expand Down
7 changes: 4 additions & 3 deletions scripts/package/linux/ubuntu/common/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ pushd /tmp
# installs packages
apt-get update -y
apt-get install gdebi -y
gdebi -n lcm_1.3.95.${timestamp}-1_amd64.deb
gdebi -n lcm_1.4.0-1_amd64.deb
gdebi -n libbot2_0.0.1.${timestamp}-1_amd64.deb
# Check that files are installed
executables=(bot-wavefront-viewer bot-spy bot-rwx-viewer bot-procman-sheriff bot-procman-deputy bot-ppmsgz bot-param-tool bot-param-server bot-param-dump bot-log2mat bot-lcm-who bot-lcm-tunnel bot-lcm-logsplice bot-lcm-logfilter bot-lcmgl-viewer)
Expand All @@ -30,6 +30,7 @@ missing_libraries() {
fi
}

export PATH=${PATH}:/opt/libbot2/0.0.1.${timestamp}/bin
for ex in ${executables[@]}
do
if [[ -z $ex ]]
Expand All @@ -39,7 +40,7 @@ do
# We cannot simply run each executable as some require inputs that we
# don't have, so we simply check that they have all their dependencies
# fulfilled.
if [[ $(file $(which $ex) |grep -c "ELF 64-bit LSB executable, x86-64") == 1 ]]
if [[ $(file $(which $ex) | grep -c "ELF 64-bit LSB .*, x86-64") == 1 ]]
then
# Test that executables find all their dependencies
missing_libraries $(which $ex)
Expand All @@ -53,7 +54,7 @@ do
missing_libraries $i
done
# Test python modules
export PYTHONPATH=${PYTHONPATH:+$PYTHONPATH:}/opt/libbot2/0.0.1.${timestamp}/lib/python2.7/dist-packages:/opt/lcm/1.3.95.${timestamp}/lib/python2.7/dist-packages
export PYTHONPATH=${PYTHONPATH:+$PYTHONPATH:}/opt/libbot2/0.0.1.${timestamp}/lib/python2.7/dist-packages:/opt/lcm/1.4.0/lib/python2.7/dist-packages
python_modules=(lcm bot_procman bot_param bot_log2mat bot_lcmgl bot_frames bot_core)
for i in ${python_modules[@]}
do
Expand Down
18 changes: 9 additions & 9 deletions scripts/package/linux/ubuntu/xenial/package
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,20 @@ set -euxo pipefail

readonly timestamp=$(date -u +%Y%m%d)

docker build -t libbot2-xenial-prereqs $(git rev-parse --show-toplevel)/scripts/setup/linux/ubuntu/xenial/
docker run -t -d --name libbot2-xenial libbot2-xenial-prereqs
rm -f lcm_1.4.0-1_amd64.deb libbot2_0.0.1.*-1_amd64.deb

docker build --tag libbot2-xenial-prereqs $(git rev-parse --show-toplevel)/scripts/setup/linux/ubuntu/xenial/
docker run --detach --name libbot2-xenial --tty libbot2-xenial-prereqs
trap 'docker stop libbot2-xenial && docker rm libbot2-xenial' EXIT
docker cp $(git rev-parse --show-toplevel) libbot2-xenial:/tmp/libbot2
docker exec libbot2-xenial /tmp/libbot2/scripts/package/linux/ubuntu/common/build.sh ${timestamp}
docker cp libbot2-xenial:/tmp/lcm_1.3.95.${timestamp}-1_amd64.deb .
docker cp libbot2-xenial:/tmp/lcm_1.4.0-1_amd64.deb .
docker cp libbot2-xenial:/tmp/libbot2_0.0.1.${timestamp}-1_amd64.deb .
docker stop libbot2-xenial
docker rm libbot2-xenial

# Test package
docker run -t -d --name libbot2-xenial-test ubuntu:16.04
docker cp lcm_1.3.95.${timestamp}-1_amd64.deb libbot2-xenial-test:/tmp
docker run --detach --name libbot2-xenial-test --tty ubuntu:16.04
trap 'docker stop libbot2-xenial libbot2-xenial-test && docker rm libbot2-xenial libbot2-xenial-test' EXIT
docker cp lcm_1.4.0-1_amd64.deb libbot2-xenial-test:/tmp
docker cp libbot2_0.0.1.${timestamp}-1_amd64.deb libbot2-xenial-test:/tmp
docker cp $(git rev-parse --show-toplevel) libbot2-xenial-test:/tmp/libbot2
docker exec libbot2-xenial-test /tmp/libbot2/scripts/package/linux/ubuntu/common/test.sh ${timestamp}
docker stop libbot2-xenial-test
docker rm libbot2-xenial-test
1 change: 1 addition & 0 deletions scripts/setup/linux/ubuntu/bionic/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

FROM ubuntu:18.04
COPY ./install_prereqs /tmp/install_prereqs
ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1
ARG DEBIAN_FRONTEND=noninteractive
RUN yes | /tmp/install_prereqs \
&& rm -rf /var/lib/apt/lists/* \
Expand Down
17 changes: 11 additions & 6 deletions scripts/setup/linux/ubuntu/bionic/install_prereqs
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,20 @@ if [[ "$(lsb_release -sc)" != 'bionic' ]]; then
fi

apt-get install --no-install-recommends \
cmake \
apt-transport-https \
build-essential \
ca-certificates \
default-jdk \
doxygen \
dpkg-dev \
file \
freeglut3-dev \
g++ \
gcc \
git \
gnupg \
libglib2.0-dev \
libgtk2.0-dev \
libjpeg8-dev \
libpng-dev \
libxmu-dev \
make \
openjdk-8-jdk \
pkg-config \
python-dev \
python-gtk2 \
Expand All @@ -56,4 +55,10 @@ apt-get install --no-install-recommends \
python3-scipy \
zlib1g-dev

apt-key adv --fetch-keys https://apt.kitware.com/keys/kitware-archive-latest.asc
echo 'deb https://apt.kitware.com/ubuntu/ bionic main' | tee /etc/apt/sources.list.d/kitware.list

apt-get update -qq
apt-get install --no-install-recommends cmake

# TODO: Install a compatible version of LCM.
1 change: 1 addition & 0 deletions scripts/setup/linux/ubuntu/xenial/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

FROM ubuntu:16.04
COPY ./install_prereqs /tmp/install_prereqs
ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1
ARG DEBIAN_FRONTEND=noninteractive
RUN yes | /tmp/install_prereqs \
&& rm -rf /var/lib/apt/lists/* \
Expand Down
20 changes: 11 additions & 9 deletions scripts/setup/linux/ubuntu/xenial/install_prereqs
Original file line number Diff line number Diff line change
Expand Up @@ -31,20 +31,21 @@ if [[ "$(lsb_release -sc)" != 'xenial' ]]; then
fi

apt-get install --no-install-recommends \
apt-transport-https \
build-essential \
ca-certificates \
default-jdk \
doxygen \
dpkg-dev \
file \
freeglut3-dev \
g++ \
gcc \
git \
gnupg \
gnupg-curl \
libglib2.0-dev \
libgtk2.0-dev \
libjpeg8-dev \
libpng12-dev \
libxmu-dev \
make \
openjdk-8-jdk \
pkg-config \
python-dev \
python-gtk2 \
Expand All @@ -53,11 +54,12 @@ apt-get install --no-install-recommends \
python3-dev \
python3-numpy \
python3-scipy \
wget \
zlib1g-dev

wget https://cmake.org/files/v3.11/cmake-3.11.2-Linux-x86_64.sh && \
chmod +x cmake-3.11.2-Linux-x86_64.sh && \
./cmake-3.11.2-Linux-x86_64.sh --skip-license --prefix /
apt-key adv --fetch-keys https://apt.kitware.com/keys/kitware-archive-latest.asc
echo 'deb https://apt.kitware.com/ubuntu/ xenial main' | tee /etc/apt/sources.list.d/kitware.list

apt-get update -qq
apt-get install --no-install-recommends cmake

# TODO: Install a compatible version of LCM.

0 comments on commit f7b1889

Please sign in to comment.