Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Step 6: Allow Abseil to be installed and used with find_package() #111

Closed
JonathanDCohen opened this issue May 2, 2018 · 9 comments
Closed
Assignees
Labels
cmake related to CMake support

Comments

@JonathanDCohen
Copy link
Contributor

This has been a contentious one, but yes, Abseil is going to support the git clone; make; make install workflow.

This will come at the same time as Abseil cuts our first Long Term Support Branch -- basically cuts of our source code stuck in versioned inline namespaces which we will maintain for a length of time with emergency security bugfixes and the like, and which will also be tagged for use by package managers and the like. Ideally, the find_package() workflow will only work with Long Term Support branches of Abseil -- it's the only safe way to use a precompiled version of abseil, as we can make sure that symbols don't clash unless they're identical (as long as they're compiled and linked with the same settings, etc). So the supported usages of abseil will be either live-at-head using Bazel, a mirror, a git submodule, or config-time downloading of source as in googletest's model, or using a precompiled Long Term Support branch of Abseil. It's unclear as of yet how this can be accomplished -- discussion on this point will happen closer to the point in time we're ready for this step.

@JonathanDCohen JonathanDCohen added the cmake related to CMake support label May 2, 2018
@JonathanDCohen JonathanDCohen self-assigned this May 2, 2018
@JonathanDCohen
Copy link
Contributor Author

#106

@JonathanDCohen JonathanDCohen changed the title Allow Abseil to be installed and used with find_package() Step 5: Allow Abseil to be installed and used with find_package() May 2, 2018
@JonathanDCohen JonathanDCohen changed the title Step 5: Allow Abseil to be installed and used with find_package() Step 6: Allow Abseil to be installed and used with find_package() May 2, 2018
@darix
Copy link

darix commented May 16, 2018

+1

@pifon2a
Copy link

pifon2a commented Aug 7, 2018

Are there any updates? Google Cartographer project now depends on Abseil. Unfortunately, since we are using ROS and catkin, we have to maintain the CMake build as well. We ended up using ExternalProject_Add in FindAbseil.cmake, but it is not optimal. Really looking forward to having make install in Abseil.

@alexweej
Copy link

Is there any "work in progress" branch for this? I'm having a little stab myself in order to integrate with our organization's packaging system.

Mizux added a commit to Mizux/abseil-cpp that referenced this issue Oct 4, 2018
Mizux added a commit to Mizux/abseil-cpp that referenced this issue Oct 9, 2018
Mizux added a commit to Mizux/abseil-cpp that referenced this issue Oct 23, 2018
Mizux added a commit to Mizux/abseil-cpp that referenced this issue Oct 23, 2018
Mizux added a commit to Mizux/abseil-cpp that referenced this issue Oct 23, 2018
Mizux added a commit to Mizux/abseil-cpp that referenced this issue Oct 24, 2018
Mizux added a commit to Mizux/abseil-cpp that referenced this issue Oct 24, 2018
Mizux added a commit to Mizux/abseil-cpp that referenced this issue Oct 24, 2018
Mizux added a commit to Mizux/abseil-cpp that referenced this issue Oct 24, 2018
Mizux added a commit to Mizux/abseil-cpp that referenced this issue Oct 24, 2018
Mizux added a commit to Mizux/abseil-cpp that referenced this issue Oct 25, 2018
Mizux added a commit to Mizux/abseil-cpp that referenced this issue Oct 26, 2018
@pifon2a
Copy link

pifon2a commented Nov 26, 2018

@Mizux, are you planning to submit your CMake Install rules?

@Mizux
Copy link
Contributor

Mizux commented Nov 26, 2018

@pifon2a The current plan is to push internally one by one all the #199 commits, then maybe revamp (i.e. rebase/rework) my Add CMake Install rules (abseil#111) on top of it...

We will remove absl_test(), absl_library(), absl_headeronly_library() and absl_test() so we will "just" have to add install rules on absl_cc_library() and absl_cc_test()...

@shardator
Copy link

is it now even possible to build Google Cartographer without internet access or a fake github repo?

@pifon2a
Copy link

pifon2a commented Dec 12, 2018

Unfortunately, not yet. After abseil has proper support for make install, it will be possible.

Mizux added a commit to Mizux/abseil-cpp that referenced this issue Jan 3, 2019
Mizux added a commit to Mizux/abseil-cpp that referenced this issue Jan 24, 2019
Mizux added a commit to Mizux/abseil-cpp that referenced this issue Feb 22, 2019
Mizux added a commit to Mizux/abseil-cpp that referenced this issue Mar 19, 2019
@JonathanDCohen
Copy link
Contributor Author

This is finally live! Thanks everyone for all the patience :)

benbovy added a commit to benbovy/s2geography that referenced this issue Oct 12, 2022
Currently we do not support downloading, building and installing absl as
part of this project (not sure we will ever need it?).

absl supports cmake's find_package():
abseil/abseil-cpp#111
benbovy added a commit to paleolimbot/s2geography that referenced this issue Oct 28, 2022
* allow using pre-built or pre-installed s2geometry

Enabled by default.

For downloading and building s2geometry as part of building s2geography,
set `S2GEOGRAPHY_FETCH_S2GEOMETRY=ON`.

* manage absl build and install externally

Currently we do not support downloading, building and installing absl as
part of this project (not sure we will ever need it?).

absl supports cmake's find_package():
abseil/abseil-cpp#111

* fix typo

* allow using pre-built or pre-installed googletest

Enabled by default.

To download and build googletest as part of building s2geography tests,
set `S2GEOGRAPHY_FETCH_GTEST=ON`.

* set C++ standard to c++17

Use `CACHE` for `CMAKE_CXX_STANDARD` so that it can be overriden.

* update cmake preset example

* build shared libraries by default

* exclude googletest from all installed targets

* update CI

* temp fix for CI run example?

* review dependencies management in the CMake build

- Use an approach inspired by Arrow for getting s2geometry

- Always bundle GTest (update to last version to suppress the
  MACOSX_RPATH CMake warning)

* fix S2_SOURCE AUTO mode

* quick and dirty fix for Homebrew installed S2

* tell which version of S2 is bundled

* fix openssl header homebrew + bundled

* fix conda s2geometry

Prevent picking the wrong s2geometry install when it is both installed
in a conda active environment and another default system location.

* fix typo

* update README

* fix BREW mode (variable conflict)

* more verbose (absl and s2 found)

* fix linking error with absl shared lib
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cmake related to CMake support
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants
@alexweej @darix @JonathanDCohen @Mizux @shardator @pifon2a and others