← Back to issue list

remote-build results in filenames with literal `%40`

View original Github issue

Metadata

Project
craft-application
Number
#968
Type
issue
State
closed
Author
sed-i
Labels
Created
Updated
Closed

Current evaluation

charmcraft remote-build incorrectly URL-encodes @ as %40 in output filenames, causing naming inconsistencies. The report was closed without resolution or fix, remaining abandoned.

Suggested action:

No scores available.

Issue body

### Bug Description When I remote-build grafana-agent-operator, the resulting filenames look as follows. 1. A literal `%40` is used instead of `@`. 2. Naming schema is inconsistent between log files and charms: - `grafana-agent_ubuntu` vs `grafana_ubuntu` (`-agent` omitted) - dash vs. `@`. ``` grafana-agent_ubuntu%4020.04-arm64.charm grafana-agent_ubuntu%4022.04-amd64.charm grafana-agent_ubuntu%4022.04-arm64.charm grafana-agent_ubuntu%4024.04-amd64.charm grafana-agent_ubuntu%4024.04-arm64.charm grafana_ubuntu-20.04-amd64-2025-10-15T23:33:58.txt grafana_ubuntu-20.04-arm64-2025-10-15T23:33:58.txt grafana_ubuntu-22.04-amd64-2025-10-15T23:33:58.txt grafana_ubuntu-22.04-arm64-2025-10-15T23:33:58.txt grafana_ubuntu-24.04-amd64-2025-10-15T23:33:58.txt grafana_ubuntu-24.04-arm64-2025-10-15T23:33:58.txt ``` ### To Reproduce 1. Clone https://github.com/canonical/grafana-agent-operator/pull/337 2. `charmcraft remote-build --launchpad-accept-public-upload` ### Environment Ubuntu 25.04 charmcraft 3.5.3 rev7286 ### charmcraft.yaml ```yaml # Copyright 2021-2025 Canonical Ltd. # See LICENSE file for licensing details. name: grafana-agent type: charm subordinate: true description: A subordinate charm for Grafana Agent and an essential part of the COS Lite bundle. summary: | This Charmed Operator handles deployment, scaling, configuration, and Day 2 operations specific to Grafana Agent. links: documentation: https://discourse.charmhub.io/t/grafana-agent-docs-index/13452 website: https://charmhub.io/grafana-agent source: https://github.com/canonical/grafana-agent-operator issues: https://github.com/canonical/grafana-agent-operator/issues platforms: ubuntu@20.04:amd64: ubuntu@20.04:arm64: ubuntu@20.04:s390x: ubuntu@20.04:ppc64el: ubuntu@22.04:amd64: ubuntu@22.04:arm64: ubuntu@22.04:s390x: ubuntu@22.04:ppc64el: ubuntu@24.04:amd64: ubuntu@24.04:arm64: ubuntu@24.04:s390x: ubuntu@24.04:ppc64el: assumes: - juju >= 3.6 parts: charm: # Uncomment the commented out portions of this part to build from source. source: . plugin: uv # build-environment: # - UV_NO_BINARY: "true" # - MAKEOPTS: -j$(nproc) # Use all available cores for building pyyaml # override-pull: | # craftctl default # rustup default 1.84 build-packages: # - libffi-dev # - libssl-dev # - libyaml-dev # - pkg-config - git build-snaps: - astral-uv # - rustup override-build: | craftctl default git describe --always > $CRAFT_PART_INSTALL/version cos-tool: plugin: dump source: https://github.com/canonical/cos-tool/releases/latest/download/cos-tool-${CRAFT_ARCH_BUILD_FOR} source-type: file permissions: - path: cos-tool-${CRAFT_ARCH_BUILD_FOR} mode: "755" requires: certificates: interface: tls-certificates limit: 1 optional: true description: | Certificate for the grafana agent server (API endpoint is served on :12345 by default) to use to authenticate to clients, and the CA certificate of the signing CA. We currently assume that the same CA signs all scrape targets (e.g. principal units). juju-info: description: | `juju-info` provides basic compatibility with all charms. If all you want is /var/log logs and node_exporter metrics, this relation will be enough. interface: juju-info scope: container optional: true cos-agent: description: | `cos-agent` is a dedicated relation for the grafana agent machine charm. It will allow you to set up custom scrape jobs, fetch files from arbitrary locations, send alert rules, dashboards, etc. interface: cos_agent scope: container optional: true send-remote-write: interface: prometheus_remote_write optional: true logging-consumer: interface: loki_push_api optional: true grafana-cloud-config: interface: grafana_cloud_config limit: 1 optional: true receive-ca-cert: interface: certificate_transfer optional: true description: | Obtain TLS information (certificate, ca, chain) from another charm. tracing: interface: tracing limit: 1 optional: true provides: grafana-dashboards-provider: interface: grafana_dashboard optional: true peers: peers: interface: grafana_agent_replica config: options: classic_snap: description: | Choose whether to use the classic snap over the strictly confined one. Defaults to "true". type: boolean default: true tls_insecure_skip_verify: description: | Flag to skip the verification for insecure TLS. If "true", self-signed certs can be seamlessly used; this setting will be applied to all of the Agent configurations (Prometheus, Loki). type: boolean default: false global_scrape_timeout: description: > How long to wait before timing out a scrape from a target. Supported units: y, w, d, h, m, s. type: string default: "10s" global_scrape_interval: description: > How frequently should instances be scraped. Supported units: y, w, d, h, m, s. type: string default: "1m" always_enable_zipkin: description: > Force-enable the receiver for the 'zipkin' protocol in Grafana Agent, even if there is no integration currently requesting it. type: boolean default: false always_enable_otlp_grpc: description: > Force-enable the receiver for the 'otlp_grpc' protocol in Grafana Agent, even if there is no integration currently requesting it. type: boolean default: false always_enable_otlp_http: description: > Force-enable the receiver for the 'otlp_http' protocol in Grafana Agent, even if there is no integration currently requesting it. type: boolean default: false always_enable_jaeger_grpc: description: > Force-enable the receiver for the 'jaeger_grpc' protocol in Grafana Agent, even if there is no integration currently requesting it. type: boolean default: false always_enable_jaeger_thrift_http: description: > Force-enable the receiver for the 'jaeger_thrift_http' protocol in Grafana Agent, even if there is no integration currently requesting it. type: boolean default: false tracing_sample_rate_charm: description: > This property defines the percentage of charm traces that are sent to tracing backend. Setting it to 100 would mean all charm traces are kept, setting to 0 means charm traces aren't sent to tracing backend at all. Anything outside of 0-100 range will be normalised to this range by Grafana Agent. type: float default: 100.0 tracing_sample_rate_workload: description: > This property defines the percentage of workload traces that are sent to tracing backend. Setting it to 100 would mean all workload traces are kept, setting to 0 means workload traces aren't sent to tracing backend at all. Anything outside of 0-100 range will be normalised to this range by Grafana Agent. type: float default: 1.0 tracing_sample_rate_error: description: > This property defines the percentage of error traces (regardless of the type) that are sent to tracing backend. Setting it to 100 would mean all error traces are kept, setting to 0 means error traces aren't sent to tracing backend at all. Anything outside of 0-100 range will be normalised to this range by Grafana Agent. type: float default: 100.0 reporting_enabled: description: | Toggle reporting of usage info to grafana, such as enabled feature flags. Ref: https://grafana.com/docs/agent/latest/static/configuration/flags/#report-information-usage type: boolean default: true log_level: description: | Grafana Agent server log level (only log messages with the given severity or above). Must be one of: [debug, info, warn, error]. If not set, the Grafana Agent default (info) will be used. type: string default: info path_exclude: description: > Glob for a set of log files present in `/var/log` that should be ignored by Grafana Agent. For example, `/var/log/**/{app_one,app_two}.log` will result in the agent ignoring both `/var/log/app_one.log` and `/var/log/app_two.log`. Note that the value you provide here is not interpreted as a path, but rather as a glob matcher. Specifically, if you want to exclude logs in the `/var/log/test` folder, you should set the config to `/var/log/test/**`. Ref (__path_exclude__): https://grafana.com/docs/loki/latest/send-data/promtail/scraping/ type: string default: "" forward_alert_rules: description: > Toggle forwarding of alert rules. type: boolean default: true extra_alert_labels: description: > Comma separated key-value pairs of labels to be added to all alerts. This could be useful for differentiating between staging and production environments. type: string ``` ### Relevant log output ```shell Waiting to hear from Launchpad about your decision... Stopped: ubuntu@20.04 (amd64),ubuntu@20.04 (ppc64el),ubuntu@20.04 (s390x); Building: ubuntu@20.04 (arm64), ubuntu@22.04 (amd64), ubuntu@22.04 (arm64), ubuntu@22.04 (ppc64el), ubuntu@22.04 (s3\u2026 / (StoppedBuild completed.rtifacts... :: Downloading 5 files (<---) Log files: grafana_ubuntu-24.04-amd64-2025-10-15T23:33:58.txt, grafana_ubuntu-24.04-arm64-2025-10-15T23:33:58.txt, grafana_ubuntu-24.04-ppc64el-2025-10-15T23:33:58.txt, grafana_ubuntu-24.04-s390x-2025-10-15T23:33:58.txt Artifacts: grafana-agent_ubuntu%4020.04-arm64.charm, grafana-agent_ubuntu%4022.04-amd64.charm, grafana-agent_ubuntu%4022.04-arm64.charm, grafana-agent_ubuntu%4024.04-amd64.charm, grafana-agent_ubuntu%4024.04-arm64.charm ```

Evaluation history

Date Model Scores Action Summary
qwen/qwen3.6-35b-a3b charmcraft remote-build incorrectly URL-encodes @ as %40 in output filenames, causing naming inconsistencies. The report was closed without resolution or fix, remaining abandoned.
qwen/qwen3.6-35b-a3b Closed without resolution or comments. The report detailed charmcraft remote-build incorrectly URL-encoding the @ symbol as %40 in filenames and inconsistent naming between log files and charms.
qwen/qwen3.6-35b-a3b Closed without resolution or comments, indicating the issue was abandoned. The bug reported charmcraft remote-build incorrectly URL-encoding @ as %40 in generated filenames.
qwen3.6-35b-a3b-mtp-q6 Closed without resolution. charmcraft remote-build incorrectly URL-encodes @ as %40 in generated filenames and shows inconsistent naming. The issue was abandoned due to inactivity, with no comments or fixes provided.

Update history

No update history recorded yet.

Related issues

Issue Project State Summary Similarity
#2598 Remote build fails when getting project name charmcraft closed Closed without resolution. The charmcraft remote-build AttributeError persisted in later versions, with multiple users reporting ongoing CI failures and no fix provided.
76%