Skip to content

Commit

Permalink
Remove Ubuntu 18.04 support (#754)
Browse files Browse the repository at this point in the history
  • Loading branch information
trey0 authored Nov 17, 2023
1 parent 30e3f71 commit 035e0e9
Show file tree
Hide file tree
Showing 17 changed files with 22 additions and 271 deletions.
16 changes: 0 additions & 16 deletions .github/workflows/ci_pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,6 @@ jobs:
run: ./scripts/docker/build.sh --xenial --remote
astrobee test_astrobee

build-bionic:

runs-on: ubuntu-20.04

steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Checkout submodule
run: git submodule update --init --depth 1 description/media

- name: Build, test
run: ./scripts/docker/build.sh --bionic --remote
astrobee test_astrobee

build-focal:

runs-on: ubuntu-20.04
Expand Down
36 changes: 0 additions & 36 deletions .github/workflows/ci_push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,42 +44,6 @@ jobs:
echo "$command";
eval "$command";
build-bionic:

runs-on: ubuntu-20.04

steps:
- uses: actions/checkout@v3

- name: Checkout submodule
run: git submodule update --init --depth 1 description/media

- name: Log in to registry
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.repository_owner }} --password-stdin

- name: Build, test, push docker
run: >
revision="latest";
build_arg="astrobee";
push_arg="";
branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}};
if [ "${{ github.repository_owner }}" == "nasa" ]; then
if [ $branch == "develop" ]; then
push_arg="push_astrobee";
fi;
if [ $branch == "master" ]; then
export VERSION=`grep -w -m 1 "Release" RELEASE.md | awk '{print $3}'`;
revision="v${VERSION}";
build_arg="astrobee_base astrobee";
push_arg="push_astrobee_base push_astrobee";
fi;
fi;
command="./scripts/docker/build.sh --bionic --remote --revision ${revision} \
--owner ${{ github.repository_owner }} \
${build_arg} test_astrobee ${push_arg}";
echo "$command";
eval "$command";
build-focal:

runs-on: ubuntu-20.04
Expand Down
18 changes: 0 additions & 18 deletions .github/workflows/docker_push_latest_base.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,6 @@ jobs:
--owner ${{ github.repository_owner }}
astrobee_base astrobee test_astrobee push_astrobee_base

build-bionic:

runs-on: ubuntu-20.04

steps:
- uses: actions/checkout@v3

- name: Checkout submodule
run: git submodule update --init --depth 1 description/media

- name: Log in to registry
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.repository_owner }} --password-stdin

- name: Build base, build, test, push base docker
run: ./scripts/docker/build.sh --bionic
--owner ${{ github.repository_owner }}
astrobee_base astrobee test_astrobee push_astrobee_base

build-focal:

runs-on: ubuntu-20.04
Expand Down
6 changes: 4 additions & 2 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@ Ubuntu 20.04 is the preferred host OS for most Astrobee developers to use.

Here are the available host OS options with development roadmap details (use 64-bit PC (AMD64) desktop image):
- [Ubuntu 20.04](http://releases.ubuntu.com/20.04): This is the preferred host OS for most Astrobee developers to use. The Astrobee Facility team is currently preparing to upgrade the robots on ISS from Ubuntu 16.04 to Ubuntu 20.04, but we aren't yet ready to announce a deployment date for that upgrade.
- [Ubuntu 18.04](http://releases.ubuntu.com/18.04): We are not aware of any current robot users that still need Ubuntu 18.04 support, and expect to discontinue support in the near future. New users should not select this host OS.
- [Ubuntu 16.04](http://releases.ubuntu.com/16.04): The Astrobee robot hardware on ISS currently runs Ubuntu 16.04. Only developers with NASA internal access can cross-compile software to run on the robot, and must use 16.04 for that. Most developers shouldn't need to work with 16.04, especially when just getting started. Support will eventually be discontinued after the robot hardware on ISS is upgraded to Ubuntu 20.04.
(Ubuntu 22.04 not supported)

Specifically not supported:
- ~~[Ubuntu 18.04](http://releases.ubuntu.com/18.04)~~: Ubuntu 18.04 support as a software development platform was discontinued as of November 2023. (It was never supported on the robot hardware.)
- ~~[Ubuntu 22.04](http://releases.ubuntu.com/22.04)~~: There is currently no plan for Ubuntu 22.04 support on the Astrobee roadmap. However, note that Astrobee ROS2 support, when it eventually becomes available, is currently expected to use the ROS2 Humble Hawksbill distribution that normally runs on 22.04, but backported to run on 20.04 (the last Ubuntu version supported by ROS1). This will facilitate migrating from ROS1 to ROS2 without requiring a simultaneous Ubuntu distribution upgrade.

Graphical interfaces will perform best if your host OS is running natively (not in a virtual machine).

Expand Down
2 changes: 1 addition & 1 deletion doc/general_documentation/code_style.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
\page astrobee-code-style Astrobee code style

The Astrobee code uses [cpplint](https://en.wikipedia.org/wiki/Cpplint) to enforce a consistent and uniform coding style. Code which fails this tool cannot be committed with Git. It is suggested that the [clang-format-8](https://launchpad.net/ubuntu/bionic/+package/clang-format-8) program be installed on your machine. The *git commit* command will invoke this tool which will fix most (but not all) of the formatting errors using as a guide the ``.clang-format`` style file at the base of the Astrobee repository.
The Astrobee code uses [cpplint](https://en.wikipedia.org/wiki/Cpplint) to enforce a consistent and uniform coding style. Code which fails this tool cannot be committed with Git. It is suggested that the [clang-format-8](https://launchpad.net/ubuntu/focal/+package/clang-format-8) program be installed on your machine. The *git commit* command will invoke this tool which will fix most (but not all) of the formatting errors using as a guide the ``.clang-format`` style file at the base of the Astrobee repository.
2 changes: 0 additions & 2 deletions scripts/configure.sh
Original file line number Diff line number Diff line change
Expand Up @@ -266,8 +266,6 @@ ff_path=`canonicalize ${rootpath}`
DIST=`cat /etc/os-release | grep -oP "(?<=VERSION_CODENAME=).*"`
if [ "$DIST" = "xenial" ]; then
ros_version=kinetic
elif [ "$DIST" = "bionic" ]; then
ros_version=melodic
elif [ "$DIST" = "focal" ]; then
ros_version=noetic
fi
Expand Down
13 changes: 3 additions & 10 deletions scripts/docker/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ usage: build.sh [-h] [-x] [-b] [-f] [-r] [-o <owner>] [-d]
-h or --help: Print this help
-x or --xenial: Build Ubuntu 16.04 docker images
-b or --bionic: Build Ubuntu 18.04 docker images
-f or --focal: Build Ubuntu 20.04 docker images
-r or --remote: Build first target on top of a pre-built remote image
-o or --owner: Set ghcr.io owner for push action (default: nasa)
Expand Down Expand Up @@ -55,8 +54,8 @@ usage()
# Parse options 1 (validate and normalize with getopt)
######################################################################

shortopts="h,x,b,f,r,o:,v:,d"
longopts="help,xenial,bionic,focal,remote,owner:,revision:,dry-run"
shortopts="h,x,f,r,o:,v:,d"
longopts="help,xenial,focal,remote,owner:,revision:,dry-run"
opts=$(getopt -a -n build.sh --options "$shortops" --longoptions "$longopts" -- "$@")
if [ $? -ne 0 ]; then
echo
Expand Down Expand Up @@ -91,8 +90,6 @@ while [ "$1" != "" ]; do
;;
--xenial ) os="xenial"
;;
--bionic ) os="bionic"
;;
--focal ) os="focal"
;;
--remote ) remote="true"
Expand Down Expand Up @@ -158,11 +155,7 @@ UBUNTU_VERSION=16.04
ROS_VERSION=kinetic
PYTHON=''

if [ "$os" = "bionic" ]; then
UBUNTU_VERSION=18.04
ROS_VERSION=melodic
PYTHON=''
elif [ "$os" = "focal" ]; then
if [ "$os" = "focal" ]; then
UBUNTU_VERSION=20.04
ROS_VERSION=noetic
PYTHON='3'
Expand Down
13 changes: 6 additions & 7 deletions scripts/docker/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ All pre-built remote images are available on [GitHub here](https://github.com/na

By default, the build script will automatically detect your host's Ubuntu OS version and configure the Docker image to use the same version using `Dockerfile` `ARGS`.
However, there is no requirement for the host OS and the Docker image OS to match. You can override the default and select a specific Docker image Ubuntu version by specifying `--xenial`, `--bionic`, or `--focal` for Ubuntu 16.04, 18.04, or 20.04 docker images, respectively.
However, there is no requirement for the host OS and the Docker image OS to match. You can override the default and select a specific Docker image Ubuntu version by specifying `--xenial` or `--focal` for Ubuntu 16.04 or 20.04 docker images, respectively.
For more information about all the build arguments:
Expand All @@ -161,14 +161,13 @@ For more information about all the build arguments:
The `build.sh` script normally manages these `Dockerfile` `ARGS` but you can set them yourself if you run `docker build` manually:
- `UBUNTU_VERSION` - The version of Ubuntu to use. Valid values are "16.04", "18.04", and "20.04".
- `UBUNTU_VERSION` - The version of Ubuntu to use. Valid values are "16.04" and "20.04".
- `ROS_VERSION` - The version of ROS to use. Valid values are "kinetic", "melodic", and "noetic".
- `PYTHON` - The version of Python to use. Valid values are "" (an empty string representing Python 2) and "3".
Constraints:
- If `UBUNTU_VERSION` is `"16.04"`, `ROS_VERSION` and `PYTHON` must be `"kinetic"` and `""` respectively.
- If `UBUNTU_VERSION` is `"18.04"`, `ROS_VERSION` and `PYTHON` must be `"melodic"` and `""` respectively.
- If `UBUNTU_VERSION` is `"20.04"`, `ROS_VERSION` and `PYTHON` must be `"neotic"` and `"3"` respectively.
- If `UBUNTU_VERSION` is `"20.04"`, `ROS_VERSION` and `PYTHON` must be `"noetic"` and `"3"` respectively.
The Docker files also accept args to use local or container registry images.
Expand Down Expand Up @@ -229,8 +228,8 @@ argument parsing more predictable.)
As with `build.sh`, by default, the docker image OS version will be
configured to match your host's OS version, but you can override that
by specifying the `--xenial`, `--bionic`, or `--focal` option for
Ubuntu 16.04, 18.04, or 20.04 docker images, respectively.
by specifying the `--xenial` or `--focal` option for
Ubuntu 16.04 or 20.04 docker images, respectively.

Use `--remote` to fetch and run a pre-built Astrobee docker
image. (Omit `--remote` to run using a docker image built locally by
Expand Down Expand Up @@ -266,7 +265,7 @@ The package argument is optional. The default is to build/test all
packages.

If debugging a CI failure that is specific to a particular OS version,
remember to pass `run.sh` the `--xenial`, `--bionic`, or `--focal`
remember to pass `run.sh` the `--xenial` or `--focal`
option to select the right OS version to replicate the failure.

Note: integration tests that use Gazebo simulation will be silently
Expand Down
9 changes: 2 additions & 7 deletions scripts/docker/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ usage: run.sh [-h] [-x] [-b] [-f] [-r] [-n] [-m] [-d]
-h or --help: Print this help
-x or --xenial: Use Ubuntu 16.04 docker image
-b or --bionic: Use Ubuntu 18.04 docker image
-f or --focal: Use Ubuntu 20.04 docker image
-r or --remote: Fetch pre-built remote docker image (vs. local image built by build.sh)
-n or --no-display: Don't set up X forwarding. (For headless environment.)
Expand Down Expand Up @@ -57,8 +56,8 @@ usage()
# Parse options 1 (validate and normalize with getopt)
######################################################################

shortopts="h,x,b,f,r,n,g:,m,d,i:,a:"
longopts="help,xenial,bionic,focal,remote,no-display,gpu:,mount,dry-run,image:,args:"
shortopts="h,x,f,r,n,g:,m,d,i:,a:"
longopts="help,xenial,focal,remote,no-display,gpu:,mount,dry-run,image:,args:"
opts=$(getopt -a -n run.sh --options "$shortopts" --longoptions "$longopts" -- "$@")
if [ $? -ne 0 ]; then
echo
Expand Down Expand Up @@ -95,8 +94,6 @@ while [ "$1" != "" ]; do
;;
-x | --xenial ) os="xenial"
;;
-b | --bionic ) os="bionic"
;;
-f | --focal ) os="focal"
;;
-r | --remote ) tagrepo="ghcr.io/nasa"
Expand Down Expand Up @@ -153,8 +150,6 @@ fi

if [ "$os" = "xenial" ]; then
tag=astrobee:latest-${image}ubuntu16.04
elif [ "$os" = "bionic" ]; then
tag=astrobee:latest-${image}ubuntu18.04
elif [ "$os" = "focal" ]; then
tag=astrobee:latest-${image}ubuntu20.04
fi
Expand Down
2 changes: 1 addition & 1 deletion scripts/docker/test_astrobee.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# This will test an Astrobee bionic docker container.
# This will test an Astrobee docker container.
# You must set the docker context to be the repository root directory

ARG UBUNTU_VERSION=16.04
Expand Down
9 changes: 3 additions & 6 deletions scripts/setup/debians/build_debians.sh
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,6 @@ while [[ $# -gt 0 ]]; do
# Packages to find and build dependencies
sudo apt-get install -y devscripts equivs libproj-dev || die
# Dependencies for jps3d
if [[ $dist == "bionic" ]]; then
sudo apt-get install -y libvtk6.3 libboost-filesystem1.62.0 libboost-system1.62.0 || die
fi
if [[ $dist == "focal" ]]; then
sudo apt-get install -y libvtk7.1p libboost-filesystem1.71.0 libboost-system1.71.0 || die
fi
Expand All @@ -60,8 +57,8 @@ while [[ $# -gt 0 ]]; do
shift
done

# Build opencv if ubuntu 18 or 20
[[ "$dist" =~ ^bionic|focal$ ]] && build_list+=( opencv )
# Build opencv if ubuntu 20
[[ "$dist" =~ ^focal$ ]] && build_list+=( opencv )

# Add public debians to build list
build_list+=( alvar dlib dbow2 gtsam decomputil jps3d openmvg )
Expand Down Expand Up @@ -90,4 +87,4 @@ do
if $install_debians ; then
sudo dpkg -i *${pkg}*.deb || die "Failed to install $pkg"
fi
done
done
11 changes: 2 additions & 9 deletions scripts/setup/debians/build_install_debians.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,10 @@ case $dist in
xenial)
echo "Ubuntu 16 detected"
;;
bionic|focal)
build_list+=( opencv )
;;&
bionic)
echo "Ubuntu 18 detected"
# jps3d deps
sudo apt-get install -y libvtk6.3 libboost-filesystem1.62.0 libboost-system1.62.0
;;
focal)
echo "Ubuntu 20 detected"
#jps3d deps
build_list+=( opencv )
# jps3d deps
sudo apt-get install -y libvtk7.1p libboost-filesystem1.71.0 libboost-system1.71.0
;;
*)
Expand Down
1 change: 0 additions & 1 deletion scripts/setup/debians/mirror/create_repo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,3 @@ $APTLY mirror create -architectures=armhf xenial-security http://ports.ubuntu.co
$APTLY mirror create -architectures=armhf ros http://packages.ros.org/ros/ubuntu xenial main

$APTLY repo create astrobee
$APTLY repo create bionic-astrobee
4 changes: 0 additions & 4 deletions scripts/setup/debians/mirror/publish_snapshot.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,10 @@ $APTLY snapshot create ros_$1 from mirror ros || exit

$APTLY snapshot merge -latest $1 astrobee_$1 main_$1 security_$1 updates_$1 ros_$1 || exit

$APTLY snapshot create bionic-astrobee_$1 from repo bionic-astrobee || exit

# need to delete old version first
$APTLY publish drop xenial
$APTLY publish drop bionic

$APTLY publish snapshot -gpg-key=33C0A17A -distribution="xenial" $1 || exit 0
$APTLY publish snapshot -gpg-key=33C0A17A -distribution="bionic" bionic-astrobee_$1 || exit 1

PUBLISH_DIR=`$APTLY config show | grep "rootDir" | sed -r 's|^[^:]+: "([^"]+)",$|\1|'`/public

Expand Down
3 changes: 0 additions & 3 deletions scripts/setup/debians/mirror/update_astrobee_debians.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,8 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
APTLY="$DIR/aptly/aptly -config=$DIR/aptly.conf"

DEBLOC=${ASTROBEE_DEBIAN_DIR:-/home/p-free-flyer/free-flyer/FSW/ars_debs/dists/xenial/main}
BIONIC_DEBLOC=${ASTROBEE_BIONIC_DEBIAN_DIR:-/home/p-free-flyer/free-flyer/FSW/ars_debs/dists/bionic}

# add our debians
$APTLY repo add astrobee $DEBLOC/binary-armhf/*.deb
$APTLY repo add astrobee $DEBLOC/binary-amd64/*.deb
$APTLY repo add astrobee $DEBLOC/source/*.dsc
$APTLY repo add bionic-astrobee $BIONIC_DEBLOC/*.deb
$APTLY repo add bionic-astrobee $BIONIC_DEBLOC/*.dsc
Loading

0 comments on commit 035e0e9

Please sign in to comment.