-
Notifications
You must be signed in to change notification settings - Fork 203
Description
Checklist
- [ x] I have searched the issue tracker for relevant or duplicate issues.
Erroneous Behavior
I cannot upgrade packages on homebrew via Topgrade.
Expected Behavior
Homebrew packages should be updated.
Steps to reproduce
Simply run topgrade.
Possible Cause (Optional)
Here is the output, maybe my homebrew version got corrupted somehow?
── 21:30:06 - Brew (sudo as user 'linuxbrew') ──────────────────────────────────
==> Updating Homebrew...
Already up-to-date.
Brew Cask failed:
0: The output of `brew --version` changed: Invalid version. This is not your fault, this is an issue in Topgrade. Please open an issue at: https://github.com/topgrade-rs/topgrade/issues/new?template=bug_report.md
1: unexpected character '>' while parsing major version number
Problem persists without calling from topgrade
- Yes
- [X ] No
Works without topgrade.
Ran through Remote Execution
- Yes
- [X ] No
Configuration file (Optional)
# Include any additional configuration file(s)
# [include] sections are processed in the order you write them
# Files in $CONFIG_DIR/topgrade.d/ are automatically included before this file
[include]
# paths = ["/etc/topgrade.toml"]
[misc]
# On Unix systems, Topgrade should not be run as root, it
# will run commands with sudo or equivalent where needed.
# Set this to true to suppress the warning and confirmation
# prompt if Topgrade detects it is being run as root.
# (default: false)
# allow_root = false
# Run `sudo -v` to cache credentials at the start of the run
# This avoids a blocking password prompt in the middle of an unattended run
# (default: false)
# pre_sudo = false
# Sudo command to be used
# sudo_command = "sudo"
# Disable specific steps - same options as the command line flag
# disable = ["system", "emacs"]
disable = ["vcpkg", "yarn", "node", "pip3", "waydroid", "powershell", "composer", "containers", "vscode", "vscodium"]
# Ignore failures for these steps
# ignore_failures = ["powershell"]
# List of remote machines with Topgrade installed on them
# remote_topgrades = ["toothless", "pi", "parnas"]
# Path to Topgrade executable on remote machines
# remote_topgrade_path = ".cargo/bin/topgrade"
# Arguments to pass to SSH when upgrading remote systems
# ssh_arguments = "-o ConnectTimeout=2"
# Arguments to pass tmux when pulling Repositories
# tmux_arguments = "-S /var/tmux.sock"
# Do not set the terminal title (default: true)
# set_title = true
# Display the time in step titles (default: true)
# display_time = true
# Don't ask for confirmations (no default value)
# assume_yes = true
# Do not ask to retry failed steps (default: false)
# no_retry = true
# Show the reason for skipped steps (default: false)
# This has no effect if the "only" option is specified
# show_skipped = true
# Run inside tmux (default: false)
# run_in_tmux = true
# Changes the way topgrade interacts with
# the tmux session, creating the session
# and only attaching to it if not inside tmux
# (default: "attach_if_not_in_session", allowed values: "attach_if_not_in_session", "attach_always")
# tmux_session_mode = "attach_if_not_in_session"
# Cleanup temporary or old files (default: false)
# cleanup = true
# Send a notification for every step (default: false)
# notify_each_step = false
# Skip sending a notification at the end of a run (default: false)
# skip_notify = true
# The Bash-it branch to update (default: "stable")
# bashit_branch = "stable"
# Run specific steps - same options as the command line flag
# only = ["system", "emacs"]
# Whether to self update
#
# this will be ignored if the binary is built without self update support
#
# available also via setting the environment variable TOPGRADE_NO_SELF_UPGRADE)
# no_self_update = true
# Extra tracing filter directives
# These are prepended to the `--log-filter` argument
# See: https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives
# log_filters = ["topgrade::command=debug", "warn"]
# Whether to show a distribution-specific summary if applicable, e.g. listing
# Pacman backup configuration files (*.pacsave and *.pacnew)
# (default: true)
# show_distribution_summary = false
# Commands to run before anything
[pre_commands]
# "Emacs Snapshot" = "rm -rf ~/.emacs.d/elpa.bak && cp -rl ~/.emacs.d/elpa ~/.emacs.d/elpa.bak"
# Commands to run after anything
[post_commands]
# "Emacs Snapshot" = "rm -rf ~/.emacs.d/elpa.bak && cp -rl ~/.emacs.d/elpa ~/.emacs.d/elpa.bak"
# Custom commands
[commands]
# "Python Environment" = "~/dev/.env/bin/pip install -i https://pypi.python.org/simple -U --upgrade-strategy eager jupyter"
# "Custom command using interactive shell (unix)" = "-i vim_upgrade"
[python]
# enable_pip_review = true ###disabled by default
# enable_pip_review_local = true ###disabled by default
# enable_pipupgrade = true ###disabled by default
# pipupgrade_arguments = "-y -u --pip-path pip" ###disabled by default
# For the poetry step, by default, Topgrade skips its update if poetry is not
# installed with the official script. This configuration entry forces Topgrade
# to run the update in this case.
#
# (default: false)
# poetry_force_self_update = true
#[conda]
# Additional named conda environments to update (`conda env update -n env_name`)
# env_names = [
# "Toolbox",
# "PyTorch"
# ]
# Additional conda environment paths to update (`conda env update -p env_path`)
# env_paths = [
# "~/webserver/.conda/",
# "~/experiments/.conda/"
# ]
[composer]
# self_update = true
[brew]
# For the BrewCask step
# If `Repo Cask Upgrade` exists, then use the `-a` option.
# Otherwise, use the `--greedy` option.
# greedy_cask = true
# For the BrewCask step
# If `Repo Cask Upgrade` does not exist, then use the `--greedy_latest` option.
# NOTE: the above entry `greedy_cask` contains this entry, though you can enable
# both of them, they won't clash with each other.
# greedy_latest = true
# For the BrewCask step
# If `Repo Cask Upgrade` does not exist, then use the `--greedy_auto_updates` option.
# NOTE: the above entry `greedy_cask` contains this entry, though you can enable
# both of them, they won't clash with each other.
# greedy_auto_updates = true
# For the BrewFormula step
# Execute `brew autoremove` after the step.
# autoremove = true
# For the BrewFormula step
# Upgrade formulae built from the HEAD branch; `brew upgrade --fetch-HEAD`
# fetch_head = true
[linux]
# Arch Package Manager to use.
# Allowed values:
# autodetect, aura, garuda_update, pacman, pamac, paru, pikaur, trizen, yay
# arch_package_manager = "pacman"
# Arguments to pass yay (or paru) when updating packages
# yay_arguments = "--nodevel"
# Arguments to pass dnf when updating packages
# dnf_arguments = "--refresh"
# aura_aur_arguments = "-kx"
# aura_pacman_arguments = ""
# garuda_update_arguments = ""
# show_arch_news = true
# trizen_arguments = "--devel"
# pikaur_arguments = ""
# pamac_arguments = "--no-devel"
# enable_tlmgr = true
# emerge_sync_flags = "-q"
# emerge_update_flags = "-uDNa --with-bdeps=y world"
# redhat_distro_sync = false
# suse_dup = false
# rpm_ostree = false
# For Fedora/CentOS/RHEL Atomic variants, if `bootc` is available and this configuration entry is set to true, use
# it to do the update - Will also supersede rpm-ostree if enabled
# (default: false)
# bootc = false
# nix_arguments = "--flake"
# nix_env_arguments = "--prebuilt-only"
# Extra Home Manager arguments
# home_manager_arguments = ["--flake", "file"]
#[mandb]
# Enable the mandb step (to update manual entries).
# Mandb is updated in the background by a service on most systems by default.
# (default: false)
# enable = true
[git]
# How many repos to pull at max in parallel
# max_concurrency = 5
# Additional git repositories to pull
# repos = [
# "~/src/*/",
# "~/.config/something"
# ]
# Don't pull the predefined git repos
# pull_predefined = false
# Arguments to pass Git when pulling Repositories
# arguments = "--rebase --autostash"
[windows]
# Manually select Windows updates
# accept_all_updates = false
# Controls whether to automatically reboot the computer when updates are
# installed that request it. (default: "no", allowed values: "yes", "no", "ask")
# updates_auto_reboot = "yes"
# open_remotes_in_new_terminal = true
# wsl_update_pre_release = true
# wsl_update_use_web_download = true
# The default for winget_install_silently is true,
# this example turns off silent install.
# winget_install_silently = false
# Causes Topgrade to rename itself during the run to allow package managers
# to upgrade it. Use this only if you installed Topgrade by using a package
# manager such as Scoop or Cargo
# self_rename = true
# Use sudo to elevate privileges for the Windows Package Manager (winget)
# Only use this option if you want to run the Winget step in sudo-mode.
# Running winget in sudo-mode is generally not recommended, as not every
# package supports installing / upgrading in sudo-mode and it may cause issues
# with some packages or may even cause the Winget-step to fail.
# If any problems occur, please try running Topgrade without this option first
# before reporting an issue.
# (default: false)
# winget_use_sudo = true
[npm]
# Use sudo if the NPM directory isn't owned by the current user
# use_sudo = true
[yarn]
# Run `yarn global upgrade` with `sudo`
# use_sudo = true
[deno]
# Upgrade deno executable to the given version.
# version = "stable"
[vim]
# For `vim-plug`, execute `PlugUpdate!` instead of `PlugUpdate`
# force_plug_update = true
[firmware]
# Offer to update firmware; if false just check for and display available updates
# upgrade = true
[vagrant]
# Vagrant directories
# directories = []
# power on vagrant boxes if needed
# power_on = true
# Always suspend vagrant boxes instead of powering off
# always_suspend = true
[flatpak]
# Use sudo for updating the system-wide installation
# use_sudo = true
[distrobox]
# use_root = false
# containers = ["archlinux-latest"]
[containers]
# Specify the containers to ignore while updating (Wildcard supported)
# ignored_containers = ["ghcr.io/rancher-sandbox/rancher-desktop/rdx-proxy:latest", "docker.io*"]
# Specify the runtime to use for containers (default: "docker", allowed values: "docker", "podman")
# runtime = "podman"
[lensfun]
# If disabled, Topgrade invokes `lensfun‑update‑data` without root privilege,
# then the update will be only available to you. Otherwise, `sudo` is required,
# and the update will be installed system-wide, i.e., available to all users.
# (default: false)
# use_sudo = false
[julia]
# If disabled, Topgrade invokes julia with the --startup-file=no CLI option.
#
# This may be desirable to avoid loading outdated packages with "using" directives
# in the startup file, which might cause the update run to fail.
# (default: true)
# startup_file = true
[zigup]
# Version strings passed to zigup.
# These may be pinned versions such as "0.13.0" or branches such as "master".
# Each one will be updated in its own zigup invocation.
# (default: ["master"])
# target_versions = ["master", "0.13.0"]
# Specifies the directory that the zig files will be installed to.
# If defined, passed with the --install-dir command line flag.
# If not defined, zigup will use its default behaviour.
# (default: not defined)
# install_dir = "~/.zig"
# Specifies the path of the symlink which will be set to point at the default compiler version.
# If defined, passed with the --path-link command line flag.
# If not defined, zigup will use its default behaviour.
# This is not meaningful if set_default is not enabled.
# (default: not defined)
# path_link = "~/.bin/zig"
# If enabled, run `zigup clean` after updating all versions.
# If enabled, each updated version above will be marked with `zigup keep`.
# (default: false)
# cleanup = false
[vscode]
# If this is set and is a non-empty string, it specifies the profile the
# extensions should be updated for.
# (default: this won't be set by default)
# profile = ""
#[pixi]
# Show the release notes of the latest pixi release
# during the pixi step
# (default: false)
# include_release_notes = false
#[doom]
# If this is set to true, the `--aot` flag is added to `doom upgrade`,
# which enables ahead-of-time native compilation of packages.
# (default: false)
# aot = true
#[rustup]
# If set, updates only these channels.
# (default: [] (all channels))
# channels = ["stable"]Additional Details
-
Operation System/Version
Operating System: Fedora Linux 43
KDE Plasma Version: 6.5.3
KDE Frameworks Version: 6.20.0
Qt Version: 6.10.1
Kernel Version: 6.17.9-300.fc43.x86_64 (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 5800X3D 8-Core Processor
Memory: 32 GiB of RAM (31.2 GiB usable)
Graphics Processor: AMD Radeon RX 7800 XT -
Installation
The copr repo found here. -
Topgrade version (
topgrade -V)
topgrade 16.6.1
Verbose Output (topgrade -v)
Relevant linuxbrew stuff here.
── 21:33:46 - Brew (sudo as user 'linuxbrew') ────────────────────────────────── DEBUG Executing command `/usr/bin/sudo -H -u linuxbrew /home/claire/.linuxbrew/bin/brew update` ==> Updating Homebrew... Already up-to-date. DEBUG Step "Brew Cask" DEBUG Detected "/home/claire/.linuxbrew/bin/brew" as "brew" DEBUG Executing command `/home/claire/.linuxbrew/bin/brew --version` DEBUG Step "Brew Cask" failed: 0: \x1b[91mThe output of `brew --version` changed: Invalid version. This is not your fault, this is an issue in Topgrade. Please open an issue at: https://github.com/topgrade-rs/topgrade/issues/new?template=bug_report.md\x1b[0m 1: \x1b[91munexpected character '>' while parsing major version number\x1b[0mLocation:
\x1b[35msrc/steps/os/unix.rs\x1b[0m:\x1b[35m395\x1b[0m
Brew Cask failed:
0: The output ofbrew --versionchanged: Invalid version. This is not your fault, this is an issue in Topgrade. Please open an issue at: https://github.com/topgrade-rs/topgrade/issues/new?template=bug_report.md
1: unexpected character '>' while parsing major version numberLocation:
src/steps/os/unix.rs:395