Skip to content

Commit

Permalink
[workspace] Deprecate public use of several externals
Browse files Browse the repository at this point in the history
Add a suitesparse_internal repository to rebuild (the AMD part of)
SuiteSparse from source with hidden visibility. Remove SuiteSparse
from the host and wheel dependencies.

Deprecate the public (host) suitesparse external.

Rename OSQP, QDLDL, SCS to use the "_internal" suffix and deprecate their
non-internal spellings. (They are all C libraries that already use hidden
visibility, so they don't need any C++ vendoring changes to their BUILD.)
  • Loading branch information
jwnimmer-tri committed Jan 31, 2023
1 parent c0ae8b6 commit 2ebcb82
Show file tree
Hide file tree
Showing 28 changed files with 153 additions and 147 deletions.
1 change: 0 additions & 1 deletion setup/mac/binary_distribution/Brewfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ brew 'openblas'
brew 'pkg-config'
brew '[email protected]'
brew 'spdlog'
brew 'suite-sparse'
brew 'tinyxml'
brew 'robotlocomotion/director/[email protected]'
brew 'xz'
Expand Down
1 change: 0 additions & 1 deletion setup/ubuntu/binary_distribution/packages-focal.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ coinor-libcoinutils3v5
coinor-libipopt1v5
default-jre
jupyter-notebook
libamd2
libblas3
libbz2-1.0
libdouble-conversion3
Expand Down
1 change: 0 additions & 1 deletion setup/ubuntu/binary_distribution/packages-jammy.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ coinor-libcoinutils3v5
coinor-libipopt1v5
default-jre
jupyter-notebook
libamd2
libblas-dev
libbz2-1.0
libdouble-conversion3
Expand Down
1 change: 0 additions & 1 deletion setup/ubuntu/source_distribution/packages-focal.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ libmumps-seq-dev
libnlopt-cxx-dev
libopengl-dev
libpng-dev
libsuitesparse-dev
libtiff-dev
libtinyxml-dev
libtool
Expand Down
1 change: 0 additions & 1 deletion setup/ubuntu/source_distribution/packages-jammy.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ libmumps-seq-dev
libnlopt-cxx-dev
libopengl-dev
libpng-dev
libsuitesparse-dev
libtiff-dev
libtinyxml-dev
libtool
Expand Down
4 changes: 2 additions & 2 deletions solvers/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -980,7 +980,7 @@ drake_cc_variant_library(
],
deps_enabled = [
"//math:eigen_sparse_triplet",
"@osqp",
"@osqp_internal//:osqp",
],
)

Expand All @@ -1003,7 +1003,7 @@ drake_cc_variant_library(
deps_enabled = [
"//common:scope_exit",
"//math:eigen_sparse_triplet",
"@scs//:scsdir",
"@scs_internal//:scsdir",
],
)

Expand Down
1 change: 1 addition & 0 deletions tools/install/check_licenses.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ LICENSE_LITERALS = [
LICENSE_PREFIXES = [
"COPYING.",
"LICENSE.",
"License.",
]

#------------------------------------------------------------------------------
Expand Down
37 changes: 0 additions & 37 deletions tools/wheel/image/dependencies/patches/suitesparse/patch.cmake

This file was deleted.

50 changes: 0 additions & 50 deletions tools/wheel/image/dependencies/patches/suitesparse/patch.diff

This file was deleted.

6 changes: 0 additions & 6 deletions tools/wheel/image/dependencies/projects.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,6 @@ set(lapack_url "https://github.com/Reference-LAPACK/lapack/archive/v${lapack_ver
set(lapack_md5 "d70fc27a8bdebe00481c97c728184f09")
list(APPEND ALL_PROJECTS lapack)

# suitesparse
set(suitesparse_version 4.4.5)
set(suitesparse_url "http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-${suitesparse_version}.tar.gz")
set(SuiteSparse_md5 "a2926c27f8a5285e4a10265cc68bbc18")
list(APPEND ALL_PROJECTS suitesparse)

# coinutils
set(coinutils_version 2.11.4)
set(coinutils_url "https://github.com/coin-or/CoinUtils/archive/refs/tags/releases/${coinutils_version}.tar.gz")
Expand Down
22 changes: 0 additions & 22 deletions tools/wheel/image/dependencies/projects/suitesparse.cmake

This file was deleted.

7 changes: 4 additions & 3 deletions tools/workspace/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ _DRAKE_EXTERNAL_PACKAGE_INSTALLS = ["@%s//:install" % p for p in [
"spdlog",
"statsjs",
"stduuid_internal",
"suitesparse_internal",
"tinyobjloader",
"tinyxml2_internal",
"usockets",
Expand Down Expand Up @@ -132,12 +133,12 @@ _DRAKE_EXTERNAL_PACKAGE_INSTALLS = ["@%s//:install" % p for p in [
"//conditions:default": [],
}) + select({
"//conditions:default": [
"@osqp//:install",
"@qdldl//:install",
"@osqp_internal//:install",
"@qdldl_internal//:install",
],
"//tools:no_osqp": [],
}) + select({
"//conditions:default": ["@scs//:install"],
"//conditions:default": ["@scs_internal//:install"],
"//tools:no_scs": [],
})

Expand Down
35 changes: 29 additions & 6 deletions tools/workspace/default.bzl
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# -*- python -*-

load("@drake//tools/workspace:deprecation.bzl", "add_deprecation")
load("@drake//tools/workspace:mirrors.bzl", "DEFAULT_MIRRORS")
load("@drake//tools/workspace:os.bzl", "os_repository")
load("@drake//tools/workspace/abseil_cpp_internal:repository.bzl", "abseil_cpp_internal_repository") # noqa
Expand Down Expand Up @@ -69,20 +70,20 @@ load("@drake//tools/workspace/opencl:repository.bzl", "opencl_repository")
load("@drake//tools/workspace/opengl:repository.bzl", "opengl_repository")
load("@drake//tools/workspace/optitrack_driver:repository.bzl", "optitrack_driver_repository") # noqa
load("@drake//tools/workspace/org_apache_xmlgraphics_commons:repository.bzl", "org_apache_xmlgraphics_commons_repository") # noqa
load("@drake//tools/workspace/osqp:repository.bzl", "osqp_repository")
load("@drake//tools/workspace/osqp_internal:repository.bzl", "osqp_internal_repository") # noqa
load("@drake//tools/workspace/petsc:repository.bzl", "petsc_repository")
load("@drake//tools/workspace/picosat:repository.bzl", "picosat_repository")
load("@drake//tools/workspace/picosha2:repository.bzl", "picosha2_repository")
load("@drake//tools/workspace/platforms:repository.bzl", "platforms_repository") # noqa
load("@drake//tools/workspace/pybind11:repository.bzl", "pybind11_repository")
load("@drake//tools/workspace/pycodestyle:repository.bzl", "pycodestyle_repository") # noqa
load("@drake//tools/workspace/python:repository.bzl", "python_repository")
load("@drake//tools/workspace/qdldl:repository.bzl", "qdldl_repository")
load("@drake//tools/workspace/qdldl_internal:repository.bzl", "qdldl_internal_repository") # noqa
load("@drake//tools/workspace/qhull_internal:repository.bzl", "qhull_internal_repository") # noqa
load("@drake//tools/workspace/ros_xacro_internal:repository.bzl", "ros_xacro_internal_repository") # noqa
load("@drake//tools/workspace/rules_pkg:repository.bzl", "rules_pkg_repository") # noqa
load("@drake//tools/workspace/rules_python:repository.bzl", "rules_python_repository") # noqa
load("@drake//tools/workspace/scs:repository.bzl", "scs_repository")
load("@drake//tools/workspace/scs_internal:repository.bzl", "scs_internal_repository") # noqa
load("@drake//tools/workspace/sdformat_internal:repository.bzl", "sdformat_internal_repository") # noqa
load("@drake//tools/workspace/snopt:repository.bzl", "snopt_repository")
load("@drake//tools/workspace/spdlog:repository.bzl", "spdlog_repository")
Expand All @@ -92,6 +93,7 @@ load("@drake//tools/workspace/stduuid:repository.bzl", "stduuid_repository")
load("@drake//tools/workspace/stduuid_internal:repository.bzl", "stduuid_internal_repository") # noqa
load("@drake//tools/workspace/styleguide:repository.bzl", "styleguide_repository") # noqa
load("@drake//tools/workspace/suitesparse:repository.bzl", "suitesparse_repository") # noqa
load("@drake//tools/workspace/suitesparse_internal:repository.bzl", "suitesparse_internal_repository") # noqa
load("@drake//tools/workspace/tinyobjloader:repository.bzl", "tinyobjloader_repository") # noqa
load("@drake//tools/workspace/tinyxml2_internal:repository.bzl", "tinyxml2_internal_repository") # noqa
load("@drake//tools/workspace/tomli_internal:repository.bzl", "tomli_internal_repository") # noqa
Expand Down Expand Up @@ -263,7 +265,13 @@ def add_default_repositories(excludes = [], mirrors = DEFAULT_MIRRORS):
if "org_apache_xmlgraphics_commons" not in excludes:
org_apache_xmlgraphics_commons_repository(name = "org_apache_xmlgraphics_commons", mirrors = mirrors) # noqa
if "osqp" not in excludes:
osqp_repository(name = "osqp", mirrors = mirrors)
add_deprecation(
name = "osqp",
date = "2023-05-01",
cc_aliases = {"osqp": "@osqp_internal//:osqp"},
)
if "osqp_internal" not in excludes:
osqp_internal_repository(name = "osqp_internal", mirrors = mirrors)
if "petsc" not in excludes:
petsc_repository(name = "petsc", mirrors = mirrors)
if "picosat" not in excludes:
Expand All @@ -281,7 +289,13 @@ def add_default_repositories(excludes = [], mirrors = DEFAULT_MIRRORS):
if "python" not in excludes:
python_repository(name = "python")
if "qdldl" not in excludes:
qdldl_repository(name = "qdldl", mirrors = mirrors)
add_deprecation(
name = "qdldl",
date = "2023-05-01",
cc_aliases = {"qdldl": "@qdldl_internal//:qdldl"},
)
if "qdldl_internal" not in excludes:
qdldl_internal_repository(name = "qdldl_internal", mirrors = mirrors)
if "qhull_internal" not in excludes:
qhull_internal_repository(name = "qhull_internal", mirrors = mirrors)
if "ros_xacro_internal" not in excludes:
Expand All @@ -291,7 +305,13 @@ def add_default_repositories(excludes = [], mirrors = DEFAULT_MIRRORS):
if "rules_python" not in excludes:
rules_python_repository(name = "rules_python", mirrors = mirrors)
if "scs" not in excludes:
scs_repository(name = "scs", mirrors = mirrors)
add_deprecation(
name = "scs",
date = "2023-05-01",
cc_aliases = {"scsdir": "@scs_internal//:scsdir"},
)
if "scs_internal" not in excludes:
scs_internal_repository(name = "scs_internal", mirrors = mirrors)
if "sdformat_internal" not in excludes:
sdformat_internal_repository(name = "sdformat_internal", mirrors = mirrors) # noqa
if "snopt" not in excludes:
Expand All @@ -309,7 +329,10 @@ def add_default_repositories(excludes = [], mirrors = DEFAULT_MIRRORS):
if "styleguide" not in excludes:
styleguide_repository(name = "styleguide", mirrors = mirrors)
if "suitesparse" not in excludes:
# N.B. This repository is deprecated for removal on 2023-05-01.
suitesparse_repository(name = "suitesparse")
if "suitesparse_internal" not in excludes:
suitesparse_internal_repository(name = "suitesparse_internal", mirrors = mirrors) # noqa
if "tinyobjloader" not in excludes:
tinyobjloader_repository(name = "tinyobjloader", mirrors = mirrors)
if "tinyxml2_internal" not in excludes:
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@ cmake_configure_file(
"PRINTING",
"PROFILING",
# Keep the default primitive size of `double` and `int`. Don't define
# 'DFLOAT' nor 'DLONG' unless @qdldl and @scs are also changed to use
# those primitive sizes. See drake/tools/workspace/qdldl/README.md.
# 'DFLOAT' nor 'DLONG' unless @qdldl_internal and @scs_internal are
# also changed to use those primitive sizes.
# See drake/tools/workspace/qdldl_internal/README.md.
] + select({
"@drake//tools/cc_toolchain:apple": [
"IS_MAC",
Expand Down Expand Up @@ -99,8 +100,8 @@ cc_library(
],
linkstatic = 1,
deps = [
"@qdldl",
"@suitesparse//:amd",
"@qdldl_internal//:qdldl",
"@suitesparse_internal//:amd",
],
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

load("@drake//tools/workspace:github.bzl", "github_archive")

def osqp_repository(
def osqp_internal_repository(
name,
mirrors = None):
github_archive(
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ cmake_configure_file(
# https://github.com/osqp/qdldl/blob/v0.1.6/README.md#custom-types-for-integer-floats-and-booleans
defines = [
"QDLDL_BOOL_TYPE=unsigned char",
# Keep the `int` type sync'd with the @osqp and @scs build.
# See drake/tools/workspace/qdldl/README.md.
# Keep the `int` type sync'd with the build of @osqp_internal and
# @scs_internal. See drake/tools/workspace/qdldl_internal/README.md.
"QDLDL_INT_TYPE=int",
"QDLDL_LONG=0",
# Keep the `double` type sync'd with the @osqp and @scs build.
# See drake/tools/workspace/qdldl/README.md.
# Keep the `int` type sync'd with the build of @osqp_internal and
# @scs_internal. See drake/tools/workspace/qdldl_internal/README.md.
"QDLDL_FLOAT_TYPE=double",
"QDLDL_FLOAT=0",
# Match this to QDLDL_INT_TYPE above.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

load("@drake//tools/workspace:github.bzl", "github_archive")

def qdldl_repository(
def qdldl_internal_repository(
name,
mirrors = None):
github_archive(
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ cc_library(
defines = [
"USE_LAPACK=1",
# Keep the default primitive size of `double` and `int`. Don't define
# 'SFLOAT' nor 'DLONG' unless @qdldl and @osqp are also changed to use
# those primitive sizes.
# 'SFLOAT' nor 'DLONG' unless @qdldl_internal and @osqp_internal are
# also changed to use those primitive sizes.
],
includes = [
"include",
Expand All @@ -51,8 +51,8 @@ cc_library(
deps = [
"@blas",
"@lapack",
"@qdldl",
"@suitesparse//:amd",
"@qdldl_internal//:qdldl",
"@suitesparse_internal//:amd",
],
)

Expand Down
File renamed without changes.
Loading

0 comments on commit 2ebcb82

Please sign in to comment.