Coder Social home page Coder Social logo

rmarquis / pacaur Goto Github PK

View Code? Open in Web Editor NEW
796.0 27.0 113.0 1.96 MB

[unmaintained] An AUR helper that minimizes user interaction

Home Page: https://bbs.archlinux.org/viewtopic.php?pid=1755144#p1755144

License: ISC License

Shell 98.40% Makefile 1.60%
shell aur helper archlinux arch pacman aur-helper pacaur

pacaur's Introduction

NAME

pacaur - an AUR helper that minimizes user interaction

SYNOPSIS

Usage: pacaur <operation> [ options ] [ target(s) ]

DESCRIPTION

Pacaur is an Arch User Repository (AUR) helper aiming at speed and simplicity and is designed to minimize user prompt interaction. It uses an uncluttered interface and makes use of the full secured RPC interface to solve the dependency tree. It will also automatically prompt for sudo access when needed. It is built upon the well designed cower and expac C backends.

Invoking pacaur consists of supplying an operation, any applicable options, and usually one or more targets. A target is usually a package name or a search string.

USERBASE TARGET

Pacaur is targeted at advanced users who want some degree of automation for repetitive tasks. As such, the user is expected to be familiar with the AUR manual build process with makepkg and its configuration options, as well as being knowledgeable about sudo and gpg configuration.

Two sets of command line options are provided: commands which call the pacman binary and extend it with AUR functions (-S, -Ss, -Si, -Sw, -Su, -Qu, -Sc, -Scc), and commands which are AUR specific (sync, search, info, buildonly, upgrade, check, clean, cleanall). As such, pacaur can be used by users who prefer to have a single tool to manage the official and AUR repositories, or by users who prefer to keep their AUR frontend separated from pacman.

OPERATIONS

Pacman extension operations

-S, -Ss, -Si, -Sw, -Su, -Qu, -Sc, -Scc

Pacaur wraps all pacman operations and by default extends respectively its sync, search, info, download only, system upgrade, upgrades check, clean and clean all functions to the AUR. This extension behavior is optional and can be disabled with the fallback variable in the config file. Pacaur will also pass any other pacman operations and their related options to the pacman binary.

AUR specific operations

sync

Clone build files, build and install target(s). Missing dependencies will be automatically installed as needed.

Search for packages with the target(s) as the search term(s). Queries with multiple targets will return the result of the intersection of all query results. Extended regex patterns as defined by POSIX are allowed. The output will display the name, version, votes and popularity values of each package. The flagged status will also be indicated by a <!> symbol or a colored version string if colored output is enabled.

info

Show info for target(s).

buildonly

Clone build files and build target(s). Missing dependencies will be installed as needed for the build process, and removed automatically afterwards.

upgrade

Update foreign packages in the AUR. Without any arguments, all manually installed packages will be upgraded. If target(s) are supplied, only those packages will be upgraded.

check

Check foreign packages for upgrades in the AUR. Without any arguments, all manually installed packages will be checked. If target(s) are supplied, only those packages will be checked.

clean

Clean foreign packages and clones. Offer to remove all non locally installed built packages from defined PKGDEST cache, all non development files from defined SRCDEST cache, and all uninstalled clones from AUR clones directory. If target(s) are supplied, only those specific clones will be removed.

cleanall

Clean all foreign packages and clones. Offer to remove all built packages from defined PKGDEST, all sources in defined SRCDEST, and all local clones from clones directory.

General operations

-v, --version

Display version and quit.

-h, --help

Display the help message and quit.

OPTIONS

Pacman extension options

-a, --aur

When used with pacman extended operations, only search, build, install, upgrade or clean target(s) from the AUR. When combined with -Syu, only the -Sy operation is run for the repositories.

-r, --repo

When used with pacman extended operations, only search, build, install, upgrade or clean target(s) from the repositories.

General options

-e, --edit

Edit build files when cloning or building target(s). Overrides the displaybuildfiles config option and always fully shows the build files. Can also be used as a standalone command.

-q, --quiet

Show less information for search and query operations. Search will only show package names and not version, group, and description information.

--devel

When used with upgrade and check operations, also consider AUR development packages. Supported are cvs, svn, git, hg, bzr and darcs development packages, as well as daily and nightly build packages.

--foreign

When used with buildonly, sync and upgrade operations, also consider already installed foreign dependencies when solving the dependency tree.

--ignore target(s)

Ignore a target upgrade. Can be used more than once. Also accepts a comma delimited list as a single argument. Packages listed in pacman and cower's IgnorePkg directive are honored.

--needed

Do not reinstall target(s) that are already up-to-date. The build of development packages that are found up-to-date after the source checkout will be skipped. Supported are svn, git, hg and bzr development packages, as well as daily and nightly build packages.

--noconfirm

Perform commands without confirmation from the user.

--noedit

Perform commands without editing any installation files. Overrides the --edit option.

--rebuild

Always rebuild packages regardless of any existing file in $PKGDEST directory, and regardless of up-to-date status of development packages.

--silent

Silence output. This will send the output of each packaging functions to text files in the clone directory named pkgname-pkgver-pkgrel-arch-function.log. Additional pacman output for providers and cached packages installation will also be hidden.

Search options

--by <FIELD>

When searching the AUR, search by FIELD where FIELD is name, name-desc, or maintainer to search for packages by their name, name and description, or by the package maintainer, respectively. The default is to search by name-desc.

--ignore-ood, --no-ignore-ood

When searching the AUR, ignore all results marked as out of date or do not ignore results marked as out of date, respectively. The default is to not ignore results marked as out of date. This can be changed with the IgnoreOOD option in the cower config file.

--literal

When searching the AUR, disable regex search and interpret target as a literal string.

--sort <KEY>, --rsort <KEY>

When searching the AUR, sort the results in ascending or descending order, respectively, by KEY where KEY is name, votes or popularity.

Other options

--domain <FQDN>

Point at a domain other than the default aur.archlinux.org.

CONFIG FILE

system config

Pacaur honors a system-wide config file which will be looked for first at

$XDG_CONFIG_DIRS/pacaur/config

and falling back to

/etc/xdg/pacaur/config
user config

User-defined configuration files overriding the general settings will be looked for first at

$XDG_CONFIG_HOME/pacaur/config

and falling back to

$HOME/.config/pacaur/config
other config

In addition, pacaur fully honors cower's config file. See cower(1).

CONFIG OPTIONS

The available options are:

editor

Define the editor. Default is $VISUAL, with a fallback on $EDITOR and nano.

displaybuildfiles

Display PKGBUILD and install script viewing prompt. Possible values are full to always display the full build files, diff to only display the difference since last build, and none to disable the viewing prompt. Default is diff.

fallback

Extend pacman commands to the AUR. Default is true.

silent

Enable silent output. The makepkg output will be collected in the clone directory or the $LOGDEST directory should any error occur. Default is false.

sortby

When searching the AUR, sort the results by name, number of votes or popularity. Default is popularity.

sortorder

When searching the AUR, sort the results in ascending or descending order. Default is descending.

sudoloop

Prevent sudo timeout. This option overrides the system-wide passwd_timeout sudo configuration and refreshes the sudo timestamp automatically in a loop when building packages. Default is true.

ENVIRONMENT

AURDEST

Determines where the packages build files (PKGBUILD, .SRCINFO and install script files) will be cloned. The -Sc and -Scc clean operations allow to remove the untracked cloned files and the non locally installed cloned files, and all cloned files, respectively.

If this environment variable is not defined, the clone directory will be set to

$XDG_CACHE_HOME/pacaur

with a fall back to

$HOME/.cache/pacaur

In addition, makepkg environment variables are fully honored. See makepkg(8). In particular, the following variables are useful:

PKGDEST

Determines where the built packages will be stored. If using the existing /var/cache/pacman/pkg pacman cache directory, ensure your user has proper write permissions. Additionally, if added to the CacheDir path option of pacman.conf, the -Sc and -Scc clean operations will enable removal of non locally installed cached files and all cached files, respectively.

SRCDEST

Determines where the source of packages will be stored. This will speed up the upgrade of development packages. The -Sc and -Scc clean operations allow to remove the non development packages source files and all source files, respectively.

LOGDEST

Determines where the build logs will be stored. By default, the --silent option will write build logs in the clone directory if the build fails, but will remove them if the build succeeds.

BUILDDIR

Determines where the packages will be built. By default, build will happen in the defined clone directory, but build speed can be improved by using /tmp located in volatile memory. This is however not recommended if big packages need to be built on a low-memory machine.

NOTES

sudo configuration

To be used with minimal password prompting, sudo should be configured accordingly to allow sudo access. See sudoers(5). If you disable the sudoloop config option, you might also want to disable the passwd_timeout sudo parameter to avoid password prompt timeout.

pacman misc options

Miscellaneous options enabled in pacman.conf are taken into account. Thus, colored output can be enabled with the Color option, while a detailed interface displaying name, version and size of packages formatted as a table is available through the VerbosePkgLists option.

build files comparison

To allow build files comparison, the displaybuildfiles default config option is set to diff. Although the clone directory (set by default to $XDG_CACHE_HOME/pacaur) can be changed through the alternative $AURDEST environment variable, it should always be set to a persistent location.

fallback

By default, any operation will be applied on the binary repositories, then the AUR if necessary. This behavior is optional and can be disabled with the fallback config option. When disabled, any operation will be restricted to the binary repositories similarly to pacman, while AUR operations can be applied explicitly with the --aur option.

interactive PKGBUILDs

Packages requiring user input while building are not supported and might fail to install properly. There is currently no official directive about these interactive PKGBUILDs, but some of the official pacman developers expressed the opinion that PKGBUILDs should always provide default compilation options.

host name error

If a lot of "Could not connect to the AUR" and "Timeout was reached" messages are displayed while searching or requesting info for packages despite the internet connection working correctly, ensure your local DNS server is correctly configured to improve name lookups. Using Google's primary DNS (8.8.8.8 and 8.8.4.4) might also help.

SEE ALSO

cower(1), pacman(8), makepkg(8), sudoers(5)

AUTHOR

Remy Marquis <[email protected]>

If you feel great pity for the present maintainer that has to constantly cope with users that don't want to read man pages and refuse to take responsibility for their own system, you can send me funny cat pictures. Alternatively, you can send a donation via PayPal to the above email address.

I would also suggest to donate to a charitable organization of your choice should you believe that your money could make a bigger difference there. Thank you!

Absolutely no support is provided, unless you are ready to pay for it.

All credits go to all direct or indirect contributors. Many thanks to all of you!

TRANSLATORS

[ca] - Català - Alex "alexhenrie" Henrie

[da] - Dansk - Filip "filipkemuel" Kemuel

[de] - Deutsch - Marco "BigBoot" Kirchner, "HerrNieschnell", "pszalanski", Stefan "rumpelsepp" Tatschner, Tilman "Tblue" Blumenbach

[es] - Español - Germán "gosella" Osella Massa, Ismael "ChuckDaniels87" González, Pablo "jristz" Lezaeta Reyes

[fi] - Suomi - "durazell"

[fr] - Français - "spider-mario", "Neitsab", Antoine "Nevax07" Gravelot

[hu] - Magyar - "avelkei"

[it] - Italiano - Demenico "NoMore201" Lezzi, Giovanni "ItachiSan" Santini

[ja] - ��� - Colin "fosskers" Woodbury, TSUYUSATO "MakeNowJust" Kitsune

[nl] - Nederlands - "Yoshi2889", Willem "14mRh4X0r" Mulder

[pl] - Polski - Tomasz "Ludvick" Niedzielski

[pt] - Português - Thiago "thiagowfx" Barroso Perrotta, Rafael "rccavalcanti" Cavalcanti

[ru] - Р���кий - "kyak"

[sk] - Sloven�ina - Pavol "pakapusta" Kapusta, Juraj "DoctorJellyface" Fiala

[sl] - Slovenš�ina - Žan "tofiffe" Skamlji�

[sr] - С�п�ки / srpski - Slobodan "Faenriis" Terzi�

[tr] - Türkçe - Volkan "wakeup" Gezer

[zh_CN] - ��中� - "Victorique "victoriqueko" Ko, kizayoi"

pacaur's People

Contributors

14mrh4x0r avatar abouvier avatar alexhenrie avatar berz avatar blueyed avatar cdown avatar filipkemuel avatar goll avatar gosella avatar grawity avatar ismaelgv avatar itachisan avatar jotarandom avatar jurf avatar kyak avatar lucy avatar makenowjust avatar mrshu avatar nanosector avatar pakapusta avatar paradoxxxzero avatar pszalanski avatar rc2dev avatar rmarquis avatar rumpelsepp avatar tblue avatar tumido avatar vgezer avatar waldyrious avatar zskamljic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pacaur's Issues

/usr/bin/pacaur .... Permission denied

When running pacaur with an empty $EDITOR you get a confusing error about permissions denied. A workaround is to define $EDITOR.

Example output:
pacaur -S pacman-color
:: Package(s) pacman-color not found in repositories, trying aur...

AUR Targets (1): pacman-color

Proceed with installation? [Y/n]

:: Edit pacman-color PKGBUILD? [Y/n]

/usr/bin/pacaur: line 206: /tmp/pacaurtmp-teh/pacman-color/PKGBUILD: Permission denied
:: Could not open pacman-color PKGBUILD

add reinstall and outdated warning

Add reinstall and outdated warning. Both rely on a RPC call to the AUR and might be combined for speed up.
Implement either with cower or jshon.

store cache packages

after pacaur install a aur package, I'd like to put the package 'foo_x86-64.pkg.tar.xz` into '/var/cache/pacman/pkg', so that I can keep a copy of packages. for example, when I copy a whole system from one computer to another, I can use /var/cache/pacman/pkg, instead of download all packages from Internet(which is slow).

something like this:

pacaur -S pacaur --cache 

# /etc/pacaur.conf
cache = false  # cache the package to /var/cache/pacman/pkg default is false

use paccache instead of inhouse code

Pacman 4 will be released with an additional auxiliary tool, paccache. Replacing pacaur's cache handling code might prove to be more flexible, less prone to bugs while easing future pacaur maintenance.

allow pacmanBin preferred choice

Allow pacmanBin preferred choice in order to use tools such as pacman2aria/powerpill-light that allows parallel and segmented downloads.

See if one could use or adapt such a tool to pacaur easily, and allows to wrap a wrapper as pacman binary:

pacaur pacmanBin var -> pacman2aria2 -> pacman-color  

add a full bash dependency solver option

In some very rare case, bash dependency solving used when carchmagic is enabled might fail.
The (partial) bash solver implemented in pacaur handles case where $CARCH magic bash is used in first-level dependency, while subsequent dependency level are handle by cower.

This partial bash solver implementation might fail when

  • the user install an AUR package that has an AUR dependency that uses $CARCH bash magic, and
  • that AUR dependency isn't correctly handled by cower.

Also, there is no $CARCH bash magic check done on subsequent dependency level. If an error occurs, the user won't know what's happening.

This is a theoretical problem, as I'm yet to find a real user case (but I guess it surely exist in a practical point of view).
Find a real user case, and find a nice way to integer it in pacaur without complexifying too much the interface.

replace ugly awk calls

pacaur calls awk many time as an ugly workaround, ie:

pkgs=($(echo ${pkgs[@]} | awk -F "\n" '{print}' | awk -F " " '{print}'))

These should be replaced by cleaner, faster code. Try to remove all awk calls if possible.

replace all expac loops

Expac calls are bottlenecked by I/O disk access. Using expac in a loop is thus suboptimal.
Replace all expac loops by a single expac call to speed up code.

can't use $tmpDir as $buildDir

It is not possible to use $tmpDir (/tmp/pacaurtmp-$USER) as $buildDir.

Make it possible, and make it the default setting.

allow install scriptlet viewing

pacaur shoud be abe to view/edit .install scriptlet when provided by the package.

Evaluate if this is useful and subsequently add an optional option to enable/disable editing. Maybe even some command line to bypass defined behavior. Default behavior should be "disabled".

improve abs file handling

ABS pkgbuild could be improved by looking at the online pkgbuild instead of relying on the local ABS tree only. Also, pacaur could ask to update the ABS tree prior to any other operation. Looking at absent and aur-git might be a good idea, too.

improve workflow when installing binary and AUR packages

When installing packages from repositories and AUR at the same time, the current workflow is:

  • pacman prompt
    -> install binary packages
  • pacaur prompt
    -> install binary aur deps
    -> install aur pkgs and deps

It would be appreciable to change it to the following in order to speed up workflow:

  • pacaur prompt
  • pacman prompt (bypassed with --noconfirm)
    -> install binary packages
    -> install binary aur deps
    -> install aur pkgs and deps

Solving properly issue #4 first is probably a prerequisite.

pacaur -b can't build ABS package

pacaur -b can't build ABS package. Deps resolution is done for AUR pkgs only (via cower).

If cower doesn't return any deps, continue with makepkg. I guess this can be combined with #14 and maybe #8 to provide fully/partial automated resolution dependencies.

pacaur and pacman-like command sets can be mixed

Pacaur specific command set (-s, -i, -d, -m, -y, -k, -u) and pacman-like command set (-S, -Ss, -Si, -Sw, -Su, -Qu) can be mixed resulting in erratic behavior.

Includes a sanity check to avoid this mess. When detected, pacman-like command should take precedence over pacaur specific commands and pass the additional options to pacman.

pacaur fails when trying to install an ignored group

pacaur fails when trying to install a pkggroup that is ignored in pacman.conf. No error warning, just fails.
This happens because pacaur doesn't check package group with pacman/expac -Sg, but ping pacman -S --print instead (920f14a). This way allows to check one time instead of 2, which is faster, but it doesn't work when the target is set in IgnoreGroup in /etc/pacman.conf.
Try to find a way to fix this issue without losing the extra speed.

install fails when ignoring binary deps in pacman.conf

Athough ignored binary are correctly handled in normal operation, ignored binary deps fails when defined in pacman.conf

Without "IgnorePkg = jansson" in pacman.conf:

pac -S packer --ignore jansson
:: Package(s) packer not found in repositories, trying aur...
:: jshon is available in community
:: jansson is available in community
:: jansson dependency is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] n
:: Unresolved dependency 'jansson'

With "IgnorePkg = jansson"

 pac -S packer
:: Package(s) packer not found in repositories, trying aur...
:: jshon is available in community
:: jansson is available in community
:: jansson dependency is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] y

AUR Targets (1): packer

Proceed with installation? [Y/n] y
:: Edit packer PKGBUILD? [Y/n] n
:: Building packer package...
==> Determining latest git revision...
  -> Version found: 20110925
==> Making package: packer 20110925-1 (Sun Sep 25 16:30:13 CEST 2011)
==> Checking runtime dependencies...
==> Installing missing dependencies...
resolving dependencies...
warning: ignoring package jansson-2.2-1
warning: cannot resolve "jansson", a dependency of "jshon"
:: The following package cannot be upgraded due to unresolvable dependencies:
      jshon

Do you want to skip the above package for this upgrade? [y/N] looking for inter-conflicts...
 there is nothing to do
==> Missing Dependencies:
  -> jshon
==> Checking buildtime dependencies...
==> ERROR: Could not resolve all dependencies.
==> Determining latest git revision...
  -> Version found: 20110925
==> Making package: packer 20110925-1 (Sun Sep 25 16:30:13 CEST 2011)
==> Checking runtime dependencies...
==> Installing missing dependencies...
resolving dependencies...
warning: ignoring package jansson-2.2-1
warning: cannot resolve "jansson", a dependency of "jshon"
:: The following package cannot be upgraded due to unresolvable dependencies:
      jshon

Do you want to skip the above package for this upgrade? [y/N] looking for inter-conflicts...
 there is nothing to do
==> Missing Dependencies:
  -> jshon
==> Checking buildtime dependencies...
==> ERROR: Could not resolve all dependencies.
:: Build directory cleaned

parallelize package building

Allow package building parallelizing. That's probably hard to achieve, but could be an important feature to improve speedup.

AUR deps chains calculation would need to be rewritten to segment chains in individual, consistent heaps to avoid aur building breakage.

remove unnecessary color and "pacmanBin" option in conf file

Remove unecessary option in conf file. The less the better.

  1. pacmanBin and color option might be removed. If pacman-color binary is detected, use color output.
  2. Or only remove pacmanBin option. If color is true, use pacman-color binary and adapt the pacmanBin sanity check (might be preferable)

su support is broken

Support for su is broken since #4 has been fixed.

standard in must be a tty

The following code doesn't work with "su", although it does when sudo is installed.

yes | makepkg <option>
yes | runasroot $pacmanBin -U $cachedpkg ${pacopts[@]}

Find a nice way to make su working again alongside sudo, or drop support entirely.

add --asdeps support

Although any unknown option is passed to pacman, --asdeps doesn't work as expected.
This happens because packages detected in pacaur input are explicitly installed, while the others are installed as dependencies.

To do: Find a fix/workaround to be able to install "explicitly" installed packages as dependencies.

use /dev/shm as temporary storage rather than on disk files

See if performance can be improved by using /dev/shm as temporary storage rather than on disk files, similarly to pbfetch. Could be useful with json info, or even with any downloaded files.

That's something I've wanted to do for a long time, but completely forgot about it.

timezone not taken into account when upgrading devel package

From https://aur.archlinux.org/packages.php?ID=49145

I am not sure if this can be considered a bug, but pacaur updated the
git version of a package, dated in the AUR as 2011-11-10, but in my
timezone (EST), it's 2011-11-09, so after I run the upgrade, pacaur
still prompts me to update because it doesn't take into account the
timezone difference. (The package is clipodder, by the way.) Can this
be fixed, or is this something that can't be helped?

Interesting "bug". Probably nothing that can be done in an simple and efficient way (apart from moving to far Eastern :]), but maybe someone can come up with a good idea?

add initial customizepkg support

Implement partial custumizepkg support as a first step towards #12.

Adding or removing a binary dependency would be taken into account thanks to makepkg. Full support (adding or removing AUR dependencies) needs issue #8 to be solved.

cleanup selective update code and command sets

The pacaur and pacman-like command sets use different code. Some code is also necessary to handle the "selective update" feature.

Check if it is possible to remove some unnecessary code, or to merge both command sets code (ie, using "-Sua" for -u, "-Sa" for -y, "-Swa" for -m).

add ignored warning

Implement ignored warning, similarly to what pacman does with binary packages.

use makepkg -sr with pacaur -m/-Sw

When using pacaur -m (build without installing), the build might fail if necessary deps aren't installed. See if "makepkg -sr" makes the trick here.

Ignored pkgs management upgrade needs to be improved

The ignored pkgs management needs to be improved when upgrading. This apply to:

  • ignored package that are installed and that have aur dependencies.
  • upgrade that pulls new dependencies that are ignored.
  • installed packages that are ignored and that have an upgrade that pulls new dependencies.

Package install that have aur or binary deps that are ignored are correctly handled.

User case:

A1 is installed.
A2 is a new version that brings B1 and C1 as new dependencies.
D1 is installed and a new version D2 is available.

Actually, if B1/C1 is ignored, build of A2 will fail. If A1 is installed but Ignored (to prevent upgrade), the new deps B1/C1 are installed anyway.

Example:

pacaur -Sa clyde-git --ignore clyde-git
:: Package(s) clyde-git not found in repositories, trying aur...
:: lua-lzlib is available in community
:: luasocket is available in community
:: luafilesystem is available in community
:: luasec is available in community
:: clyde-git is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] n

AUR Targets (1): lua-yajl-git

Proceed with installation? [Y/n] n

Improve Ignorepkg management, similarly to what pacman does:

pac -Qur
:: a 1-1 -> 2-1 
:: d 1-1 -> 2-1
pac -S a
resolving dependencies...
looking for inter-conflicts...

Targets (3): b-1-1 [0.00 MB]  c-1-1 [0.00 MB]  a-2-1 [0.00 MB]

Proceed with installation? [Y/n]

When b is ignored:

:: The following package cannot be upgraded due to unresolvable dependencies:
      a

Do you want to skip the above package for this upgrade? [y/N] n
error: failed to prepare transaction (could not satisfy dependencies)
:: a: requires b


add option to turn on/off prompting to edit PKGBUILD

In pacman-like mode, add an option in config file to turn out prompting to edit PKGBUILDS. Similarly to aurget "edit_pkgbuilds" option, valid values would be "always", "never", or "prompt" (default).

This option does not concern non pacman-like commands.

add modified dependencies support

pacaur doesn't take into account added/removed AUR dependencies when you modify the local pkgbuild. As it rely on makepkg, only added/removed binary dependencies are taken into account.

Use case: sometimes people want to remove deps + add --disable-xxx build-options for avoiding unwanted functionality, e.g. one of the example configs in customizepkg disables dbus-glib for a package etc. Or, to add deps and extra build-options for added functionality.

Check if the AUR deps are modified, compute the dependencies again and pull new PKGBUILD if necessary.

pacaur -Scc --noconfirm doesn't work

pacaur -Scc --noconfirm option isn't taken into account by pacman, and thus not implemented by pacaur for $PKGDEST directory.
However, it is possible to pass automatically a non-default option to pacman, ie:

yes | pacman -Scc

Let's see if it worth and reasonable to implement for pacman to speed up operation, and then implement it for aur packages in $PKGDEST.

See also https://bugs.archlinux.org/task/18279

build fails when makepkg detects a dependency conflict

pacaur fails when makepkg detects a dependency conflict. This happens because --noconfirm is passed to makepkg by default to allow a fast workflow (14b11fc). However, as the default answer when a conflict arises is "no", makepkg fails.
Need to fix without losing fast workflow if possible.

merge repodepspkgs and repodepsdepspkgs vars

Binary dependencies are actually tracked by 2 differents variables:

  • repodepspkgs, that tracks the primary binary dependencies given by cower
  • repodepsdepspkgs, that tracks all recursive binary dependencies of the repodepspkgs var through expac

repodepsdepspkgs fiters duplicates and sort the deps lists, but on some case a dependencies might be listed in both variables. It also not possible to sort all deps alphabetically as there is a "break" between repodepspkgs and repodepsdepspkgs lists.

This is not an important task, as repodepspkgs and repodepsdepspkgs are used only to show the deps to the user. Dependencies installation are handled by makepkg.

--clean option should rely on makepkg

pacaur should rely on --clean and --cleancache makepkg options instead of deleting the build subdirectory. Less code, cleaner code. I guess pacaur -c option should be kept to delete the PKGBUILD only.

pacaur fails when using various locales

pacaur uses the "yes" utility to confirm prompts instead of the --noconfirm option (in order to bypass the default "No" answer when a conflict arise). This leads to an prompt confirmation failure when the locale doesn't use "y" to confirm install or conflicting package replacement.

An easy workaround is to use in bashrc:

pacaur='LANG="en_US.UTF-8" pacaur'

Find the cleanest way to fix this in the code.

add dependency version check to bash side solver (carchmagic)

When carchmagic switch is enabled ($CARCH compatibility), first level of dependency solving is done on the bash side rather than on the RPC interface. The simplistic solver included in pacaur does not support dependency version yet:

Real life exemple: cower-legacy requires pacman<4.

carchmagic: false

pacaur -S cower-legacy
:: Package(s) cower-legacy not found in repositories, trying AUR...
:: pacman is available in core

AUR Targets (1): cower-legacy

Proceed with installation? [Y/n] n

carchmagic: true

pacaur -S cower-legacy
:: Package(s) cower-legacy not found in repositories, trying AUR...

AUR Targets (1): cower-legacy

Proceed with installation? [Y/n] n

This does not apply to second and following dependencies level or when carchmagic switch is disabed, as those case are successfully handled by cower.

Real life example: Installing "pacaur" succeed as expected, as cower-git is the first level dependency while pacman<4 is the second.

carchmagic: true/false

 pac -S pacaur
:: Package(s) pacaur not found in repositories, trying AUR...
:: pacman is available in core
:: pacaur-2.4.3-1 is up to date -- reinstalling

AUR Targets (2): pacaur cower-legacy

Proceed with installation? [Y/n] n

Add dependency version support to the bash side (carchmagic enabled only). Looking at yaourt code might be useful. Both packer and pbfetch (and probably aurget) suffer from the same flaw as they use a similar simple dependency solver.

false positive when upgrading devel

Interesting...

pacaur -Sua --devel
:: Starting AUR upgrade...
:: aurora-hg 20-1 
:: meat-git 20111019-1 
:: package-query-git 20111025-1 
:: packer 20111026-1 
:: partitionmanager-svn 1257912-1 
:: yaourt-git 20111025-1 
:: package-query-git-20111025-1 is up to date -- reinstalling
:: partitionmanager-svn-1257912-1 is up to date -- reinstalling
:: meat-git-20111019-1 is up to date -- reinstalling
:: packer-20111026-1 is up to date -- reinstalling
:: aurora-hg-20-1 is up to date -- reinstalling
:: yaourt-git-20111025-1 is up to date -- reinstalling

AUR Targets (7): package-query-git partitionmanager-svn meat-git packer aurora-hg yaourt-git cower-git

Proceed with installation? [Y/n] n

6 devel packges are detected, but cower-git (uninstalled) is added to the targets list.
See if that bug is related to conflict code, and solve that mess.

clear normal pkgs cache but retains vcs cache

From https://bbs.archlinux.org/viewtopic.php?pid=970549#p970549 :

with aurget, if i dl and build a devel package and skipped out on cleaning, i still have a complete dir with up to date src; now let some revisions/commits pass and i want to update the src and build again. aurget would redownload the PKGBUILD, etc ..., but keep the devel src, so that it would only need to sync up to the latest ones, not needing to redownload them all, then proceed to build it.

How can i get this in pacaur if it is implemented? And if not, could you do it, assuming you have interest in doing so?

Try to set the "clean" option to "false" in /etc/pacaur.conf. It should do the trick (at least for PKGBUILDs that follow VCS PKGBUILD guidelines). The drawback is that all packages are going to retain their cache... But if it is possible to only clear "normal" package and retain vcs packages cache, I believe that is a feature worth implementing. I'll see what I can do in this regard.

binary deps should be checked recursively too

On the contrary of AUR deps, binary deps aren't checked recursively. The user doesn't know what are the binary deps that are going to be installed.

User case:

pacaur -S packer
:: Package(s) packer not found in repositories, trying aur... 
:: jshon is available in community

AUR Targets (1): packer

Proceed with installation? [Y/n]

However, jshon depends on the binary pakage "jansson" that needs to be installed.

pac -S jshon
resolving dependencies...
looking for inter-conflicts...

Targets (2): jansson-2.1-1 [0.03 MB]  jshon-20110803-1 [0.01 MB]

Total Download Size:    0.04 MB
Total Installed Size:   0.13 MB

Proceed with installation? [Y/n]

The "repodeps" array needs to be checked recursively. Also, dependencies of a repo deps are always available in repo.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.