https://blue-build.org/ logo
Installing a package from a copr using the dnf mod...
# questions
l
Copy code
Updating and loading repositories:
l/leloublue:latest => #53 14.32 Repositories loaded.
l/leloublue:latest => #53 14.35 Failed to resolve the transaction:
l/leloublue:latest => #53 14.35 Problem 1: conflicting requests
l/leloublue:latest => #53 14.35   - nothing provides libtomlplusplus.so.3()(64bit) needed by hyprland-0.52.2-2.fc43.x86_64 from copr:copr.fedorainfracloud.org:lionheartp:Hyprland
l/leloublue:latest => #53 14.35 You can try to add to command line:
l/leloublue:latest => #53 14.35   --skip-broken to skip uninstallable packages
l/leloublue:latest => #53 14.36 External command had a non-zero exit code
But the mentioned packages are present in the fedora repos, and I created a distrobox fedora container and enabled the copr and tried installing the "hyprland" and "hyprland-guiutils" packages from the copr and it worked, but in bluebuild it doesn't My config is like this
Copy code
yaml
modules:
  - type: dnf
    source: ghcr.io/blue-build/modules/dnf:dnf-module
    repos:
      copr:
         - lionheartp/Hyprland 
    install:
      packages:
       - repo: copr:copr.fedorainfracloud.org:lionheartp:Hyprland
         packages:
          - hyprland
          - hyprland-plugins
          - hyprland-contrib
          - hyprland-guiutils
          - hyprlock
          - hypridle
          - hyprpolkitagent
          - hyprpicker
          - hyprsysteminfo
          - hyprsunset
          - aww
(There also are other coprs and packages so that's why I am filtering by the repo here)
a
message has been deleted
a
this might help, here is my recipe that works :
Copy code
- type: dnf
    repos:
      cleanup: true
      copr:
        - lihaohong/yazi
        - alternateved/eza
        - atim/starship
        - dejan/rpms
        - peterwu/rendezvous
        - sneexy/zen-browser
        - lilay/topgrade
        - lilay/origami-linux
        - varlad/zellij
        - dejan/lazygit
      files:
        - https://pkg.cloudflareclient.com/cloudflare-warp-ascii.repo
      keys:
        - https://pkg.cloudflareclient.com/pubkey.gpg
    install:
      packages:
        - origami-update-applet
        - oru
        - fish
        - lazygit
        - procs
l
It seems that not filtering by repository works
that's weird
x
sometimes copr packages rely in packages from outside the copr, which seems to break configs like this
b
So, I haven’t yet experimented with this pattern using bluebuild yet (it definitely can/should be added to the dnf module imo), but you can basically filter by repo without excluding dependencies from default repos if you manually use a couple of funny dnf commands in a row. Let me find my favorite example
I meant to mention this under #1198292321876316264 a few weeks ago, maybe I did and forgot. https://github.com/zirconium-dev/zirconium/blob/main/build_files/00-base.sh#L10-L12
Copy code
bash
dnf config-manager addrepo --from-repofile=https://pkgs.tailscale.com/stable/fedora/tailscale.repo
dnf config-manager setopt tailscale-stable.enabled=0
dnf -y install --enablerepo='tailscale-stable' tailscale
This will install Tailscale from their repo, while only enabling it for the specific transaction, and I think this is probably closer to what is usually intended when filtering by repo in the dnf module… Keep in mind it’ll take dependencies from any other enabled repos, not just the default one, but the repo you want to use for that package will only be enabled for that transaction.
x
if there's another repo with higher priority that offers the same package, this command wont use the defined repo, right?
b
Perhaps could use a flag to override the priority of the given repo, then?
dnf -y install --enablerepo='tailscale-stable'  --setopt=tailscale-stable.priority=1 tailscale