paru icon indicating copy to clipboard operation
paru copied to clipboard

[BUG] Unexpected dependency handling during build only without installation

Open MoYingJi opened this issue 7 months ago • 1 comments

Affected Version

paru v2.0.4 - libalpm v15.0.0

Description

When using paru -B . to build without installation, runtime dependencies will still be handled and installed

Have you checked previous issues? Yes, I have checked the previous issues, please forgive my poor English, I used a translator, but I have already checked keywords such as 'build' or 'depend'

Output

Include the FULL output of any relevant commands/configs Don't cut parts of the input always include the FULL thing

Firstly, I created a PKGBUILD for testing purposes

Testing PKGBUILD
pkgname=test
pkgver=1
pkgrel=1
arch=('any')
depends=(a)

package() {
	depends+=(b)
}

Next, execute in this directory: paru -B . (I did not use -Bi here, which means I did not install it but only built it)

Output
:: 正在为 ./test 生成 .SRCINFO……
:: 正在解析依赖关系……
错误: 无法找到所有需要的软件包:
    b(被 test 需要)

Please allow me to add environment variables before the previous command LANG=en_US.UTF-8

:: Generating .SRCINFO for ./test...
:: Resolving dependencies...
error: could not find all required packages:
    b (wanted by: test)

From here, it can be seen that b, which is only a runtime dependency, is still being processed But when I run makepkg -s, b will not be processed (This is just an example because there are no packages a and b, so it is impossible to pass)

paru.conf and pacman.conf are usually always relevant
#
# $PARU_CONF
# /etc/paru.conf
# ~/.config/paru/paru.conf
#
# See the paru.conf(5) manpage for options

#
# GENERAL OPTIONS
#
[options]
PgpFetch
Devel
Provides
DevelSuffixes = -git -cvs -svn -bzr -darcs -always -hg -fossil
#AurOnly
#BottomUp
#RemoveMake
#SudoLoop
#UseAsk
#SaveChanges
#CombinedUpgrade
#CleanAfter
#UpgradeMenu
#NewsOnUpgrade

#LocalRepo
#Chroot
#Sign
#SignDb
#KeepRepoCache

SkipReview

#
# Binary OPTIONS
#
#[bin]
#FileManager = vifm
#MFlags = --skippgpcheck
#Sudo = doas



#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives

#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir     = /
#DBPath      = /var/lib/pacman/
#CacheDir    = /var/cache/pacman/pkg/
#LogFile     = /var/log/pacman.log
#GPGDir      = /etc/pacman.d/gnupg/
#HookDir     = /etc/pacman.d/hooks/
HoldPkg     = pacman glibc
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto

# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg   =
#IgnoreGroup =

#NoUpgrade   =
#NoExtract   =

# Misc options
#UseSyslog
Color
#NoProgressBar
CheckSpace
VerbosePkgLists
ParallelDownloads = 7
DownloadUser = alpm
#DisableSandbox

# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
SigLevel    = Required DatabaseOptional
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required

# NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Arch Linux
# packagers with `pacman-key --populate archlinux`.

#
# REPOSITORIES
#   - can be defined here or included from another file
#   - pacman will search repositories in the order defined here
#   - local/custom mirrors can be added here or in separate files
#   - repositories listed first will take precedence when packages
#     have identical names, regardless of version number
#   - URLs will have $repo replaced by the name of the current repo
#   - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
#       [repo-name]
#       Server = ServerName
#       Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#

# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.

#[core-testing]
#Include = /etc/pacman.d/mirrorlist

[core]
Include = /etc/pacman.d/mirrorlist.official

#[extra-testing]
#Include = /etc/pacman.d/mirrorlist

[extra]
Include = /etc/pacman.d/mirrorlist.official

# If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repositories as required here.

#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist

[multilib]
Include = /etc/pacman.d/mirrorlist.official

# An example of a custom package repository.  See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs

[archlinuxcn]
Include = /etc/pacman.d/mirrorlist.archlinuxcn

MoYingJi avatar May 28 '25 18:05 MoYingJi

I have found some related problems these days when i tried to install vmware-workstation

When i use paru -B . it outputs correct dependency,vmware-keymaps is included

Image

but if i try to use paru -S vmware-workstation, the dependencies are wrong(vmware-keymaps is not in the list)

Image

yakural avatar Jul 16 '25 13:07 yakural