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

Add a build profile with no disabled classes and pass it by default #82

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ libname = "EXTENSION-NAME"
projectdir = "demo"

localEnv = Environment(tools=["default"], PLATFORM="")
localEnv["build_profile"] = "build_profile.json"
Copy link
Contributor

@Ivorforce Ivorforce Mar 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd suggest the following:

Suggested change
localEnv["build_profile"] = "build_profile.json"
if ARGUMENTS.get("build_profile", None) is None:
# Using small build profiles decreases compile time.
# The file starts out empty. Edit it to benefit from decreased compile times.
ARGUMENTS["build_profile"] = str("build_profile.json")

(further up; at least before the env is created)

ARGUMENTS.setdefault("build_profile", "build_profile.json") should also work on new SCons versions, but my local scons actually didn't support it so I'd suggest if.

The comment above can be improved with a link to a docs entry for build profiles once we have one.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another option would be to fail if the build_profile option is manually set because it probably shouldn't. But I don't see why I'd deny a user this configuration if it's explicitly requested.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On my SCons version this code makes help show:

build_profile: Path to a file containing a feature build profile ( /path/to/build_profile )
    default: None
    actual: build_profile.json

Copy link
Contributor Author

@unvermuthet unvermuthet Mar 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With the way it is, it show the default and can be replaced for me:

build_profile: Path to a file containing a feature build profile ( /path/to/build_profile )
    default: build_profile.json
    actual: copy.json

Copy link
Contributor

@Ivorforce Ivorforce Mar 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this the case for both implementations?

The reason I'd recommend against localEnv["build_profile"] = "build_profile.json" is because it would silently ignore build_profile=some_build_profile.json arguments, overriding with the default value. This could potentially cause hard to debug problems.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah... perhaps this is because godot-cpp re-extracts the parameter after it's set?
I'm not sure which is the 'SCons' way to handle this. Yours seems better integrated, I suppose, so if it works it may be a better approach.


customs = ["custom.py"]
customs = [os.path.abspath(path) for path in customs]
Expand Down
4 changes: 4 additions & 0 deletions build_profile.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"type": "feature_profile",
"disabled_classes": []
}