| CARVIEW |
Select Language
HTTP/2 200
date: Fri, 26 Dec 2025 18:58:39 GMT
content-type: text/html; charset=utf-8
cache-control: no-cache
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com github.githubassets.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com github.githubassets.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
referrer-policy: no-referrer-when-downgrade
server-timing: pull_request_layout-fragment;desc="pull_request_layout fragment";dur=398.693612,conversation_content-fragment;desc="conversation_content fragment";dur=1252.930855,conversation_sidebar-fragment;desc="conversation_sidebar fragment";dur=361.653898,nginx;desc="NGINX";dur=0.86055,glb;desc="GLB";dur=96.304553
strict-transport-security: max-age=31536000; includeSubdomains; preload
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
x-content-type-options: nosniff
x-frame-options: deny
x-voltron-version: aab62e3
x-xss-protection: 0
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=db6dFfKkFYMPyfWqKmvMbi8vSeZ4TlVRSOquh0SLJP1BpAL3HeJPDHXfQAWzserI4RNfx0T%2BkfKwj%2BQWsv6gfEBgykBYKF9cl8Uc1hcnGFz4d8YQfFpswueeA6FbeDFTquCpsX3E%2BUac4GggOaO3clODTpRmJJYXtQphLgNfjl4vfpmDnCSLPKIo8ntCMZdVHObaHXNJZxVUYI1hggPfyFDZ4lmHr93iUX%2BpkWMIwPZXAhBmbWBB%2BV7uvAclvfw5xXRQ8%2B5IaGROd10rbp6pUg%3D%3D--EQhR%2BbQya%2BgbAjeT--sczKuvptm5fU5pmSYoXPZg%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.88365355.1766775518; Path=/; Domain=github.com; Expires=Sat, 26 Dec 2026 18:58:38 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Sat, 26 Dec 2026 18:58:38 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: B8CA:3159FD:3C08E8F:47CBC7B:694EDADE
CI: Fix Makefiles for parallel builds by jimklimov · Pull Request #2825 · networkupstools/nut · GitHub
jimklimov
added
packaging
CI
Entries related to continuous integration infrastructure (here CI = tools + scripts + recipes)
refactor/fightwarn
PR or issue proposal to improve code maintainability without functional changes, or to fix warnings
portability
We want NUT to build and run everywhere possible
labels
Feb 26, 2025
Copy link
Copy link
Skip to content
Navigation Menu
{{ message }}
-
-
Notifications
You must be signed in to change notification settings - Fork 406
CI: Fix Makefiles for parallel builds #2825
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
Merged
jimklimov
merged 72 commits into
networkupstools:master
from
jimklimov:fix-makefile-docs-check-changelog
Mar 1, 2025
Merged
CI: Fix Makefiles for parallel builds #2825
jimklimov
merged 72 commits into
networkupstools:master
from
jimklimov:fix-makefile-docs-check-changelog
Mar 1, 2025
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
❌ Build nut 2.8.2.2778-master failed (commit 693f88eb04 by @jimklimov) |
…s and renders once (for unmodified sources) Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
… once (for unmodified sources) Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
… recipes were hopefully rectified Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…en do "all-recursive" and no longer retry "doc" just-in-case Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
On the one hand, code builds are well-parallelized, easy to avoid extra work when re-making, and are more useful in typical development cycles. The ChangeLog HTML/PDF generation is a time-consuming hog when enabled, and with automake's "all-recursive" implementation handling SUBDIRS only sequentially, it blocks the useful part of build for a long time when we e.g. `git commit` the code changes during development. Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…fter "all" Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
… of automake SUBDIRS and how it hurts parallel builds of NUT Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…), and detail the dependencies Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…CS_NO_MAN option to simplify parallel work from top-level Makefile while allowing legacy "cd docs && make" to still do the right thing Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…es more visibly Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…ual libs Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…Windows (target-dependent) Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…)built Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…common.la and nut_version.h Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…itionals in scripts/Windows/Makefile.am (note HAVE_MINGW_RESGEN too) Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…r quicker SUBDIRS_ALL_LIBS_LOCAL Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
… not just "all" per se In automake, "all: all-recursive" seems to be always defined, so we must be a dependency of that, otherwise we ended up building BOTH the default "all-recursive" and the optimized parallel sub-make, so they wrote into same files and crashed. Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
… if transitive Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
|
✅ Build nut 2.8.2.2798-master completed (commit 1e93f74b80 by @jimklimov) |
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Mar 1, 2025
…e -j` [networkupstools#2825] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Mar 1, 2025
…e -j` [networkupstools#2825] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Mar 1, 2025
…e -j` [networkupstools#2825] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
This was referenced Mar 2, 2025
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Mar 12, 2025
…otools [networkupstools#2842, networkupstools#2825] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Mar 12, 2025
…etworkupstools#2825, networkupstools#2842] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Mar 12, 2025
…etworkupstools#2825, networkupstools#2842] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to sshambar/nut
that referenced
this pull request
Mar 12, 2025
…kupstools#2825, networkupstools#2842] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to sshambar/nut
that referenced
this pull request
Mar 12, 2025
…hain [networkupstools#2825, networkupstools#2842] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to sshambar/nut
that referenced
this pull request
Mar 12, 2025
…ILT_SOURCES so it is made early [networkupstools#2825, networkupstools#2842] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Mar 15, 2025
… SUBDIRS of main Makefile; avoid two definitions of "all" goal there [networkupstools#2842, networkupstools#2825] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
nut-travis
pushed a commit
that referenced
this pull request
Mar 15, 2025
Signed-off-by: Jim Klimov <jimklimov@gmail.com>
nut-travis
pushed a commit
that referenced
this pull request
Mar 15, 2025
Signed-off-by: Jim Klimov <jimklimov@gmail.com>
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Mar 16, 2025
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to sshambar/nut
that referenced
this pull request
Mar 16, 2025
…orkupstools#2825] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Mar 17, 2025
…ols#2825] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Mar 17, 2025
…ols#2825] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Apr 18, 2025
…(generate sources via nut-scanner-deps/tools only once) [networkupstools#2825] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Apr 18, 2025
…(generate sources via nut-scanner-deps/tools only once) [networkupstools#2825] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Jul 28, 2025
…nd it has work to do only once [follows up from PR networkupstools#2825] In practice we do call it as many times as there are listed dependency files, but it only generates them on the first run and quicky bails out later on. This should help avoid writing into same files in parallel, ending up with garbled or incomplete files when we want to use them. Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Jul 28, 2025
…ipe [follows up from PR networkupstools#2825] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Jul 28, 2025
…ncies [follows up from PR networkupstools#2825, highlights why issue networkupstools#2584 better be solved] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
jimklimov
added a commit
to jimklimov/nut
that referenced
this pull request
Jul 28, 2025
…nd it has work to do only once [follows up from PR networkupstools#2825] In practice we do call it as many times as there are listed dependency files, but it only generates them on the first run and quicky bails out later on. This should help avoid writing into same files in parallel, ending up with garbled or incomplete files when we want to use them. Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
CI
Entries related to continuous integration infrastructure (here CI = tools + scripts + recipes)
documentation
packaging
portability
We want NUT to build and run everywhere possible
refactor/fightwarn
PR or issue proposal to improve code maintainability without functional changes, or to fix warnings
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
You can’t perform that action at this time.
Standard automake
SUBDIRSallow for nested projects with every directory being buildable alone as well, however the recursive builds are effectively sequential (iterating over the listed directories one by one). This is nicely deterministic for sequential builds, but not so nice for parallel builds with unbalanced workload in the directories (noted whenChangeLog.(pdf|html)takes minutes to build while the other cores are quiet).A commonly recommended solution is to collapse everything to one Makefile which is not too feasible for us.
So this PR goes another way, to explicitly define the web of known dependencies between directories (or specifically the header files and our numerous helper, mock and client libraries that can be used in other directories too). This ends up with a highly parallelisable build routine, where docs and code can consume CPU simultaneously and less wall-clock time gets spent overall. However sequential builds, as well as a dozen of less time-critical recursive goals like
checkorinstallof built artifacts, are handled by exactly same code as before (whatever automake generates).This PR also revises interaction between root, docs and docs/man Makefiles, to minimize duplicate work that might be done to build or check documentation - this is another notable time hog, so sad to do it e.g. every time we pass a
make check(sometimes several times per build).Hopefully NUT CI farm turnaround will be a bit faster now.
UPDATE: Hopefully the later commits also definitively resolve the mix of our desire to build a new set of
ChangeLog*products when git metadata changes, but to not roll rebuilding them in ordinary cycles that visit these files several times (make distchecketc.)