falconindy / auracle Goto Github PK
View Code? Open in Web Editor NEWA flexible command line client for Arch Linux's User Repository
License: MIT License
A flexible command line client for Arch Linux's User Repository
License: MIT License
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.
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:
--ignored
allowing the update of the others packages$ 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.
When trying to grab linux-ck, auracle download linux-ck
immediately exits with error code 1, without printing any error.
I haven't had too much time to debug myself, but I was able to deduce that Auracle::Download()
is hitting the return -ENOENT
at the bottom of the function.
auracle info linux-ck
and friends all work fine, so something's amiss.
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 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.
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
This is a request to add aarch64
and armv7
as the supported architectures within the PKGBUILD
for use on ARM-based devices.
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:
git clone
can be used instead of auracle download
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?
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.
Being able to sort searches with various parameters like cower can, especially by popularity, would be a useful feature.
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.
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).
How did you do when you want to check if there is update from AUR and download it automatically to a folder like ~/builld/ for example ?
Back in a days with my lovely cower I was doing this:
cower -dduf --color=auto --timeout=0
And what to do now with auracle ? Thanks
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.
Then one could do something like this:
auracle -F {depends} {makedepends} <<< <json>
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.
Would it be possible to include Co-Maintainers in --searchby
🤔
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.
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.
If Color
is not enabled in pacman.conf it would be nice if auracle displayed colorless output by default as well.
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.
--- 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.
e.g. -i for info, -s for search.
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
.)
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
?
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
.
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.
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.
Terminal output : https://pastebin.com/M98UdZjf
I can't tell if this is an issue with my system or with connection to auracle itself. I don't have a firewall on my system so I'm not sure why it would be doing this.
System info : https://pastebin.com/BRWjGU2h
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?
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?
Would it be feasible to list pkgbase
for split package instead of naming each one pkgname
.
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.
Lines 13 to 19 in 1c6b584
This is pretty much the same as #50, but with the search command. Search always returns 0, even if there are no results.
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
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
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.
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
.
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
.
Be aware of this.
I'm not sure if this is the intended behaviour or not but pacman -Qu has exit code 1 if there are no updates so I figured I'd make an issue in case.
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
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?
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
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
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.
Compared to cower --info
output, auracle info
is currently less detailed:
[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.
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
This is a pacaur specific feature request, since I don't think any other wrapper does something similar.
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").
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.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.