Skip to content

Allow parallel install#7583

Closed
levitte wants to merge 2 commits intoopenssl:masterfrom
levitte:allow-parallel-install
Closed

Allow parallel install#7583
levitte wants to merge 2 commits intoopenssl:masterfrom
levitte:allow-parallel-install

Conversation

@levitte
Copy link
Copy Markdown
Member

@levitte levitte commented Nov 7, 2018

When trying 'make -j{n} install', you may occasionally run into
trouble because to sub-targets (install_dev and install_runtime) try
to install the same shared libraries. That makes parallel install
difficult.

This is solved by dividing install_runtime into two parts, one for
libraries and one for programs, and have install_dev depend on
install_runtime_libs instead of installing the shared runtime
libraries itself.

Furthermore, we only had the main 'install' target depend on 'all'.
Here, we change the dependencies so targets like install_dev,
install_runtime_libs, install_engines and install_programs
depend on build targets that are correspond to them more specifically.
This increases the parallel possibilities.

Fixes #7466

@levitte levitte added branch: master Applies to master branch 1.1.0 branch: 1.1.1 Applies to OpenSSL_1_1_1-stable branch (EOL) labels Nov 7, 2018
@levitte levitte force-pushed the allow-parallel-install branch from 99080fa to 1a1d53f Compare November 7, 2018 15:31
When trying 'make -j{n} install', you may occasionally run into
trouble because to sub-targets (install_dev and install_runtime) try
to install the same shared libraries.  That makes parallel install
difficult.

This is solved by dividing install_runtime into two parts, one for
libraries and one for programs, and have install_dev depend on
install_runtime_libs instead of installing the shared runtime
libraries itself.

Fixes openssl#7466
We only had the main 'install' target depend on 'all'.  This changes
the dependencies so targets like install_dev, install_runtime_libs,
install_engines and install_programs depend on build targets that are
correspond to them more specifically.  This increases the parallel
possibilities.

Fixes openssl#7466
@levitte levitte force-pushed the allow-parallel-install branch from 1a1d53f to 7d901a5 Compare November 8, 2018 22:24
@levitte levitte changed the title WIP: Allow parallel install Allow parallel install Nov 8, 2018
levitte added a commit that referenced this pull request Nov 9, 2018
When trying 'make -j{n} install', you may occasionally run into
trouble because to sub-targets (install_dev and install_runtime) try
to install the same shared libraries.  That makes parallel install
difficult.

This is solved by dividing install_runtime into two parts, one for
libraries and one for programs, and have install_dev depend on
install_runtime_libs instead of installing the shared runtime
libraries itself.

Fixes #7466

Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from #7583)
levitte added a commit that referenced this pull request Nov 9, 2018
We only had the main 'install' target depend on 'all'.  This changes
the dependencies so targets like install_dev, install_runtime_libs,
install_engines and install_programs depend on build targets that are
correspond to them more specifically.  This increases the parallel
possibilities.

Fixes #7466

Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from #7583)
levitte added a commit that referenced this pull request Nov 9, 2018
When trying 'make -j{n} install', you may occasionally run into
trouble because to sub-targets (install_dev and install_runtime) try
to install the same shared libraries.  That makes parallel install
difficult.

This is solved by dividing install_runtime into two parts, one for
libraries and one for programs, and have install_dev depend on
install_runtime_libs instead of installing the shared runtime
libraries itself.

Fixes #7466

Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from #7583)

(cherry picked from commit c1123d9)
levitte added a commit that referenced this pull request Nov 9, 2018
We only had the main 'install' target depend on 'all'.  This changes
the dependencies so targets like install_dev, install_runtime_libs,
install_engines and install_programs depend on build targets that are
correspond to them more specifically.  This increases the parallel
possibilities.

Fixes #7466

Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from #7583)

(cherry picked from commit e8d01a6)
levitte added a commit that referenced this pull request Nov 9, 2018
When trying 'make -j{n} install', you may occasionally run into
trouble because to sub-targets (install_dev and install_runtime) try
to install the same shared libraries.  That makes parallel install
difficult.

This is solved by dividing install_runtime into two parts, one for
libraries and one for programs, and have install_dev depend on
install_runtime_libs instead of installing the shared runtime
libraries itself.

Fixes #7466

Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from #7583)

(cherry picked from commit c1123d9)
levitte added a commit that referenced this pull request Nov 9, 2018
We only had the main 'install' target depend on 'all'.  This changes
the dependencies so targets like install_dev, install_runtime_libs,
install_engines and install_programs depend on build targets that are
correspond to them more specifically.  This increases the parallel
possibilities.

Fixes #7466

Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from #7583)

(cherry picked from commit e8d01a6)
@levitte
Copy link
Copy Markdown
Member Author

levitte commented Nov 9, 2018

Merged.

master:
e8d01a6 Have install targets depend on more precise build targets
c1123d9 Allow parallel install

1.1.1:
201a33f Have install targets depend on more precise build targets
d582f15 Allow parallel install

1.1.0:
2801f67 Have install targets depend on more precise build targets
82ca431 Allow parallel install

@levitte levitte closed this Nov 9, 2018
DomT4 added a commit to DomT4/homebrew-core-1 that referenced this pull request Apr 28, 2021
The issues around parallel builds were resolved in 2018 via
openssl/openssl#7583 and the referenced
commits.

Sadly the tests still take 45 years to get through but this fairly
significantly speeds up the build time.

Before:
==> Summary
/opt/homebrew/Cellar/openssl@1.1/1.1.1k: 8,064 files, 17.9MB, built in 7 minutes 40 seconds

After:
==> Summary
/opt/homebrew/Cellar/openssl@1.1/1.1.1k: 8,064 files, 17.9MB, built in 4 minutes 35 seconds
carlocab pushed a commit to Homebrew/homebrew-core that referenced this pull request Apr 30, 2021
The issues around parallel builds were resolved in 2018 via
openssl/openssl#7583 and the referenced
commits.

Sadly the tests still take 45 years to get through but this fairly
significantly speeds up the build time.

Before:
==> Summary
/opt/homebrew/Cellar/openssl@1.1/1.1.1k: 8,064 files, 17.9MB, built in 7 minutes 40 seconds

After:
==> Summary
/opt/homebrew/Cellar/openssl@1.1/1.1.1k: 8,064 files, 17.9MB, built in 4 minutes 35 seconds
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

branch: master Applies to master branch branch: 1.1.1 Applies to OpenSSL_1_1_1-stable branch (EOL)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants