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

Stop installing headers from our libraries into the common place #132

Closed
emaxx-google opened this issue Jun 22, 2020 · 0 comments
Closed

Comments

@emaxx-google
Copy link
Collaborator

emaxx-google commented Jun 22, 2020

Currently, the build process is organized in a way that each sub-library (like //common/cpp) is built separately and then has its .lib+.h files installed into a common place (in the NaCl environment). Copying the headers is managed via a separate fake "headers_installed.stamp" file (which has a dependency on each of the shared .h file and therefore triggers re-installation once any of them changes).

Originally, that was introduced primarily because the NaCl SDK and naclports were using that model. This model allows, for example:

  • using a "stable" version of a library (the one that is already installed into the SDK) while developing a new version of the library;
  • deleting the library sources and temporary artifacts after building it once;
  • protection against accidental inclusion of the library's internal .h file.

None of those benefits really bring much in the context of sub-libraries within our project, and overall this approach causes a bunch of complexity and fragility in the build scripts. Examples of practical problems:

  • parallel builds might fail due to trying to install the headers simultaneously;
  • recreating the "env" would result in a stale state with compilation errors that the .h files cannot be found, unless all .stamp files are deleted.

Therefore the suggestion is to get rid of that model, and instead follow a simpler approach that all headers are included directly from the source tree.

emaxx-google added a commit that referenced this issue Oct 28, 2020
This commit disables installation of "public" headers from the
//common/cpp library into a common include directory. Instead, the
//common/cpp/src directory is simply added into the include search path
in needed makefiles.

More background on this change is in #132 - to put it simply, this is a
pure refactoring that will remove a bunch of compelxity from our build
scripts and additionally make migrating them to Emscripten/WebAssembly
simpler.
emaxx-google added a commit that referenced this issue Oct 28, 2020
This commit disables installation of "public" headers from the
//common/cpp library into a common include directory. Instead, the
//common/cpp/src directory is simply added into the include search path
in needed makefiles.

More background on this change is in #132 - to put it simply, this is a
pure refactoring that will remove a bunch of complexity from our build
scripts and additionally make migrating them to Emscripten/WebAssembly
simpler.
emaxx-google added a commit that referenced this issue Nov 9, 2020
This commit disables installation of "public" headers from the
//third_party/pcsc-lite/naclport/common library into a common include
directory. Instead, the path to this library is simply added into the
include search path in needed makefiles.

More background on this refactoring is in #132.
emaxx-google added a commit that referenced this issue Nov 9, 2020
This commit disables installation of "public" headers from the
//third_party/pcsc-lite/naclport/cpp_client library into a common
include directory. Instead, the path to this library is simply
added into the include search path in needed makefiles.

More background on this refactoring is in #132.
emaxx-google added a commit that referenced this issue Nov 9, 2020
This commit disables installation of "public" headers from the
//third_party/pcsc-lite/naclport/common library into a common include
directory. Instead, the path to this library is simply added into the
include search path in needed makefiles.

More background on this refactoring is in #132.
emaxx-google added a commit that referenced this issue Nov 9, 2020
This commit disables installation of "public" headers from the
//third_party/pcsc-lite/naclport/cpp_client library into a common
include directory. Instead, the path to this library is simply
added into the include search path in needed makefiles.

More background on this refactoring is in #132.
emaxx-google added a commit that referenced this issue Nov 10, 2020
This commit disables installation of "public" headers from the
//third_party/pcsc-lite/naclport/cpp_demo library into a common
include directory. Instead, the path to this library is simply
added into the include search path in needed makefiles.

More background on this refactoring is in #132.
emaxx-google added a commit that referenced this issue Nov 10, 2020
This commit disables installation of "public" headers from the
//third_party/pcsc-lite/naclport/cpp_demo library into a common
include directory. Instead, the path to this library is simply
added into the include search path in needed makefiles.

More background on this refactoring is in #132.
emaxx-google added a commit that referenced this issue Nov 13, 2020
This commit disables installation of "public" headers from the
//common/integration_testing library into a common include
directory. Instead, the path to this library is simply added
into the include search path in needed makefiles.

More background on this refactoring is in #132.
emaxx-google added a commit that referenced this issue Nov 13, 2020
This commit disables installation of "public" headers from the
//common/integration_testing library into a common include
directory. Instead, the path to this library is simply added
into the include search path in needed makefiles.

More background on this refactoring is in #132.
emaxx-google added a commit that referenced this issue Nov 16, 2020
This commit disables installation of "public" headers from the
//third_party/libusb library into a common include directory.
Instead, the path to this library is simply added into the include
search path in needed makefiles.

More background on this refactoring is in #132.
emaxx-google added a commit that referenced this issue Nov 16, 2020
This commit disables installation of "public" headers from the
//third_party/pcsc-lite/server library into a common include
directory. Instead, the path to this library is simply added into
the include search path in needed makefiles.

More background on this refactoring is in #132.
emaxx-google added a commit that referenced this issue Nov 16, 2020
This commit disables installation of "public" headers from the
//third_party/pcsc-lite/server_clients_management library into a common
include directory. Instead, the path to this library is simply added
into the include search path in needed makefiles.

More background on this refactoring is in #132.
emaxx-google added a commit that referenced this issue Nov 16, 2020
This commit disables installation of "public" headers from the
//third_party/libusb library into a common include directory.
Instead, the path to this library is simply added into the include
search path in needed makefiles.

More background on this refactoring is in #132.
emaxx-google added a commit that referenced this issue Nov 16, 2020
This commit disables installation of "public" headers from the
//third_party/pcsc-lite/server library into a common include
directory. Instead, the path to this library is simply added into
the include search path in needed makefiles.

More background on this refactoring is in #132.
emaxx-google added a commit that referenced this issue Nov 16, 2020
…#279)

This commit disables installation of "public" headers from the
//third_party/pcsc-lite/server_clients_management library into a common
include directory. Instead, the path to this library is simply added
into the include search path in needed makefiles.

More background on this refactoring is in #132.
emaxx-google added a commit that referenced this issue Nov 16, 2020
This commit deletes the makefile rules that implement the
installation of libraries' headers into the comment include directory.
All usages of these rules have been removed by now.

Also fix one remaining usage of common installed headers - the
//common/integration_testing library - which was incorrectly specifying
the include directories.

This completes the refactoring tracked by #132.
emaxx-google added a commit that referenced this issue Nov 16, 2020
This commit deletes the makefile rules that implement the
installation of libraries' headers into the comment include directory.
All usages of these rules have been removed by now.

Also fix one remaining usage of common installed headers - the
//common/integration_testing library - which was incorrectly specifying
the include directories.

This completes the refactoring tracked by #132.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant