Giter Club home page Giter Club logo

auracle's People

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

auracle's Issues

Segmentation fault after updating curl to 7.65.0-2

After the update the libcurl, the auracle is fault.
I test it with auracle sync. This is the stack info:

#0  0x00007ffff7dddfce in ?? () from /usr/lib/libcurl.so.4
#1  0x00007ffff7dde2a5 in curl_multi_socket_action () from /usr/lib/libcurl.so.4
#2  0x00005555555d1c93 in aur::Aur::OnCurlIO (fd=8, revents=1, userdata=0x7fffffffe080) at ../src/aur/aur.cc:284
#3  0x00007ffff7d3fc00 in ?? () from /usr/lib/libsystemd.so.0
#4  0x00007ffff7d40210 in sd_event_dispatch () from /usr/lib/libsystemd.so.0
#5  0x00007ffff7d441b9 in sd_event_run () from /usr/lib/libsystemd.so.0
#6  0x00005555555d2240 in aur::Aur::Wait (this=0x7fffffffe080) at ../src/aur/aur.cc:399
#7  0x0000555555570df9 in auracle::Auracle::Sync (this=0x7fffffffe080, args=std::vector of length 0, capacity 0, options=...) at ../src/auracle/auracle.cc:634
#8  0x00005555555664f6 in main (argc=2, argv=0x7fffffffe528) at ../src/auracle_main.cc:249

The previous version of curl is 7.65.0-2 works well, but the new version 7.65.1-1 is not.

Solver errors should be made more explicit

When the solver fails for some reason, the error message should help to locate the error quickly in order to ease manual intervention.

Consider the following:

$ auracle buildorder plasma-git-meta
no results found for botan-1.10
BUILD kde-gtk-config-git
BUILD extra-cmake-modules-git
BUILD kconfig-git
BUILD kcoreaddons-git

.. (~100 other dependencies) ...

BUILD plasma-mediacenter-git
BUILD kwallet-pam-git
BUILD plasma-git-meta

Indeed, finding the package that requires the faulty botan-1.10 dependency is not trivial.

A similar issue exists when using auracle download -r plasma-git-meta, but using grep to locate the faulty PKGBUILD can be used as a workaround.

Note that here I'm using plama-git-meta as I know this package chain is currently broken. It has a lot of AUR deps and is a somewhat extreme case, but a similar and much more common case is updating (sync) with multiple AUR outdated packages, with one of the dependency broken for some reason.

A better solution is to have a more explicit error message.

This is what I implemented in pacaur, with these objectives:

  • make it easy to locate the faulty PKGBUILD
  • determine which is the target requiring that dependency, so it can be --ignored allowing the update of the others packages
  • instead of stopping at the first detected error, find all errors at once then stops
$ pacaur -S plasma-git-meta
:: Package plasma-git-meta not found in repositories, trying AUR...
:: resolving dependencies...
:: no results found for botan-1.10 (dependency tree: plasma-git-meta plasma-nm-git qca-qt5-git botan-1.10)

Here we see that it is qca-qt5-git that requires botan-1.10, and qca-qt5-git is a second level dependency of the plasma-git-meta target.

The implementation is as follow:

for each erroneous dependency detected
  * check the previous dependency in the topologically sorted buildorder chain
  * if the (erroneous) dependency is a dependency of that package
       store that dep
       recurse with the new dependency
    else
       check the previous element in the buildorder chain 
  * stop when the dependency is a target and print the list of stored deps in the error message

This is somewhat slow, and maybe not robust enough, but gives good results in the majority of cases.

I'm not sure if finding the target requiring the faulty dependency is in the scope of auracle, but printing at least the direct faulty dependency could prove to be very useful for auracle users.

segmentation fault (core dump)

I've got below error with archlinux system up-to-date, I doubt something new kernel or systemd..etc breaks auracle:

zsh: segmentation fault (core dumped)  auracle search inspect

Missing config

Missing configuration options to auracle. Specifically, it would be useful to have the "TargetDir" and "Color" options customizable, as in cower. Currently, auracle downloads the package to the directory from whence the tool is called, with no way to specify a target directory.

Missing installed version in search output

Compared to cower --search output, auracle search currently misses the colored [installed: version] string.

$ cower -sc cower
aur/burgaur 2.2-2 (7, 0.38)
    A delicious AUR helper. Made from cower.
aur/burgaur-git 2.2-2 (0, 0.00)
    A delicious AUR helper. Made from cower.
aur/cower 17-2 (893, 33.05)
    A simple AUR agent with a pretentious name
aur/cower-git 17-1 (78, 2.74) [installed: 17.4.g79c42eb-1]
    A simple AUR agent with a pretentious name
aur/owlman 0.8-1 (1, 0.01)
    A pacman and cower wrapper focused on simplicity

Add pkgbase to buildorder output

For reference, quick extract of our emails discussion from a few weeks ago:

[...]
libsystemd-git is provided by the systemd-git PKGBUILD, but it's difficult to establish this reverse mapping without a fair bit of extra machinery. Can pacaur handle this nicely, or does it need to avoid the libsystemd-git dep because it's implicitly handled by build+install of systemd-git?

Pacaur does that extra bit of machinery by itself [...] It does some pkgbase magic just before building to ensure a single build per pkgbase, and installation of spit packages in the correct order.

Cool. I've already got a naive graph implementation that can walk package deps and print a build order. I'll take this extra coalescing step as a nice-to-have. Certainly seems like an optimization that could be applied later...

Getting the pkgbase list is useful, f.e. to:

  • easily get the path of sources files in order to review them
  • obtain the packages to download, so git clone can be used instead of auracle download
  • handle split packages build

I initially thought I would use the upcoming custom output to retrieve the list of pkgbase (with auracle info --format %b or similar), but I realize now that obtaining the pkgbase list directly through buildorder might be a wiser generic implementation. In fact, I am not sure when the pkgname list alone can be useful without also getting the related pkgbase list (maybe apart from inspecting a build chain).

Having an extra column that outputs pkgbase directly is straighforward to implement and would also avoid to use an extra RPC request.

$ ./auracle buildorder systemd-git
BUILD libsystemd-git systemd-git
BUILD systemd-git systemd-git

Drawback is that the output is not so nice to look at anymore, and I am also not sure how this fit with the optimization you were referring to. Opinion?

[Q] Howto update installed packages

cower has -u to check for newly version of installed packages, how would auracle come to packages that downloaded via download and clone?

I think this feature is really useful.

search sort by popularity

Being able to sort searches with various parameters like cower can, especially by popularity, would be a useful feature.

Reset repos before pulling

A pkgver function will cause pkgbuilds to be be changed. This means that a git reset is needed before pulling.

I think auracle should do this by default, although locking it behind --reset would work too.

segfault when pkgbuild multifile

Title says it all. I was trying to glob into a directory consisting solely of cloned aur repos, the command auracle pkgbuild * resulted in a segfault, same when manually expanding the glob. For referenceauracle pkgbuild $(ls) dumps one PKGBUILD and then segfaults (not the first one in ls output) which is IMO interesting. Let me know if you need more information (the core dump is not interesting because this is not a debug build).

Add versioned dependency support

From the bug reports I've collected in the pacaur tracker over the years, I'd say the majority of edge cases are due to AUR versioned dependencies. Checking for version in addition to names for AUR dependencies would avoid these situations.

I've looked into the sources, and my current understanding is that versioning check is implemented in a similar fashion as done in cower with only a name check (please correct me if I'm wrong here).

For example, a few months ago there was a bug in bauerbill, with the ros-indigo-desktop-full package. While aurutils was able to "solve" the tree, it wasn't able to find what was causing the error since it doesn't implement version check either. I simply ran pacaur to pinpoint the issue:

$ pacaur -S ros-indigo-desktop-full
:: Package ros-indigo-desktop-full not found in repositories, trying AUR...
:: resolving dependencies...
:: no results found for sdformat>=4.2.0

Quickly looking at the AUR revealed that only sdformat 4.1.0 was available (this particular issue has been solved since then, though that package deps chain is still broken due to another missing dep).

Most of the time these versioning issues are due to completely unneeded versioning deps in the PKGBUILDs, but it is useful to detect them to make it easy to fix them. There are also a few entirely valid cases (see f.e. https://github.com/falconindy/cower/issues/91, admittedly one of the most complex case I've ever seen).

The drawback of doing versioning check is that it is a bit slower to process (and sometime much slower as implemented in bash in pacaur), but ensuring a build chain won't be broken before starting the build processs is quite important.

See also aurutils/aurutils#10 for a relevant discussion.

Checking and downloading foreign packages

Hello,
I've been using cower for 4 years now. I'm trying migrating from cower to auracle but there's a feature (cower -du or -ddu) that I really enjoyed and I can't really figure out how to achieve the same results with auracle.
$auracle sync works, but neither $auracle sync download nor $auracle download sync works as expected.
The only one that has worked so far is $auracle clone $(auracle sync -q), which isn't pretty at all and I assume/hope there's a better way to do it.

Segfault with dependency cycle

Installing the mingw-w64-freetype2 package results in a dependency cycle, which produces a segfault instead of a nicer error message.

$ auracle buildorder mingw-w64-freetype2
Segmentation fault (core dumped)

Note the dependency cycle is mingw-w64-freetype2 -> mingw-w64-harfbuzz -> mingw-w64-freetype2, but isn't exacly a PKGBUILD error, as the chain is supposed to be bootstrapped with the mingw-w64-freetype2-bootstrap package.

Handle '503 - Service Unavailable'

Got

terminate called after throwing an instance of 'nlohmann::detail::parse_error'
what(): [json.exception.parse_error.101] parse error at line 1, column 1: syntax error while parsing value - invalid literal; last read: '<'
Aborted (core dumped)

from

auracle sync

due to aur.archlinux.org on maintenance.

AUR on maintenance

Completions

Not sure if it's a bug on my end or if this just isn't implemented yet but completions (pressing tab) don't work at all for me.

Neither for commands (sync, clone, etc) nor for the names of the packages.

I'm using zsh.

testDateTimeFormat tied to timezone


--- command ---
PYTHONDONTWRITEBYTECODE='1' /usr/bin/python3 /home/henri/build/auracle-git/src/auracle/tests/custom_format.py
--- stderr ---
F
testFloatingPointFormat (__main__.TestInfo) (0.0484s)
testInvalidFormat (__main__.TestInfo) (0.0234s)
testListFormat (__main__.TestInfo) (0.0439s)
testStringFormat (__main__.TestInfo) (0.0259s)
======================================================================
FAIL: testDateTimeFormat (__main__.TestInfo)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/henri/build/auracle-git/src/auracle/tests/custom_format.py", line 27, in testDateTimeFormat
    self.assertEqual(p.stdout.decode().strip(), 'Sun Jul  2 12:40:08 2017')
AssertionError: 'Sun Jul  2 19:40:08 2017' != 'Sun Jul  2 12:40:08 2017'
- Sun Jul  2 19:40:08 2017
?             ^
+ Sun Jul  2 12:40:08 2017
?             ^```


Test here is not taking build computer's timezone into account.

makepkg modifies PKGBUILD and breaks auracle clone

I'm using this script at the moment which only uses the clone command to update AUR packages:

#!/bin/bash

set -e

CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/aur"

mkdir -p "$CACHE"

[ $# -gt 0 ] || set -- $(auracle --quiet sync)

while read -r id dep _
do
  pushd "$CACHE"
  case $id in
   BUILD)
     auracle clone "$dep"
     pushd "$dep"
     makepkg -si
     popd
     ;;
   *)
     echo "Unhandled action $id for $dep"
     ;;
  esac
  popd
done < <(auracle buildorder "$@")

and all repos in the cache directory end up eventually with an unmodified PKGBUILD file: http://ix.io/1uiZ
I am not sure yet which sequence leaves these repositories dirty.

(N.B.: it'd be great if AUR repositories had a .gitignore file excluding pkg/, src/ and *.tar.xz.)

How to update all AUR installed packages

Just switched from cower.
For updating packages in cower I used cower -uddf.

I see that auracle sync is equivalent to cower -u, however how do I send that as an argument to auracle clone or auracle download?

List dependencies recursively without syncing

In order to rebuild/reinstall non-release packages (usually -git packages), we'd need to list all of their dependencies without syncing with the local system, because a -git package might depend on another, e.g. clight-git depends on clightd-git or sway-git depends on wlroots-git and more.

The trick would be to define if a package is installed or not and eventually play with pactree, while we could imagine a --nosync option for example to use with auracle buildorder.

Add AUR comments

When running into package build errors, the first place I tend to look are the AUR comments. Usually a solution will be posted from either the author or a user. Having the ability to search comments with auracle would make solving these errors much faster and easier.

Compiling from AUR or source fails

Hi,
I'm trying to compile auracle, but it fails and I don't know what the problem is. Here's the output I get:

ninja: Entering directory `build'
[1/20] Compiling C++ object 'libaur@sta/src_aur_aur.cc.o'.
FAILED: libaur@sta/src_aur_aur.cc.o 
c++ -Ilibaur@sta -I. -I.. -I../src -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++17 -O0 -g -include config.h -fPIC  -MD -MQ 'libaur@sta/src_aur_aur.cc.o' -MF 'libaur@sta/src_aur_aur.cc.o.d' -o 'libaur@sta/src_aur_aur.cc.o' -c ../src/aur/aur.cc
../src/aur/aur.cc:8:10: fatal error: filesystem: No such file or directory
 #include <filesystem>
          ^~~~~~~~~~~~
compilation terminated.
[2/20] Compiling C++ object 'libaur@sta/src_aur_request.cc.o'.
ninja: build stopped: subcommand failed.

sync: multiple responses not handled correctly

I have 335 AUR packages, which makes auracle sync split the list into two info requests. However, the debug output only shows it receiving one response, thus missing a good chunk of my packages...

It seems that the callback in Auracle::Sync returns 1 when it shouldn't?

10 tests fail

Building from a snapshot I downloaded from here today.
When I do makepkg -s:

==> Starting check()...
ninja: Entering directory `/tmp/auracle-git/src/auracle/build'
ninja: no work to do.
 1/12 request_test                            OK       0.01 s 
 2/12 response_test                           OK       0.01 s 
 3/12 buildorder_integration_test             FAIL     0.32 s (exit status 1)
 4/12 clone_integration_test                  FAIL     0.31 s (exit status 1)
 5/12 download_integration_test               FAIL     0.32 s (exit status 1)
 6/12 info_integration_test                   FAIL     0.31 s (exit status 1)
 7/12 pkgbuild_integration_test               FAIL     0.29 s (exit status 1)
 8/12 raw_query_integration_test              FAIL     0.31 s (exit status 1)
 9/12 regex_search_integration_test           FAIL     0.31 s (exit status 1)
10/12 search_integration_test                 FAIL     0.32 s (exit status 1)
11/12 sort_integration_test                   FAIL     0.29 s (exit status 1)
12/12 sync_integration_test                   FAIL     0.24 s (exit status 1)

OK:         2
FAIL:      10
SKIP:       0
TIMEOUT:    0

What can I do to fix this? I have gmock and gtest installed. I heard it might have to do with installed packages but which ones?

Split package.

Would it be feasible to list pkgbase for split package instead of naming each one pkgname.

Bad free of curl_easy_escape's return value

Arch Linux curl 7.64.0-6 accidentally enabled memory allocation debugging (--enable-curldebug), which exposed a bug in auracle (and cower).

The free at aur/request.cc:16 should be a curl_free instead.

std::string UrlEscape(const std::string_view sv) {
char* ptr = curl_easy_escape(nullptr, sv.data(), sv.size());
std::string escaped(ptr);
free(ptr);
return escaped;
}

Add --ignorerepo option

Would you be interested in implementing the option to ignore repository results when downloading, like cower currently has? It currently doesn't seem to be possible to download snapshots of packages in the AUR if there is a package of the same name in a custom repository.

$ auracle search --quiet openxcom                                                                           
openxcom
[...]
$ auracle download openxcom
openxcom is available in myrepo
$ echo $?
1

Compilation against libalpm.so.11 - executable looks for libalpm.so.10

Hi falconindy,

I'm using auracle from AUR building it with makepkg and having an issue that although ninja detects the .11 version of the lib the executable still looks for .10. I thought it was the ccache which I'm using so I cleaned it completely but with same results.
It's probably something obvious but I'm missing it. Any ideas?

$ makepkg -si
==> Making package: auracle-git r29.37ad380-1 (Fri 15 Jun 2018 07:39:18 BST)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Cloning auracle git repo...
Cloning into bare repository '/home/inglor/cowerPkg/auracle-git/auracle'...
remote: Counting objects: 176, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 176 (delta 0), reused 0 (delta 0), pack-reused 172
Receiving objects: 100% (176/176), 53.41 KiB | 675.00 KiB/s, done.
Resolving deltas: 100% (100/100), done.
==> Validating source files with sha256sums...
    auracle ... Skipped
==> Extracting sources...
  -> Creating working copy of auracle git repo...
Cloning into 'auracle'...
done.
==> Starting pkgver()...
==> Starting build()...
The Meson build system
Version: 0.46.1
Source dir: /tmp/makepkg/auracle-git/src/auracle
Build dir: /tmp/makepkg/auracle-git/src/auracle/build
Build type: native build
Project name: auracle
Native C++ compiler: ccache c++ (gcc 8.1.1 "c++ (GCC) 8.1.1 20180531")
Appending CXXFLAGS from environment: '-march=native -O2 -pipe -fstack-protector-strong -fno-plt'
Appending LDFLAGS from environment: '-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'
Appending CPPFLAGS from environment: '-D_FORTIFY_SOURCE=2'
Build machine cpu family: x86_64
Build machine cpu: x86_64
Configuring config.h using configuration
Found pkg-config: /usr/bin/pkg-config (1.4.2)
Native dependency libalpm found: YES 11.0.0
Native dependency libarchive found: YES 3.3.2
Native dependency libcurl found: YES 7.60.0
Program pod2man found: YES (/usr/bin/core_perl/pod2man)
Program ragel found: YES (/usr/bin/ragel)
Build targets in project: 4
Found ninja-1.8.2 at /usr/bin/ninja
ninja: Entering directory `build'
[14/14] Linking target auracle.
==> Entering fakeroot environment...
==> Starting package()...
ninja: Entering directory `build'
[0/1] Installing files.
Installing auracle to /tmp/makepkg/auracle-git/pkg/auracle-git/usr/bin/auracle
Installing auracle.1 to /tmp/makepkg/auracle-git/pkg/auracle-git/usr/share/man/man1/auracle.1
==> Tidying install...
  -> Removing libtool files...
  -> Purging unwanted files...
  -> Removing static library files...
  -> Stripping unneeded symbols from binaries and libraries...
  -> Compressing man and info pages...
==> Checking for packaging issues...
==> Creating package "auracle-git"...
  -> Generating .PKGINFO file...
  -> Generating .BUILDINFO file...
  -> Generating .MTREE file...
  -> Compressing package...
==> Leaving fakeroot environment.
==> Finished making: auracle-git r29.37ad380-1 (Fri 15 Jun 2018 07:39:24 BST)
==> Installing package auracle-git with pacman -U...
loading packages...
warning: auracle-git-r29.37ad380-1 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...

Packages (1) auracle-git-r29.37ad380-1

Total Installed Size:  0.33 MiB
Net Upgrade Size:      0.00 MiB

:: Proceed with installation? [Y/n]
(1/1) checking keys in keyring                                          [########################################] 100%
(1/1) checking package integrity                                        [########################################] 100%
(1/1) loading package files                                             [########################################] 100%
(1/1) checking for file conflicts                                       [########################################] 100%
(1/1) checking available disk space                                     [########################################] 100%
:: Processing package changes...
(1/1) reinstalling auracle-git                                          [########################################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
inglor@tiamat ~/cowerPkg/auracle-git$ auracle
auracle: error while loading shared libraries: libalpm.so.10: cannot open shared object file: No such file or directory

Cheers,
Leonidas

Add better output when package is ignored

For initial context: the package aurutils is not installed on my system, but present in my IgnorePkg directive.

IgnorePkg = aurutils

Let's check aurutils.

$ auracle buildorder aurutils
(no result)
$ auracle download aurutils
(no result)

Exit code is 1. It took me a while to understand the issue happens because of the package presence in IgnorePkg, so I'd suggest a better output when a package is ignored.

[Q] Custom output 's colors

Currently we only have auto/never/always, how about allow user to custom the output's colors like: color aur, package-name, package-version, package-version flagged as out-of-date, description.

buildorder with multiple packages hangs forever

EDIT: This issue was initially a suggestion to merge the clone and download options which isn't legit in the end, but pointed out an issue with buildorder, see point 4. in comments.

Hi! Thanks for the tool. I find it somehow frustrating to fetch packages in the current directory instead of a dedicated cache. Also, the "clone" and "download" options seem a bit redundant to me. We could also mention the behavior we get when issuing a clone after a download:

$ auracle download auracle-git 
download complete: /home/vivien/tmp/auracle-git
$ auracle clone auracle-git 
fatal: destination path 'auracle-git' already exists and is not an empty directory.
error: clone failed for auracle-git: git exited with unexpected exit status 128

"clone" already abstract "clone or update", thus I imagine a "fetch" command shadowing (ideally replacing) both "clone" and "download" commands in a standard dedicated auracle cache directory. The wrapper below makes it easier to understand the requested behavior:

#!/bin/sh

set -e

XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
AURACLE_HOME="$XDG_CACHE_HOME/auracle"
AURACLE_BIN=/usr/bin/auracle

mkdir -p "$AURACLE_HOME"
cd "$AURACLE_HOME"

if [ "$1" = "fetch" ]
then
  shift
  exec $AURACLE_BIN clone "$@"
else
  exec $AURACLE_BIN "$@"
fi

The rationale behind this is that auracle is intended to be a simple tool, thus combining two fetching options into one seems appropriate.

Also, AUR package clones or downloaded archives are often temporary in one's workflow. Thus defaulting to using a cache directory would prevent the user from changing working directory before or deleting the package directory after invoking auracle, making its usage even more smooth.

If downloading/cloning a package in a specific directory (e.g. the current one) is needed, auracle could still provide a switch to override the cache directory or use -C.

Handling network issues

If the network is inaccessible or the computer is in airplane mode, auracle is terminated with a nlohmann error.

terminate called after throwing an instance of 'nlohmann::detail::parse_error' what(): [json.exception.parse_error.101] parse error at line 1, column 1: syntax error while parsing value - unexpected end of input; expected '[', '{', or a literal [1] 15465 abort (core dumped) auracle sync

Always include target package in buildorder?

buildorder lists all AUR dependencies that aren't already installed on the system. This is also true for the target package specified on the commandline. So auracle buildorder foo will only include foo if it's not already installed. But since the point of buildorder is to gauge what needs to be done to build the target package, it might make sense to always include it in the buildorder list?

IgnorePkg in pacman.conf not honoured

Hi,

I'm not a novice, but this got me stumped. For some reason Auracle does not honour the IgnorePkg entries in /etc/pacman.conf on all of my Arch installs. At first I thought this was typical of the qtpad-git AUR package, but it seems to apply to all AUR packages.

/etc/pacman.conf contains:
IgnorePkg = qtpad-git rar

But auracle sync still results:
qtpad-git r190.108b09c-1 -> 0-1
rar 5.6.0-1 -> 5.6.1-1

I tried adding and removing packages on the IgnorePkg line, but the result is always the same. Am I missing something, or is this some kind of bug? Auracle build on my systems without issues with all dependencies met. What can I do to further debug?

OS: Arch x64 (latest)
Auracle: airacle-git r47.5eef47b-1

Thanks,
Marco

sync: take pkgname/pkgver from stdin

From cd3a2e4:

Pass one to many arguments to check for newer versions existing in the AUR.
Each argument is assumed to be a package installed locally using B<pacman>(8).
If no arguments are given, pacman is queried for all foreign packages as an
input to this operation.

This rules out the case where an AUR package is in a (local) repository, but it is not installed on the host (e.g., for build servers). A possible alternative would be a stdin option for sync:

pacman -Qm | auracle sync - # classical case
pacman -Sl custom | awk '{print $2,$3}' | auracle sync - # local repo case

Compilation error error: call of overloaded ‘Package(const nlohmann::basic_json<>&)’ is ambiguous

Trying to compile latest master (5e7bcad)

inglor@tiamat /tmp$ git clone https://github.com/falconindy/auracle
Cloning into 'auracle'...
remote: Enumerating objects: 308, done.
remote: Counting objects: 100% (308/308), done.
remote: Compressing objects: 100% (152/152), done.
remote: Total 1713 (delta 161), reused 250 (delta 148), pack-reused 1405
Receiving objects: 100% (1713/1713), 682.90 KiB | 1.78 MiB/s, done.
Resolving deltas: 100% (1072/1072), done.
inglor@tiamat /tmp$ cd auracle
inglor@tiamat /tmp/auracle$ meson build --prefix=/usr --buildtype=plain --default-library=static
The Meson build system
Version: 0.50.1
Source dir: /tmp/auracle
Build dir: /tmp/auracle/build
Build type: native build
Project name: auracle
Project version: 0
Native C++ compiler: ccache c++ (gcc 8.3.0 "c++ (GCC) 8.3.0")
Build machine cpu family: x86_64
Build machine cpu: x86_64
Configuring config.h using configuration
Compiler for C++ supports arguments -ffunction-sections: YES
Compiler for C++ supports arguments -fdata-sections: YES
Compiler for C++ supports link arguments -Wl,--gc-sections: YES
Found pkg-config: /bin/pkg-config (1.6.1)
Dependency libalpm found: YES 11.0.3
Dependency libarchive found: YES 3.3.3
Dependency libcurl found: YES 7.64.1
Dependency libsystemd found: YES 242
Dependency GTest found: YES 1.8.1
Dependency GMock found: YES 1.8.1
Library stdc++fs found: YES
Dependency fmt found: YES 5.3.0
Program pod2man found: YES (/usr/bin/core_perl/pod2man)
Build targets in project: 12
Found ninja-1.9.0 at /bin/ninja
inglor@tiamat /tmp/auracle$ ninja -C build
ninja: Entering directory `build'
[12/27] Compiling C++ object 'aur@sta/src_aur_response.cc.o'.
FAILED: aur@sta/src_aur_response.cc.o
ccache c++ -Iaur@sta -I. -I.. -I../third_party/nlohmann_json -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -std=c++17 -include config.h -ffunction-sections -fdata-sections -fPIC -MD -MQ 'aur@sta/src_aur_response.cc.o' -MF 'aur@sta/src_aur_response.cc.o.d' -o 'aur@sta/src_aur_response.cc.o' -c ../src/aur/response.cc
In file included from /usr/include/c++/8.3.0/vector:62,
                 from ../src/aur/package.hh:6,
                 from ../src/aur/response.hh:4,
                 from ../src/aur/response.cc:1:
/usr/include/c++/8.3.0/bits/stl_construct.h: In instantiation of ‘void std::_Construct(_T1*, _Args&& ...) [with _T1 = aur::Package; _Args = {const nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long int, long unsigned int, double, std::allocator, nlohmann::adl_serializer>&}]’:
/usr/include/c++/8.3.0/bits/stl_uninitialized.h:83:18:   required from ‘static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = nlohmann::detail::iter_impl<const nlohmann::basic_json<> >; _ForwardIterator = aur::Package*; bool _TrivialValueTypes = false]’
/usr/include/c++/8.3.0/bits/stl_uninitialized.h:134:15:   required from ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = nlohmann::detail::iter_impl<const nlohmann::basic_json<> >; _ForwardIterator = aur::Package*]’
/usr/include/c++/8.3.0/bits/stl_uninitialized.h:289:37:   required from ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, std::allocator<_Tp>&) [with _InputIterator = nlohmann::detail::iter_impl<const nlohmann::basic_json<> >; _ForwardIterator = aur::Package*; _Tp = aur::Package]’
/usr/include/c++/8.3.0/bits/stl_vector.h:1469:33:   required from ‘void std::vector<_Tp, _Alloc>::_M_range_initialize(_ForwardIterator, _ForwardIterator, std::forward_iterator_tag) [with _ForwardIterator = nlohmann::detail::iter_impl<const nlohmann::basic_json<> >; _Tp = aur::Package; _Alloc = std::allocator<aur::Package>]’
/usr/include/c++/8.3.0/bits/stl_vector.h:1437:4:   required from ‘void std::vector<_Tp, _Alloc>::_M_initialize_dispatch(_InputIterator, _InputIterator, std::__false_type) [with _InputIterator = nlohmann::detail::iter_impl<const nlohmann::basic_json<> >; _Tp = aur::Package; _Alloc = std::allocator<aur::Package>]’
/usr/include/c++/8.3.0/bits/stl_vector.h:546:4:   required from ‘std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&) [with _InputIterator = nlohmann::detail::iter_impl<const nlohmann::basic_json<> >; <template-parameter-2-2> = void; _Tp = aur::Package; _Alloc = std::allocator<aur::Package>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<aur::Package>]’
../src/aur/json_internal.hh:33:12:   required from ‘void aur::from_json(const json&, std::vector<CharType>&) [with T = aur::Package; nlohmann::json = nlohmann::basic_json<>]’
../src/aur/json_internal.hh:42:62:   required from ‘aur::ValueCallback<OutputType> aur::MakeValueCallback(FieldType OutputType::*) [with OutputType = aur::RpcResponse; FieldType = std::vector<aur::Package>; aur::ValueCallback<OutputType> = std::function<void(const nlohmann::basic_json<>&, aur::RpcResponse&)>]’
../src/aur/response.cc:14:62:   required from here
/usr/include/c++/8.3.0/bits/stl_construct.h:75:7: error: call of overloaded ‘Package(const nlohmann::basic_json<>&)’ is ambiguous
     { ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...); }
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/aur/response.hh:4,
                 from ../src/aur/response.cc:1:
../src/aur/package.hh:28:12: note: candidate: ‘aur::Package::Package(const string&)’
   explicit Package(const std::string& json_bytes);
            ^~~~~~~
../src/aur/package.hh:26:8: note: candidate: ‘aur::Package::Package(const aur::Package&)’
 struct Package {
        ^~~~~~~
../src/aur/package.hh:26:8: note: candidate: ‘aur::Package::Package(aur::Package&&)’
[19/27] Compiling C++ object 'auracle@sta/src_auracle_auracle.cc.o'.
ninja: build stopped: subcommand failed.

Missing info output

Compared to cower --info output, auracle info is currently less detailed:

  • missing Licenses info
  • missing Out of Date status
  • for packages that are flagged, missing flagged date string
  • for packages that are locally installed but outdated, missing [installed: oldversion] string
$ cower -ic cower
Repository     : aur
Name           : cower [installed: 17-1]
Version        : 17-2
URL            : http://github.com/falconindy/cower
AUR Page       : https://aur.archlinux.org/packages/cower
Keywords       : aur
Depends On     : curl  pacman  yajl
Makedepends    : perl
License        : MIT
Votes          : 887
Popularity     : 31.11
Out of Date    : No
Maintainer     : falconindy
Submitted      : Thu 30 Dec 2010 03:30:37 CET
Last Modified  : Mon 24 Apr 2017 16:27:21 CEST
Description    : A simple AUR agent with a pretentious name

I also just realized this installed: string in cower is printed next to the name, it might be more logical to place it next to the current version.

Request: Add 'armv6h' to arch=()

Hi,
please add 'armv6h' for plattforms like the RaspberryPi to your PKGBUILD.
I'm running auracle-git with pacaur for several months on my raspberry pi
and had no issues so far.

I know the PKGBUILD is in a seperate repository, but I think the test.log is better of at github than inside a comment section on the AUR webinterface.

Output of the tests and the generated logfiles follow.

Best regards,
Nils

meson test -C build
ninja: Entering directory `/tmp/auracle-git/src/auracle/build'
ninja: no work to do.
 1/15 libaur_request_test                     OK       0.15 s 
 2/15 libaur_response_test                    OK       0.10 s 
 3/15 libauracle_package_cache_test           OK       0.07 s 
 4/15 libauracle_format_test                  OK       0.15 s 
 5/15 libauracle_sort_test                    OK       0.10 s
 6/15 auracle_buildorder_integration_test     OK       5.45 s
 7/15 auracle_clone_integration_test          OK       5.55 s
 8/15 auracle_custom_format_integration_test  OK       4.99 s
 9/15 auracle_info_integration_test           OK       3.93 s
10/15 auracle_raw_query_integration_test      OK       4.63 s
11/15 auracle_regex_search_integration_test   OK       3.93 s
12/15 auracle_search_integration_test         OK       6.20 s
13/15 auracle_show_integration_test           OK       5.55 s
14/15 auracle_sort_integration_test           OK       4.84 s
15/15 auracle_sync_integration_test           OK       3.93 s

Ok:                   15
Expected Fail:         0
Fail:                  0
Unexpected Pass:       0
Skipped:               0
Timeout:               0

Full log written to /tmp/something/testlog.txt

testlog.txt

Print repo and optionally all AUR deps in buildorder

This is a pacaur specific feature request, since I don't think any other wrapper does something similar.

Print direct repo dependencies

Pacaur's solver retrieves the list of AUR dependencies, but also the list of (direct) repository dependencies. This is done just for the sake of computing then displaying the complete list of repository dependencies in a pacman-like prompt. Installation of these dependencies is done as usual through makepkg -s later on.

The current buildorder option works great, but only displays AUR dependencies. Before I implemented the solver directly in pacaur for a variety of reasons, I was using the old cower --brief output to retrieve both the AUR of repo dependencies.

Having an equivalent output in buildorder would be useful (f.e., "REPOS package").

Print all AUR dependencies

In some cases, I found useful to compute all AUR dependencies, including the ones that are already installed locally. It is useful for lazy rebuilding a specific AUR deps chain in case of soname bump, but also more generally for inspecting the dependency chain.

Having the output of all AUR packages in buildorder, maybe with an optional argument like -a/--all, would be useful here.

Support libc++

One problem with libc++ support is that auracle uses C++17 features, but also features that have been removed from C++17, and by default libc++ does not allow use of features removed from C++17 while the C++ standard is set to 17, so _LIBCPP_ENABLE_CXX17_REMOVED_FEATURES needs to be defined.

In addition, auracle hardcodes use of the libstdc++fs filesystem library, while libc++ has the libc++fs library, but when I try to manually replace stdc++fs with c++fs in the meson.build, while it does successfully build, auracle with segfaults upon trying to perform any operation.

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.