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

fix: replace colons with hyphens in charm names #2060

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

mr-cal
Copy link
Contributor

@mr-cal mr-cal commented Dec 20, 2024

Multi-base charms may have colons in their platform name. These get converted to hyphens because some environments don't allow colons in filenames.

Fixes #2057

Multi-base charms may have colons in their platform name. These get
converted to hyphens because some environments don't allow colons in
filenames.

Signed-off-by: Callahan Kovacs <callahan.kovacs@canonical.com>
Comment on lines 127 to 144
build_plan = models.CharmcraftBuildPlanner.model_validate(
self._project.marshal()
).get_build_plan()
platform = utils.get_os_platform()
build_on_base = bases.BaseName(name=platform.system, version=platform.release)
host_platform = utils.get_os_platform()
build_on_base = bases.BaseName(
name=host_platform.system, version=host_platform.release
)
host_arch = util.get_host_architecture()
for build_info in build_plan:
print(build_info)
if build_info.build_on != host_arch:
continue
if build_info.base == build_on_base:
return dest_dir / f"{self._project.name}_{build_info.platform}.charm"
platform = build_info.platform.replace(":", "-")
return dest_dir / f"{self._project.name}_{platform}.charm"

raise errors.CraftError(
"Current machine is not a valid build platform for this charm.",
Copy link
Contributor Author

@mr-cal mr-cal Dec 20, 2024

Choose a reason for hiding this comment

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

Unless I am mistaken, we could delete everything after line 125 in this function.

I don't think there is a scenario where self._platform doesn't exist.

Copy link
Collaborator

Choose a reason for hiding this comment

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

This may well be true now. It wasn't true when I first implemented this service, but at that point we could have self._platform == None. I'd have to do a deep dive into craft-application to see if that's still valid in the PackageService.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Makes sense, I was suspecting this was needed during the craft-application migration.

I poked around at the service factory and how charmcraft inits the pack service and dropping this appears safe.

@mr-cal mr-cal marked this pull request as ready for review December 20, 2024 17:58
@mr-cal mr-cal requested a review from lengau as a code owner December 20, 2024 17:58
The package service will always have a platform, so the code to
generate the charm filenames can be simplified.

Signed-off-by: Callahan Kovacs <callahan.kovacs@canonical.com>
Copy link
Collaborator

@lengau lengau left a comment

Choose a reason for hiding this comment

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

🚀

@lengau lengau requested a review from bepri December 20, 2024 20:59
Copy link
Contributor

@bepri bepri left a comment

Choose a reason for hiding this comment

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

🎸

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Multi-base charm cannot be uploaded to GitHub Actions artifact
3 participants