Giter VIP home page Giter VIP logo

chiadog's Introduction

Photo by Zoltan Tukacs on Unsplash


Watchdog for your Chia farm

So you've become a Chia farmer and want to maximize the probability of getting a reward? Chiadog helps with automated monitoring and sends you a mobile notification in case something appears to malfunction.

Supported Notifications

Subsystem Notification (example values) Priority
Harvester Your harvester appears to be offline! No events for the past 400 seconds. HIGH
Harvester Disconnected HDD? The total plot count decreased from 100 to 40. HIGH
Harvester Connected HDD? The total plot count increased from 0 to 42. LOW
Harvester Experiencing networking issues? Harvester did not participate in any challenge for 120 seconds. It's now working again. NORMAL
Harvester Seeking plots took too long: 21.42 seconds! NORMAL
Full Node Experiencing networking issues? Skipped 42 signage points! NORMAL
Full Node Block found!! LOW
Wallet Cha-ching! Just received 2.0 XCH ☘️ LOW
Daily Stats Hello farmer! 👋 Here's what happened in the last 24 hours:

Received ☘️: 2.00 XCH️
Proofs 🧾: 176 found!
- 176 partials submitted 📑
- 0 blocks found 📦
Search 🔍:
- average: 0.46s
- over 5s: 2 occasions
- over 15s: 1 occasions
Plots 🌱: 42, new: 2
Eligible plots 🥇: 0.08 average
Skipped SPs ⚠️: 7 (0.01%)
LOW

Please refer to Status Reference page for detailed explanations of the notifications.

How it works?

It parses the debug.log generated by the chia process and runs various checks to determine the health of your farmer. Among others, it can detect if your node has lost sync and the farmer is no longer participating in challenges, or if one of your external HDDs disconnected and your harvester doesn't have access to the full amount of plots you have.

Access & Security

It only requires read-access to your debug.log file and internet connection to send out notifications. It's highly recommended that you run chiadog in a sandboxed environment. Please use the official docker image.

Furthermore, following best security practices, you should keep your wallet separate.

Supported Integrations for Notifications

You may use one (or more) of the following integrations to receive notifications from chiadog.

Integration Advantages Cost
Pushover High priority notifications that can override your phone's silent mode. $5 one time purchase after 30 day trial.
Pushcut Alternative to Pushover
E-mail You probably already have an email. No additional apps. Free
Slack Quick & easy setup. Free
Discord Quick & easy setup. Free
Telegram Quick & easy setup. Free
Shell script (beta) Execute anything in your own script. Free
MQTT Well-suited for Home Automation. Free
Grafana For hardware monitoring. Free
Ifttt Can be used to send push notifications or to do other API integrations depending on incoming data. Free

For detailed guide on how to test and configure, please refer to INTEGRATIONS.md.

Getting started

Pre-requisites

  • Linux, MacOS & Windows
  • Python 3.7+
  • Git
  • Enabled INFO logs on your chia farmer

The instructions below are specific to Linux and MacOS, for installing chiadog on Windows, please refer to this separate README section.

How to enable INFO logs on chia farmer?

First configure the log level to INFO. This ensures that all logs necessary for chiadog to operate are available under ~/.chia/mainnet/log/debug.log.

chia configure -log-level=INFO

Then restart your farmer to apply the changes:

chia start --restart farmer

Check that logs are coming in:

cat ~/.chia/mainnet/log/debug.log

Installation

Recommended

The new recommended way of using chiadog is via the official docker image.

Manual Installation

For updating from previous version, see section below.

  1. Clone the repository
git clone https://github.com/martomi/chiadog.git
cd chiadog
  1. Run the install script.
./install.sh
  1. Copy the example config file
cp config-example.yaml config.yaml
  1. Open up config.yaml in your editor and configure it to your preferences. The example is large, feel free to omit any portions where you're fine with the defaults!

Updating to the latest release

Skip this if you followed the above section.

cd chiadog

git fetch
git checkout main
git pull

./install.sh

Monitoring a local harvester / farmer

  1. Open config.yaml and configure file_log_consumer:

    • You need to enable the file log consumer to read local chia log files
    • Double-check that the path to your chia logs is correct
  2. Start the watchdog

./start.sh
  1. Verify that your plots are detected. Within a few seconds you should see INFO log:
Detected new plots. Farming with 42 plots.

If you see the above log message, you can be certain that chiadog is running correctly. It'll remain silent until the next scheduled daily notification or until any issues are detected.

You can repeat the above process for every machine where you are running a harvester. Use the notification_title_prefix in config.yaml to give every machine a unique notification prefix so that you can easily distinguish them.

If you don't want to setup chiadog on each machine separately, you can also monitor multiple remote harvesters and run chiadog on a single machine. Please refer to the wiki page on Remote Monitoring Multiple Harvesters.

Troubleshooting

You can enable more verbose logging from config.yaml by changing INFO to DEBUG. You should see logs for every keep-alive event from the harvester.

Times are wrong?

Chia has not yet introduced timezone aware log timestamps. Until they do make sure the TZ environment variable matches between the machine producing the logs and running chiadog. If running chiadog on Docker, pass in -e TZ=UTC, substituting UTC with your timezone, for example Europe/London.

Advanced Usage

Redundant monitoring for chiadog

There are failure-cases in which chiadog is helpless. For example, your computer completely freezes or shuts down. Perhaps your entire home network goes down. chiadog won't be able to send you a notification.

There's a way however: in the config under the section of keep_alive_monitor, you can enable pinging to a remote service that will act as a watchdog of chiadog. A second level of redundancy, if you wish!

You may chose your favourite service for that, I've tested it with HealthChecks.io. It's free to signup and create an endpoint that expects to receive pings every 10 minutes. If it does not, it will notify you. It has integrations with Pushover, Email, Slack, Discord and more.

Running chiadog in the background

. ./venv/bin/activate
nohup python3 -u main.py --config config.yaml > output.log 2>&1 &

To stop chiadog, you can find the Process ID (PID) via ps aux | grep main.py and then softly interrupt the process with kill -SIGINT <pid_here>.

Running chiadog as sandboxed systemd service

Alternatively to the original chiadog docker image, you can setup a systemd service which runs chiadog as a limited user and blocks access to key chia locations.

Contributing

Contributions are always welcome! Please refer to CONTRIBUTING documentation.

chiadog's People

Contributors

ajacobson avatar alexking avatar bdowne01 avatar bradclow avatar connor-knabe avatar ctrlaltdel avatar dependabot[bot] avatar djerfy avatar fiveangle avatar greimela avatar jinnatar avatar johnrees avatar kanasite avatar kilbot avatar lryanuk avatar martomi avatar maxbanton avatar mezzovide avatar miguelcarranza avatar mikehw avatar ougni avatar pieterhelsen avatar skrustev avatar skweee avatar starttoaster avatar turekjiri avatar unsocial-bleach avatar waynewayner 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

chiadog's Issues

Feature: Notification if remote harvester goes offline

I suggest creating a farmer_server_parser that scans the log for farming_info from peer entries. If a remote harvester crashes or disappears for a certain amount of time, it will send a notification. This will help farmers with a lot of remote harvesters detect system outages from a central point (the farmer) without having to install chiadog on every system

Here is an example what to look for in the logs:
2021-04-29T11:51:01.458 farmer farmer_server : INFO <- farming_info from peer 20388420440ccf5068c77086720e0fghfgh14793254319f0af023b59f6eb40 127.0.0.1 2021-04-29T11:51:01.477 farmer farmer_server : INFO <- farming_info from peer ea61688b35f90d69bbe0016ff8c9ca7afghfgbd2a7e1df71e33dde1de15523f4 33.44.55.66 2021-04-29T11:51:01.491 farmer farmer_server : INFO <- farming_info from peer e482cda45c2ebb2926ae1c2798d686afghfgh81f05ecff63e2dd4ba0abae8949 99.44.33.22 2021-04-29T11:51:01.492 farmer farmer_server : INFO <- farming_info from peer fe1eb73036c863f3d21c73c4d6ac5899df7fghfgh579c3cecb06d4e304a6e7 178.18.171.99

MQTT - QoS

Describe the bug

There is a potential bug where the config file input is not properly sanitized.
Quality of Service should be one of '0', '1' or '2' and this is insufficiently checked.

Wallet events are not parsed correctly

With the current 0.5.0 update, wallet events are introduced again. However, after sending myself some mojos using the Chia faucet (https://faucet.chia.net/), I never got any notification.

I checked the contents of debug.log and the amount is no longer quoted, which causes the parser to miss it.

PR #119 fixes the issue.

Appears to be offline when it's not

Fresh install of all software (OS, Chia and all requirements for this program). After about 21 hours of it running, it suddenly started to report "Your harvester appears to be offline! No events for the past 417 seconds. (keep_alive_monitor.py:83)". It kept sending these reports every 5 minutes with the seconds reported climbing accordingly. The issue is that the harvester is not offline. The Chia software shows it is still farming and if I check the logs everything looks fine. I stopped chiadog and started it again and it is all fine now.
Screenshot 2021-05-16 130832

Environment:

  • OS: Windows 10 Pro
  • Python version: 3.9.5 (64-bit)
  • PIP version: 21.1.1
  • Chia version: 1.1.5

May need a fix for Chia 1.0.4

I'm getting some spurious 'HARVESTER: Your harvester appears to be offline! No events..' and I wondered if it's because I just upgraded to 1.0.4 (actually I appear to be on 1.0.5dev, so if you don't see this problem, it may be me.)

Script Notifier

Describe the bug

I cannot get the script notifier to work properly, receiving the below error, can you please share a sample script?

[ ERROR] --- Failed to send events over script: [Errno 8] Exec format error: '/Users/user1/Desktop/chiadog/restart_farm.sh' (notify_manager.py:64)

Environment:

  • OS: Mac
  • Python version: 3.9.4
  • PIP version: 21.0.1
  • Chia version: 1.1.2

ZeroDivisionError on daily report

I just update chiadog today and I set up the daily report for 3 machines, one main machine running a full node (but no local plots) and two remote harvesters. Both of the remote harvesters failed the daily report and gave out a ZeroDivisionError:

Exception in thread Thread-5: Traceback (most recent call last): File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner self.run() File "/usr/lib/python3.8/threading.py", line 870, in run self._target(*self._args, **self._kwargs) File "/home/renan/chiadog/src/chia_log/handlers/daily_stats/stats_manager.py", line 87, in _run_loop self._send_daily_notification() File "/home/renan/chiadog/src/chia_log/handlers/daily_stats/stats_manager.py", line 77, in _send_daily_notification summary += "\n" + stat_acc.get_summary() File "/home/renan/chiadog/src/chia_log/handlers/daily_stats/stat_accumulators/signage_point_stats.py", line 37, in get_summary percentage_skipped = (self._skips_total / self._total) * 100 ZeroDivisionError: division by zero

Chiadog is running on the full node machine.

use pythonic way to read log

I was trying to run this with WSL to see if that would work. It seems like there is an issue where you can't follow a file in WSL without the ---disable-inotify flag on tail. I tested this and added that option in the log consumer and it does work after that. I noticed there have been issues with Windows as well during log rotations. I'm not sure if switching over to a pythonic way of reading the debug file will solve this, but it seems like it would be better since you don't need differentiate between OSes either.

Not sure if remote would work with this either, so it would require a bit of testing.

if is_win_platform():
consume_command_args = ["powershell.exe", "get-content", expanded_user_log_path, "-tail", "1", "-wait"]
else:
consume_command_args = ["tail", "-F", expanded_user_log_path]
f = subprocess.Popen(consume_command_args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while self._is_running:
log_line = f.stdout.readline().decode(encoding="utf-8")
self._notify_subscribers(log_line)

Maybe something like: https://stackoverflow.com/questions/12523044/how-can-i-tail-a-log-file-in-python/53121178#53121178

Edit:

Initially something like this appears to work with little resources:

    def _consume_loop(self):
        expanded_user_log_path = self._log_path.expanduser()
        logging.info(f"Consuming log file from {expanded_user_log_path}")

        try:
            fp = open(expanded_user_log_path, "r")
            st_results = os.stat(expanded_user_log_path)
            st_size = st_results[6]
            fp.seek(st_size)

            while self._is_running:
                where = fp.tell()
                line = fp.readline()
                if not line:
                    time.sleep(1)
                    fp.seek(where)
                elif fp.tell() > os.path.getsize(expanded_user_log_path):
                    logging.info("Log rotated, opening latest log file")
                    fp.close()
                    fp = open(expanded_user_log_path, "r")
                    fp.seek(0,2)
                else:
                    self._notify_subscribers(line)
        except Exception as e:
            fp.close()
            logging.critical(f"Error consuming log file: {e}")

I can run it for a bit and see what happens during rotations as well. This seems to work the same for windows.

Ability to disable HARVESTER checks

I have a Node with ChiaDog, with no harvester or farmer. I wanted to check on Signage points.

As it stands, I get a huge amount of notifications about "Your harvester appears to be offline", which is an "of course" because it isn't a harvester.

Can you add something in the config to disable harvester checks?

Generate report now

I've successfully installed and started chiadog but it appears I have to wait 24 hours to get a report? My full-node "farmer" has been running for days and the debug logs should be full. Why is there no way to generate a report immediately if I already have full logs?? or am I missing something. @martomi

Is all this Docker encapsulation really required to "sandbox" chiadog?

As much as I understand chiadog, it should only require read access to INFO-level debug.log and Internet connectivity.

Therefore, in order to encapsulate chiadog from doing any (thankfully / hopefully theoretical) malicious activity, shouldn't it already be enough to run chiadog as a Unix user with limited permissions, e.g. chiadog and setting up debug.log's Unix file permissions with a e.g. group chialog, which User chiadog is a member of?

Notify harvest timeout

Based on https://chiaforum.com/t/troubleshooting-failure-to-farm-with-lots-of-plots-due-to-harvester-30s-timeout/413/3 and Chia-Network/chia-blockchain#2651 , it seems there could be some troubles if, for any reason, the harvester takes too much time to reply.

2021-04-24T16:03:29.433 harvester chia.harvester.harvester: INFO 3 plots were eligible for farming 1c75d8d21c... Found 0 proofs. Time: 7.92976 s. Total 522 plots

The Time should be, usually, under 5 seconds. So in this example it would be nice to get a notification.
It this time is going around 15 seconds there is the risk to miss the rewards.
If it is 30 seconds than matematically any possible reward is lost, even if there were some eligible.

Failed unit tests for dateutil and yaml

I recently updated to the latest release 0.4 and chiadog was successfully sending notifications to Discord. Then I noticed they stopped after a while so I decided to run the unit tests.

Looks like dateutil and yaml aren't working?

I tried installing them but it didn't solve the problem.

Python Python 2.7.16
Pip pip 18.1 from /usr/lib/python2.7/dist-packages/pip (python 2.7)

pi@chiafarm:~/chiadog $ python3 -m unittest
EEEEEEsssINFO:root:Keep-alive check period: 3 seconds
WARNING:root:Check period below 5 minutes might result in very frequent high priority notifications in case something stops working. Is it intended?
DEBUG:root:Received keep-alive event from HARVESTER
DEBUG:root:Received keep-alive event from HARVESTER
DEBUG:root:Received keep-alive event from HARVESTER
DEBUG:root:Keep-alive check for HARVESTER: Last activity 1 seconds ago.
INFO:root:Waiting for high priority event..
INFO:root:Waiting for high priority event..
INFO:root:Waiting for high priority event..
DEBUG:root:Keep-alive check for HARVESTER: Last activity 4 seconds ago.
WARNING:root:Your harvester appears to be offline! No events for the past 4 seconds.
INFO:root:Stopping
.sssssINFO:root:Initializing script notifier.
Script notifier running with arguments: HIGH HARVESTER High priority notification 1.
.INFO:root:Initializing script notifier.
Script notifier running with arguments: LOW HARVESTER Low priority notification 1.
Script notifier running with arguments: LOW HARVESTER Low priority notification 2.
.INFO:root:Initializing script notifier.
Script notifier running with arguments: NORMAL HARVESTER Normal priority notification 1.
.sssssssssE
======================================================================
ERROR: src.chia_log.handlers (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: src.chia_log.handlers
Traceback (most recent call last):
  File "/usr/lib/python3.7/unittest/loader.py", line 470, in _find_test_path
    package = self._get_module_from_name(name)
  File "/usr/lib/python3.7/unittest/loader.py", line 377, in _get_module_from_name
    __import__(name)
  File "/home/pi/chiadog/src/chia_log/handlers/__init__.py", line 14, in <module>
    from .daily_stats.stats_manager import StatsManager
  File "/home/pi/chiadog/src/chia_log/handlers/daily_stats/__init__.py", line 5, in <module>
    from ...parsers.finished_signage_point_parser import FinishedSignagePointMessage
  File "/home/pi/chiadog/src/chia_log/parsers/finished_signage_point_parser.py", line 9, in <module>
    from dateutil import parser as dateutil_parser
ModuleNotFoundError: No module named 'dateutil'


======================================================================
ERROR: tests.chia_log.handlers.test_finished_signage_point_handler (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: tests.chia_log.handlers.test_finished_signage_point_handler
Traceback (most recent call last):
  File "/usr/lib/python3.7/unittest/loader.py", line 436, in _find_test_path
    module = self._get_module_from_name(name)
  File "/usr/lib/python3.7/unittest/loader.py", line 377, in _get_module_from_name
    __import__(name)
  File "/home/pi/chiadog/tests/chia_log/handlers/test_finished_signage_point_handler.py", line 6, in <module>
    from src.chia_log.handlers import finished_signage_point_handler
  File "/home/pi/chiadog/src/chia_log/handlers/__init__.py", line 14, in <module>
    from .daily_stats.stats_manager import StatsManager
  File "/home/pi/chiadog/src/chia_log/handlers/daily_stats/__init__.py", line 5, in <module>
    from ...parsers.finished_signage_point_parser import FinishedSignagePointMessage
  File "/home/pi/chiadog/src/chia_log/parsers/finished_signage_point_parser.py", line 9, in <module>
    from dateutil import parser as dateutil_parser
ModuleNotFoundError: No module named 'dateutil'


======================================================================
ERROR: tests.chia_log.handlers.test_harvester_activity_handler (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: tests.chia_log.handlers.test_harvester_activity_handler
Traceback (most recent call last):
  File "/usr/lib/python3.7/unittest/loader.py", line 436, in _find_test_path
    module = self._get_module_from_name(name)
  File "/usr/lib/python3.7/unittest/loader.py", line 377, in _get_module_from_name
    __import__(name)
  File "/home/pi/chiadog/tests/chia_log/handlers/test_harvester_activity_handler.py", line 6, in <module>
    from src.chia_log.handlers import harvester_activity_handler
  File "/home/pi/chiadog/src/chia_log/handlers/__init__.py", line 14, in <module>
    from .daily_stats.stats_manager import StatsManager
  File "/home/pi/chiadog/src/chia_log/handlers/daily_stats/__init__.py", line 5, in <module>
    from ...parsers.finished_signage_point_parser import FinishedSignagePointMessage
  File "/home/pi/chiadog/src/chia_log/parsers/finished_signage_point_parser.py", line 9, in <module>
    from dateutil import parser as dateutil_parser
ModuleNotFoundError: No module named 'dateutil'


======================================================================
ERROR: tests.chia_log.handlers.util.test_calculate_skipped_signage_points (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: tests.chia_log.handlers.util.test_calculate_skipped_signage_points
Traceback (most recent call last):
  File "/usr/lib/python3.7/unittest/loader.py", line 436, in _find_test_path
    module = self._get_module_from_name(name)
  File "/usr/lib/python3.7/unittest/loader.py", line 377, in _get_module_from_name
    __import__(name)
  File "/home/pi/chiadog/tests/chia_log/handlers/util/test_calculate_skipped_signage_points.py", line 7, in <module>
    from src.chia_log.handlers.util.calculate_skipped_signage_points import calculate_skipped_signage_points
  File "/home/pi/chiadog/src/chia_log/handlers/__init__.py", line 14, in <module>
    from .daily_stats.stats_manager import StatsManager
  File "/home/pi/chiadog/src/chia_log/handlers/daily_stats/__init__.py", line 5, in <module>
    from ...parsers.finished_signage_point_parser import FinishedSignagePointMessage
  File "/home/pi/chiadog/src/chia_log/parsers/finished_signage_point_parser.py", line 9, in <module>
    from dateutil import parser as dateutil_parser
ModuleNotFoundError: No module named 'dateutil'


======================================================================
ERROR: tests.chia_log.parsers.test_finished_signage_point_parser (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: tests.chia_log.parsers.test_finished_signage_point_parser
Traceback (most recent call last):
  File "/usr/lib/python3.7/unittest/loader.py", line 436, in _find_test_path
    module = self._get_module_from_name(name)
  File "/usr/lib/python3.7/unittest/loader.py", line 377, in _get_module_from_name
    __import__(name)
  File "/home/pi/chiadog/tests/chia_log/parsers/test_finished_signage_point_parser.py", line 6, in <module>
    from src.chia_log.parsers import finished_signage_point_parser
  File "/home/pi/chiadog/src/chia_log/parsers/finished_signage_point_parser.py", line 9, in <module>
    from dateutil import parser as dateutil_parser
ModuleNotFoundError: No module named 'dateutil'


======================================================================
ERROR: tests.chia_log.parsers.test_harvester_activity_parser (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: tests.chia_log.parsers.test_harvester_activity_parser
Traceback (most recent call last):
  File "/usr/lib/python3.7/unittest/loader.py", line 436, in _find_test_path
    module = self._get_module_from_name(name)
  File "/usr/lib/python3.7/unittest/loader.py", line 377, in _get_module_from_name
    __import__(name)
  File "/home/pi/chiadog/tests/chia_log/parsers/test_harvester_activity_parser.py", line 6, in <module>
    from src.chia_log.parsers import harvester_activity_parser
  File "/home/pi/chiadog/src/chia_log/parsers/harvester_activity_parser.py", line 9, in <module>
    from dateutil import parser as dateutil_parser
ModuleNotFoundError: No module named 'dateutil'


======================================================================
ERROR: tests.test_config (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: tests.test_config
Traceback (most recent call last):
  File "/usr/lib/python3.7/unittest/loader.py", line 436, in _find_test_path
    module = self._get_module_from_name(name)
  File "/usr/lib/python3.7/unittest/loader.py", line 377, in _get_module_from_name
    __import__(name)
  File "/home/pi/chiadog/tests/test_config.py", line 6, in <module>
    from src.config import Config
  File "/home/pi/chiadog/src/config.py", line 7, in <module>
    import yaml
ModuleNotFoundError: No module named 'yaml'


----------------------------------------------------------------------
Ran 28 tests in 6.038s

FAILED (errors=7, skipped=17)

False-failure of harvester detected

chiadog notified me of "harvester appears to be offline" t 401s, 701s, then 1001s. However, the GUI showed the remote harvester lookups scrolling through as expected and tailing the debug logs showed the same. I quit and restarted chiadog without any other changes, and it started as expected without any errors or warnings and began functioning as expected again.

I know that the Windows implementation is relatively new, so how should I prepare to capture additional detail assuming a similar problem will occur again ?

Thanks again for such an awesome aid for us little farmers ! :)

  • OS: Windos 10 Pro AMD64 (latest patchlevel)
  • Python version: 3.9.5:0a7dcbd 64-bit for Windows
  • PIP version: 21.1.1
  • Chia version: 1.1.4 for Windows (+1.1.4 for remote harvesters running on Ubuntu 21.04)
  • chiadog version: 592dcc9

Last farming event was...

Hi guys!

I have many remote harvesters on Windows that trigger this notification.

Last farming event was 40 seconds ago. This is unusual.

When I look into the debug.log file, everything seems normal.

Is it normal?

Thanks!

Support for Windows

I personally don't have Windows to test and am not familiar with how the chia environment there is setup but can provide guidance on the steps necessary to add such support.

Here are some jumping off points if someone wants to take over:

  • We need a WIndowsLogConsumer that is analogous to the UNIX implementation in FileLogConsumer. It needs to replace the tail -F command with the analogous command for PowerShell.
    • Possibly something like Get-Content <log-file> -Tail <#-of-rows> -Wait
  • Add windows_log_consumer config. See here for an example. It needs to point to default path on Windows where debug.log is stored.
  • The project is using pathlib for handling the file paths. I believe this is compatible with Windows paths but needs to be tested.

I suggest doing a quick test by directly modifying the FileLogConsumer and changing the path in the config to see if there are any other showstoppers to make this work on Windows. That will already be very valuable feedback.

Windows - Dev branch - WindowsPath not iterable

**
I got this in the dev branch on line 76 of log_consumer.py

python popen argument of type 'WindowsPath' is not iterable

Environment:

  • OS: Windows 10
  • Python version: 3.9.5

**
I changed the code on line 68 to:
expanded_user_log_path = str(self._log_path.expanduser())

which fixes it. I tried to push a branch with that small change for you guys to review, but I have no permission to push

Add hostname of system to alerts

When running chiadog for multiple harvesters it would be helpful to have the hostname (or variable in config) added to the alerts to define which system an alert is for.

Connect Chiadog over SSH to the FULL_NODE

Hi all,

It is not totally a bug, but I cant find my way around to pass the password when I login to another machine over SSH.

network_log_consumer:
    enable: true
    remoteuser: "xx"

I do get the following error back.

[2021-05-18 20:34:20] [    INFO] --- Connected (version 2.0, client OpenSSH_8.2p1) (transport.py:1819)
Traceback (most recent call last):
  File "main.py", line 54, in <module>
    log_consumer = create_log_consumer_from_config(chia_logs_config)
  File "/home/nfsserver/chiadog/src/chia_log/log_consumer.py", line 179, in create_log_consumer_from_config
    platform, path = get_host_info(
  File "/home/nfsserver/chiadog/src/chia_log/log_consumer.py", line 132, in get_host_info
    client.connect(hostname=host, username=user, port=port)
  File "/home/nfsserver/chiadog/venv/lib/python3.8/site-packages/paramiko/client.py", line 435, in connect
    self._auth(
  File "/home/nfsserver/chiadog/venv/lib/python3.8/site-packages/paramiko/client.py", line 765, in _auth
    raise SSHException("No authentication methods available")
paramiko.ssh_exception.SSHException: No authentication methods available

What is the safest way ? To provide the password during the initialization of the script or work with SSH-keys (but how)?

Environment:

  • OS: Ubuntu Server 20.04 LTS
  • Python version: 3.8.5
  • PIP version: 21.1.1
  • Chia version: 1.1.5

Don't let dev be the new main

Thanks for chiadog, it's replaced my own scripts. I suggest to not fall into the "dev branch trap".
We have seen at plotman what happens when the main branch is not maintained and progress only happens on dev (users have to maintain own forks, difficult to update once it is eventually merged etc.).
The chia team decided to get rid of the dev branch altogether, a good choice imo. Instead they develop features on separate branches and merge them via pull requests into main.
If you have confirmed features are working, please consider integrating them into main sooner than later.

Daily report data does not survive a script restart

If for some reason, like a bug or some other reason that you need to restart the script, the totals it was keeping track of for the day gets reset. So when the daily report gets sent, it is not accurate. I am not sure if this is a bug report or a feature request. But it sure would be more useful if the data being tracked for the day would survive a restart and continue to be updated when it comes back online. Maybe even include the number of times the service was started that day. If you think about it, if the service was writing to a file to track this information, it could also write a heartbeat that would include the date/time. With that information, it could even produce a statistic telling the user how much time during that day Swar was not monitoring their system. If the time between the new heartbeat and the last heartbeat was longer than expected, it could be calculated as a gap in monitoring and added to the offline total.

Thank you. Keep up the great work.

FEATURE REQUEST: ability to use custom SSH port

multiple harvesters. Am not able to connect because chiadog uses port 22 for SSH. I use a custom port. Would be nice to be able to change this in the prefs or yaml.

python3 main.py --config config-harvester-1.yaml
paramiko.ssh_exception.NoValidConnectionsError: [Errno None] Unable to connect to port 22 on 192.168.1.224

Paramiko - PasswordRequiredException when restarting chiadog

Describe the bug

I'm running chiadog in a remote harvester setup with a password-protected private key from a tmux session with multiple Windows (one for each remote harvester). After upgrading to 0.4.1 (main) and restarting chiadog I get an error message saying that the private key file is encrypted.

It appears that the Paramiko library is not able to access ssh-agent.

    self._ssh_client.connect(hostname=self._remote_host, username=self._remote_user)
  File "/home/pieter/chiadog/venv/lib/python3.8/site-packages/paramiko/client.py", line 435, in connect
    self._auth(
  File "/home/pieter/chiadog/venv/lib/python3.8/site-packages/paramiko/client.py", line 764, in _auth
    raise saved_exception
  File "/home/pieter/chiadog/venv/lib/python3.8/site-packages/paramiko/client.py", line 734, in _auth
    key = self._key_from_filepath(
  File "/home/pieter/chiadog/venv/lib/python3.8/site-packages/paramiko/client.py", line 586, in _key_from_filepath
    key = klass.from_private_key_file(key_path, password)
  File "/home/pieter/chiadog/venv/lib/python3.8/site-packages/paramiko/pkey.py", line 235, in from_private_key_file
    key = cls(filename=filename, password=password)
  File "/home/pieter/chiadog/venv/lib/python3.8/site-packages/paramiko/rsakey.py", line 55, in __init__
    self._from_private_key_file(filename, password)
  File "/home/pieter/chiadog/venv/lib/python3.8/site-packages/paramiko/rsakey.py", line 175, in _from_private_key_file
    data = self._read_private_key_file("RSA", filename, password)
  File "/home/pieter/chiadog/venv/lib/python3.8/site-packages/paramiko/pkey.py", line 308, in _read_private_key_file
    data = self._read_private_key(tag, f, password)
  File "/home/pieter/chiadog/venv/lib/python3.8/site-packages/paramiko/pkey.py", line 337, in _read_private_key
    data = self._read_private_key_openssh(lines[start:end], password)
  File "/home/pieter/chiadog/venv/lib/python3.8/site-packages/paramiko/pkey.py", line 438, in _read_private_key_openssh
    raise PasswordRequiredException(
paramiko.ssh_exception.PasswordRequiredException: private key file is encrypted

The workaround for this issue is to kill ssh-agent and re-add the key everytime I restart the process. So since I have three remote harvesters (one Windows, two Linux), I need to do:

  1. Run python3 chiadog --config harvester1.yaml to see if the issue occurs
  2. Stop chiadog
  3. Run ps aux | grep ssh-agent to find out the PID
  4. Run kill [PID]
  5. Run ```eval `ssh-agent -s````
  6. Run ssh-add ~/.ssh/id_rsa
  7. Run python3 chiadog --config harvester1.yaml
  8. Rinse and repeat for each harvester

I am not sure whether it is chiadogs implementation of Paramiko or some inherent bug in the Paramiko library. I did notice that Paramiko use the PasswordRequiredException as a bit of a catch-all, so it may be something else entirely.

My main goal for this ticket:

  • Check whether other people have the same problem
  • Come up with potential solutions or explanations. E.g. implement Fabric instead of Paramiko, which is a simplified interface on top of Paramiko and might simplify some of the error handling.

Environment:

  • OS: Ubuntu 20.04
  • Python version: 3.8.5
  • PIP version: 20.3.3
  • Chia version: 1.1.1

Install failed on Raspbian 64 Bit

Tried to install on my Raspberry Pi 4 running Raspbian 64 bit.

Complete output from command /home/pi/chiadog/venv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-85rdwdul/cffi/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-g75sangs --python-tag cp37:
    Package libffi was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libffi.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libffi' found
    Package libffi was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libffi.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libffi' found
    Package libffi was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libffi.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libffi' found
    Package libffi was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libffi.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libffi' found
    Package libffi was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libffi.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libffi' found
    usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
       or: -c --help [cmd1 cmd2 ...]
       or: -c --help-commands
       or: -c cmd --help
  
    error: invalid command 'bdist_wheel'
  
    ----------------------------------------
    Failed building wheel for cffi
    Running setup.py clean for cffi
  Failed to build cffi
  Installing collected packages: setuptools, wheel, pycparser, cffi, semantic-version, toml, setuptools-rust
    Running setup.py install for cffi: started
      Running setup.py install for cffi: finished with status 'error'
      Complete output from command /home/pi/chiadog/venv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-85rdwdul/cffi/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-k2ncf00a/install-record.txt --single-version-externally-managed --prefix /tmp/pip-build-env-0wwhbf2l --compile --install-headers /home/pi/chiadog/venv/include/site/python3.7/cffi:
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'libffi' found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'libffi' found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'libffi' found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'libffi' found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'libffi' found
      running install
      running build
      running build_py
      creating build
      creating build/lib.linux-aarch64-3.7
      creating build/lib.linux-aarch64-3.7/cffi
      copying cffi/backend_ctypes.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/commontypes.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/ffiplatform.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/setuptools_ext.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/vengine_gen.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/cffi_opcode.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/pkgconfig.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/error.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/recompiler.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/vengine_cpy.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/cparser.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/model.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/api.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/lock.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/verifier.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/__init__.py -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/_cffi_include.h -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/parse_c_type.h -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/_embedding.h -> build/lib.linux-aarch64-3.7/cffi
      copying cffi/_cffi_errors.h -> build/lib.linux-aarch64-3.7/cffi
      running build_ext
      building '_cffi_backend' extension
      creating build/temp.linux-aarch64-3.7
      creating build/temp.linux-aarch64-3.7/c
      aarch64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DUSE__THREAD -DHAVE_SYNC_SYNCHRONIZE -I/usr/include/ffi -I/usr/include/libffi -I/home/pi/chiadog/venv/include -I/usr/include/python3.7m -c c/_cffi_backend.c -o build/temp.linux-aarch64-3.7/c/_cffi_backend.o
      c/_cffi_backend.c:15:10: fatal error: ffi.h: No such file or directory
       #include <ffi.h>
                ^~~~~~~
      compilation terminated.
      error: command 'aarch64-linux-gnu-gcc' failed with exit status 1
  
      ----------------------------------------
  Command "/home/pi/chiadog/venv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-85rdwdul/cffi/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-k2ncf00a/install-record.txt --single-version-externally-managed --prefix /tmp/pip-build-env-0wwhbf2l --compile --install-headers /home/pi/chiadog/venv/include/site/python3.7/cffi" failed with error code 1 in /tmp/pip-install-85rdwdul/cffi/
  
  ----------------------------------------
Command "/home/pi/chiadog/venv/bin/python3 -m pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-0wwhbf2l --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple --extra-index-url https://www.piwheels.org/simple -- setuptools>=40.6.0 wheel "cffi>=1.12; platform_python_implementation != 'PyPy'" setuptools-rust>=0.11.4" failed with error code 1 in None

Error warning missing wallet_events

Hi,

Today I upgraded to version 0.5.0. When starting Chiadog now I see an error:

image

I don't see an instruction in the upgrade notes what to add to the config.yaml.

Add custom frequency config option for daily stats report & add manual trigger

Currently, chiadog can send a daily stats report, which is awesome.
Request:

  1. Add a config field to set the frequency of this report, e.g. every 5 hours, every 1 hour, etc. This is especially helpful while troubleshooting issues with the farmer.

  2. Add the ability to trigger a stats notifications manually. Again, this is helpful for troubleshooting. It would be extra nice if this were possible to call via CLI, a script, or cron.

Telegram unit tests not passing

Describe the bug

Hey folks, I created a telegram bot and got my chat ID but when I try to run the unit tests I get the following output:

TELEGRAM_BOT_TOKEN=MYTOKENHERE TELEGRAM_CHAT_ID=MYIDHERE python3 -m unittest tests.notifier.test_telegram_notifier
WARNING:root:Problem sending event to user, code: 400
FWARNING:root:Problem sending event to user, code: 400
WARNING:root:Problem sending event to user, code: 400
FWARNING:root:Problem sending event to user, code: 400
F
======================================================================
FAIL: testTelegramHighPriorityNotifications (tests.notifier.test_telegram_notifier.TestTelegramNotifier)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/myuser/chiadog/tests/notifier/test_telegram_notifier.py", line 38, in testTelegramHighPriorityNotifications
    self.assertTrue(success)
AssertionError: False is not true

======================================================================
FAIL: testTelegramLowPriorityNotifications (tests.notifier.test_telegram_notifier.TestTelegramNotifier)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/myuser/chiadog/tests/notifier/test_telegram_notifier.py", line 28, in testTelegramLowPriorityNotifications
    self.assertTrue(success)
AssertionError: False is not true

======================================================================
FAIL: testTelegramNormalPriorityNotifications (tests.notifier.test_telegram_notifier.TestTelegramNotifier)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/myuser/chiadog/tests/notifier/test_telegram_notifier.py", line 33, in testTelegramNormalPriorityNotifications
    self.assertTrue(success)
AssertionError: False is not true

----------------------------------------------------------------------
Ran 3 tests in 0.370s

FAILED (failures=3)

Do you have any idea what went wrong? The bot token and chat ID was copy pasted so it can't be a typo.
And the regular tests (python3 -m unittest) are passing.

Environment:

  • OS: Ubuntu 21.04
  • Python version: 3.9.4
  • PIP version: 21.1.1
  • Chia version: 1.1.5

failed building wheel for pynacl

Apologies if this is an issue with my machine and not with Chiadog. I'm running Ubuntu 20.04.2 LTS on a Raspberry Pi 4B. When I run the pip3 install wheel && pip3 install -r requirements.txt command, I get an error: ERROR: Could not build wheels for pynacl which use PEP 517 and cannot be installed directly. Are there any suggestions on how to fix this?

Again, sorry if this isn't the right place to post this, I'm both new to Linux and Github. Cheers!

Smtp error in chiadog's notification, but send emial using Smtp directly is work normal.

Describe the bug

I don't why when the chiadog try to send notification through smtp I got below error. seems the network is not connected to internet, but whan I try to send email directly through python code also with smtp is successed.

[2021-05-11 01:13:17] [ WARNING] --- Experiencing networking issues? Skipped 2+ signage points in the last hour. (non_skipped_signage_points.py:46)
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/smtplib.py", line 391, in getreply
    line = self.file.readline(_MAXLINE + 1)
  File "/usr/lib/python3.8/socket.py", line 669, in readinto
    return self._sock.recv_into(b)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/chiadog/src/notifier/smtp_notifier.py", line 55, in send_events_to_user
    server = smtplib.SMTP(self.host, self.port, timeout=self._conn_timeout_seconds)
  File "/usr/lib/python3.8/smtplib.py", line 253, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python3.8/smtplib.py", line 341, in connect
    (code, msg) = self.getreply()
  File "/usr/lib/python3.8/smtplib.py", line 394, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed: "
smtplib.SMTPServerDisconnected: Connection unexpectedly closed: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/__init__.py", line 1081, in emit
    msg = self.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 925, in format
    return fmt.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 664, in format
    record.message = record.getMessage()
  File "/usr/lib/python3.8/logging/__init__.py", line 369, in getMessage
    msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
  File "/usr/lib/python3.8/threading.py", line 890, in _bootstrap
    self._bootstrap_inner()
  File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/chiadog/src/chia_log/log_consumer.py", line 80, in _consume_loop
    self._notify_subscribers(log_line)
  File "/chiadog/src/chia_log/log_consumer.py", line 50, in _notify_subscribers
    subscriber.consume_logs(logs)
  File "/chiadog/src/chia_log/log_handler.py", line 37, in consume_logs
    self._notify_manager.process_events(events)
  File "/chiadog/src/notifier/notify_manager.py", line 61, in process_events
    if not self._notifiers[key].send_events_to_user(events):
  File "/chiadog/src/notifier/smtp_notifier.py", line 65, in send_events_to_user
    logging.error("SMTP Notify Error: ", e)
Message: 'SMTP Notify Error: '
Arguments: (SMTPServerDisconnected('Connection unexpectedly closed: timed out'),)
[2021-05-11 01:13:27] [   ERROR] --- Failed to send events over smtp (notify_manager.py:62)

This is my python3 code for send email directly in docker, that can access internet with no error.

babybear@chiah001:~$ cat sendemail.py 
import smtplib, ssl

#port = 587  # For SSL
port = 465
password = "******"
smtp_server = "smtp.163.com"
sender_email = "******@163.com"  # Enter your address
receiver_email = "******@163.com"  # Enter receiver address
message = """\
Subject: Hi there

This message is sent from docker."""

context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, message)

Environment:

  • OS: Ubuntu, chiadog in docker
  • Python version: 3.8.5
  • PIP version: 20.0.2
  • Chia version: 1.1.5

aarch64 build error with pynacl

Trying to install chiadog into my raspberry pi4, however the build process will hit the error point where it requires "aarch64-linux-gnu-gcc".

  ERROR: Command errored out with exit status 1:
   command: /home/eric/Chia/chiadog/venv/bin/python3 /home/eric/Chia/chiadog/venv/lib/python3.8/site-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /tmp/tmpytcbyw08
       cwd: /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda
  Complete output (1075 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-aarch64-3.8
  creating build/lib.linux-aarch64-3.8/nacl
  copying src/nacl/__init__.py -> build/lib.linux-aarch64-3.8/nacl
  copying src/nacl/encoding.py -> build/lib.linux-aarch64-3.8/nacl
  copying src/nacl/hashlib.py -> build/lib.linux-aarch64-3.8/nacl
  copying src/nacl/exceptions.py -> build/lib.linux-aarch64-3.8/nacl
  copying src/nacl/secret.py -> build/lib.linux-aarch64-3.8/nacl
  copying src/nacl/hash.py -> build/lib.linux-aarch64-3.8/nacl
  copying src/nacl/public.py -> build/lib.linux-aarch64-3.8/nacl
  copying src/nacl/utils.py -> build/lib.linux-aarch64-3.8/nacl
  copying src/nacl/signing.py -> build/lib.linux-aarch64-3.8/nacl
  creating build/lib.linux-aarch64-3.8/nacl/pwhash
  copying src/nacl/pwhash/__init__.py -> build/lib.linux-aarch64-3.8/nacl/pwhash
  copying src/nacl/pwhash/argon2i.py -> build/lib.linux-aarch64-3.8/nacl/pwhash
  copying src/nacl/pwhash/_argon2.py -> build/lib.linux-aarch64-3.8/nacl/pwhash
  copying src/nacl/pwhash/scrypt.py -> build/lib.linux-aarch64-3.8/nacl/pwhash
  copying src/nacl/pwhash/argon2id.py -> build/lib.linux-aarch64-3.8/nacl/pwhash
  creating build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/__init__.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/crypto_hash.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/crypto_secretstream.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/sodium_core.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/crypto_box.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/crypto_generichash.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/crypto_sign.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/crypto_secretbox.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/crypto_pwhash.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/crypto_shorthash.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/utils.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/crypto_kx.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/randombytes.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/crypto_scalarmult.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/crypto_aead.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  copying src/nacl/bindings/crypto_core.py -> build/lib.linux-aarch64-3.8/nacl/bindings
  running build_clib
  checking build system type... aarch64-unknown-linux-gnu
  checking host system type... aarch64-unknown-linux-gnu
  checking for a BSD-compatible install... /usr/bin/install -c
  checking whether build environment is sane... yes
  checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
  checking for gawk... gawk
  checking whether make sets $(MAKE)... yes
  checking whether make supports nested variables... yes
  checking whether UID '0' is supported by ustar format... yes
  checking whether GID '0' is supported by ustar format... yes
  checking how to create a ustar tar archive... gnutar
  checking whether make supports nested variables... (cached) yes
  checking whether to enable maintainer-specific portions of Makefiles... no
  checking whether make supports the include directive... yes (GNU style)
  checking for gcc... aarch64-linux-gnu-gcc -pthread
  checking whether the C compiler works... yes
  checking for C compiler default output file name... a.out
  checking for suffix of executables...
  checking whether we are cross compiling... no
  checking for suffix of object files... o
  checking whether we are using the GNU C compiler... yes
  checking whether aarch64-linux-gnu-gcc -pthread accepts -g... yes
  checking for aarch64-linux-gnu-gcc -pthread option to accept ISO C89... none needed
  checking whether aarch64-linux-gnu-gcc -pthread understands -c and -o together... yes
  checking dependency style of aarch64-linux-gnu-gcc -pthread... none
  checking for a sed that does not truncate output... /usr/bin/sed
  checking how to run the C preprocessor... aarch64-linux-gnu-gcc -pthread -E
  checking for grep that handles long lines and -e... /usr/bin/grep
  checking for egrep... /usr/bin/grep -E
  checking whether aarch64-linux-gnu-gcc -pthread is Clang... no
  checking whether pthreads work with -pthread... yes
  checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
  checking whether more special flags are required for pthreads... no
  checking for PTHREAD_PRIO_INHERIT... yes
  checking for aarch64-linux-gnu-gcc -pthread option to accept ISO C99... none needed
  checking dependency style of aarch64-linux-gnu-gcc -pthread... none
  checking for ANSI C header files... yes
  checking for sys/types.h... yes
  checking for sys/stat.h... yes
  checking for stdlib.h... yes
  checking for string.h... yes
  checking for memory.h... yes
  checking for strings.h... yes
  checking for inttypes.h... yes
  checking for stdint.h... yes
  checking for unistd.h... yes
  checking minix/config.h usability... no
  checking minix/config.h presence... no
  checking for minix/config.h... no
  checking whether it is safe to define __EXTENSIONS__... yes
  checking for variable-length arrays... yes
  checking for __wasi__ defined... no
  checking for _FORTIFY_SOURCE defined... yes
  checking whether C compiler accepts -fvisibility=hidden... yes
  checking whether C compiler accepts -fPIC... yes
  checking whether C compiler accepts -fPIE... yes
  checking whether the linker accepts -pie... yes
  checking whether C compiler accepts -fno-strict-aliasing... yes
  checking whether C compiler accepts -fno-strict-overflow... yes
  checking whether C compiler accepts -fstack-protector... yes
  checking whether the linker accepts -fstack-protector... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wall... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra... yes
  checking for clang... no
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes -Wnested-externs... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-type-limits... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-type-limits -Wno-unknown-pragmas... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-type-limits -Wno-unknown-pragmas -Wnormalized=id... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-type-limits -Wno-unknown-pragmas -Wnormalized=id -Wnull-dereference... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-type-limits -Wno-unknown-pragmas -Wnormalized=id -Wnull-dereference -Wold-style-declaration... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-type-limits -Wno-unknown-pragmas -Wnormalized=id -Wnull-dereference -Wold-style-declaration -Wpointer-arith... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-type-limits -Wno-unknown-pragmas -Wnormalized=id -Wnull-dereference -Wold-style-declaration -Wpointer-arith -Wredundant-decls... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-type-limits -Wno-unknown-pragmas -Wnormalized=id -Wnull-dereference -Wold-style-declaration -Wpointer-arith -Wredundant-decls -Wrestrict... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-type-limits -Wno-unknown-pragmas -Wnormalized=id -Wnull-dereference -Wold-style-declaration -Wpointer-arith -Wredundant-decls -Wrestrict -Wshorten-64-to-32... no
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-type-limits -Wno-unknown-pragmas -Wnormalized=id -Wnull-dereference -Wold-style-declaration -Wpointer-arith -Wredundant-decls -Wrestrict -Wsometimes-uninitialized... no
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-type-limits -Wno-unknown-pragmas -Wnormalized=id -Wnull-dereference -Wold-style-declaration -Wpointer-arith -Wredundant-decls -Wrestrict -Wstrict-prototypes... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-type-limits -Wno-unknown-pragmas -Wnormalized=id -Wnull-dereference -Wold-style-declaration -Wpointer-arith -Wredundant-decls -Wrestrict -Wstrict-prototypes -Wswitch-enum... yes
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-type-limits -Wno-unknown-pragmas -Wnormalized=id -Wnull-dereference -Wold-style-declaration -Wpointer-arith -Wredundant-decls -Wrestrict -Wstrict-prototypes -Wswitch-enum -Wvariable-decl... no
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -Wextra -Wbad-function-cast -Wcast-qual -Wdiv-by-zero -Wduplicated-branches -Wduplicated-cond -Wfloat-equal -Wformat=2 -Wlogical-op -Wmaybe-uninitialized -Wmisleading-indentation -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-type-limits -Wno-unknown-pragmas -Wnormalized=id -Wnull-dereference -Wold-style-declaration -Wpointer-arith -Wredundant-decls -Wrestrict -Wstrict-prototypes -Wswitch-enum -Wwrite-strings... yes
  checking whether the linker accepts -Wl,-z,relro... yes
  checking whether the linker accepts -Wl,-z,now... yes
  checking whether the linker accepts -Wl,-z,noexecstack... yes
  checking whether segmentation violations can be caught when using the C compiler... yes
  checking whether SIGABRT can be caught when using the C compiler... yes
  checking for thread local storage (TLS) class... _Thread_local
  thread local storage is supported
  checking whether C compiler accepts -ftls-model=local-dynamic... yes
  checking how to print strings... printf
  checking for a sed that does not truncate output... (cached) /usr/bin/sed
  checking for fgrep... /usr/bin/grep -F
  checking for ld used by aarch64-linux-gnu-gcc -pthread... /usr/bin/ld
  checking if the linker (/usr/bin/ld) is GNU ld... yes
  checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
  checking the name lister (/usr/bin/nm -B) interface... BSD nm
  checking whether ln -s works... yes
  checking the maximum length of command line arguments... 1572864
  checking how to convert aarch64-unknown-linux-gnu file names to aarch64-unknown-linux-gnu format... func_convert_file_noop
  checking how to convert aarch64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
  checking for /usr/bin/ld option to reload object files... -r
  checking for objdump... objdump
  checking how to recognize dependent libraries... pass_all
  checking for dlltool... no
  checking how to associate runtime and link libraries... printf %s\n
  checking for ar... ar
  checking for archiver @FILE support... @
  checking for strip... strip
  checking for ranlib... ranlib
  checking command to parse /usr/bin/nm -B output from aarch64-linux-gnu-gcc -pthread object... ok
  checking for sysroot... no
  checking for a working dd... /usr/bin/dd
  checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
  checking for mt... mt
  checking if mt is a manifest tool... no
  checking for dlfcn.h... yes
  checking for objdir... .libs
  checking if aarch64-linux-gnu-gcc -pthread supports -fno-rtti -fno-exceptions... no
  checking for aarch64-linux-gnu-gcc -pthread option to produce PIC... -fPIC -DPIC
  checking if aarch64-linux-gnu-gcc -pthread PIC flag -fPIC -DPIC works... yes
  checking if aarch64-linux-gnu-gcc -pthread static flag -static works... yes
  checking if aarch64-linux-gnu-gcc -pthread supports -c -o file.o... yes
  checking if aarch64-linux-gnu-gcc -pthread supports -c -o file.o... (cached) yes
  checking whether the aarch64-linux-gnu-gcc -pthread linker (/usr/bin/ld) supports shared libraries... yes
  checking dynamic linker characteristics... GNU/Linux ld.so
  checking how to hardcode library paths into programs... immediate
  checking whether stripping libraries is possible... yes
  checking if libtool supports shared libraries... yes
  checking whether to build shared libraries... no
  checking whether to build static libraries... yes
  checking for ar... (cached) ar
  checking whether C compiler accepts -mmmx... no
  checking for MMX instructions set... no
  checking whether C compiler accepts -msse2... no
  checking for SSE2 instructions set... no
  checking whether C compiler accepts -msse3... no
  checking for SSE3 instructions set... no
  checking whether C compiler accepts -mssse3... no
  checking for SSSE3 instructions set... no
  checking whether C compiler accepts -msse4.1... no
  checking for SSE4.1 instructions set... no
  checking whether C compiler accepts -mavx... no
  checking for AVX instructions set... no
  checking whether C compiler accepts -mavx2... no
  checking for AVX2 instructions set... no
  checking whether C compiler accepts -mavx512f... no
  checking for AVX512F instructions set... no
  checking whether C compiler accepts -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -pthread -fvisibility=hidden -fPIC -fPIE -fno-strict-aliasing -fno-strict-overflow -fstack-protector -ftls-model=local-dynamic -mno-avx512f... no
  checking whether C compiler accepts -maes... no
  checking whether C compiler accepts -mpclmul... no
  checking for AESNI instructions set and PCLMULQDQ... no
  checking whether C compiler accepts -mrdrnd... no
  checking for RDRAND... no
  checking sys/mman.h usability... yes
  checking sys/mman.h presence... yes
  checking for sys/mman.h... yes
  checking sys/random.h usability... yes
  checking sys/random.h presence... yes
  checking for sys/random.h... yes
  checking intrin.h usability... no
  checking intrin.h presence... no
  checking for intrin.h... no
  checking if _xgetbv() is available... no
  checking for inline... inline
  checking whether byte ordering is bigendian... no
  checking whether __STDC_LIMIT_MACROS is required... no
  checking whether we can use inline asm code... yes
  no
  checking whether we can use x86_64 asm code... no
  checking whether we can assemble AVX opcodes... no
  checking for 128-bit arithmetic... yes
  checking for cpuid instruction... no
  checking if the .private_extern asm directive is supported... no
  checking if the .hidden asm directive is supported... yes
  checking if weak symbols are supported... yes
  checking if data alignment is required... yes
  checking if atomic operations are supported... yes
  checking for size_t... yes
  checking for working alloca.h... yes
  checking for alloca... yes
  checking for arc4random... no
  checking for arc4random_buf... no
  checking for mmap... yes
  checking for mlock... yes
  checking for madvise... yes
  checking for mprotect... yes
  checking for getrandom with a standard API... yes
  checking for getrandom... yes
  checking for getentropy with a standard API... yes
  checking for getentropy... yes
  checking for posix_memalign... yes
  checking for getpid... yes
  checking for nanosleep... yes
  checking for memset_s... no
  checking for explicit_bzero... yes
  checking for explicit_memset... no
  checking if gcc/ld supports -Wl,--output-def... not needed, shared libraries are disabled
  checking that generated files are newer than configure... done
  configure: creating ./config.status
  config.status: creating Makefile
  config.status: creating builds/Makefile
  config.status: creating contrib/Makefile
  config.status: creating dist-build/Makefile
  config.status: creating libsodium.pc
  config.status: creating libsodium-uninstalled.pc
  config.status: creating msvc-scripts/Makefile
  config.status: creating src/Makefile
  config.status: creating src/libsodium/Makefile
  config.status: creating src/libsodium/include/Makefile
  config.status: creating src/libsodium/include/sodium/version.h
  config.status: creating test/default/Makefile
  config.status: creating test/Makefile
  config.status: executing depfiles commands
  config.status: executing libtool commands
  Making all in builds
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/builds'
  make[1]: Nothing to be done for 'all'.
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/builds'
  Making all in contrib
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/contrib'
  make[1]: Nothing to be done for 'all'.
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/contrib'
  Making all in dist-build
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/dist-build'
  make[1]: Nothing to be done for 'all'.
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/dist-build'
  Making all in msvc-scripts
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/msvc-scripts'
  make[1]: Nothing to be done for 'all'.
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/msvc-scripts'
  Making all in src
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src'
  Making all in libsodium
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium'
  Making all in include
  make[3]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium/include'
  make[3]: Nothing to be done for 'all'.
  make[3]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium/include'
  make[3]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium'
    CC       crypto_aead/chacha20poly1305/sodium/libsodium_la-aead_chacha20poly1305.lo
    CC       crypto_aead/xchacha20poly1305/sodium/libsodium_la-aead_xchacha20poly1305.lo
    CC       crypto_auth/libsodium_la-crypto_auth.lo
    CC       crypto_auth/hmacsha256/libsodium_la-auth_hmacsha256.lo
    CC       crypto_auth/hmacsha512/libsodium_la-auth_hmacsha512.lo
    CC       crypto_auth/hmacsha512256/libsodium_la-auth_hmacsha512256.lo
    CC       crypto_box/libsodium_la-crypto_box.lo
    CC       crypto_box/libsodium_la-crypto_box_easy.lo
    CC       crypto_box/libsodium_la-crypto_box_seal.lo
    CC       crypto_box/curve25519xsalsa20poly1305/libsodium_la-box_curve25519xsalsa20poly1305.lo
    CC       crypto_core/ed25519/ref10/libsodium_la-ed25519_ref10.lo
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c:464:1: warning: ‘ge25519_p3_to_precomp’ defined but not used [-Wunused-function]
    464 | ge25519_p3_to_precomp(ge25519_precomp *pi, const ge25519_p3 *p)
        | ^~~~~~~~~~~~~~~~~~~~~
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10.h:23,
                   from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c:8:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:493:1: warning: ‘fe25519_scalar_product’ defined but not used [-Wunused-function]
    493 | fe25519_scalar_product(fe25519 h, const fe25519 f, uint32_t n)
        | ^~~~~~~~~~~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:146:1: warning: ‘fe25519_cswap’ defined but not used [-Wunused-function]
    146 | fe25519_cswap(fe25519 f, fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~~
    CC       crypto_core/hchacha20/libsodium_la-core_hchacha20.lo
    CC       crypto_core/hsalsa20/ref2/libsodium_la-core_hsalsa20_ref2.lo
    CC       crypto_core/hsalsa20/libsodium_la-core_hsalsa20.lo
    CC       crypto_core/salsa/ref/libsodium_la-core_salsa_ref.lo
    CC       crypto_generichash/libsodium_la-crypto_generichash.lo
    CC       crypto_generichash/blake2b/libsodium_la-generichash_blake2.lo
    CC       crypto_generichash/blake2b/ref/libsodium_la-blake2b-compress-ref.lo
    CC       crypto_generichash/blake2b/ref/libsodium_la-blake2b-ref.lo
    CC       crypto_generichash/blake2b/ref/libsodium_la-generichash_blake2b.lo
    CC       crypto_hash/libsodium_la-crypto_hash.lo
    CC       crypto_hash/sha256/libsodium_la-hash_sha256.lo
    CC       crypto_hash/sha256/cp/libsodium_la-hash_sha256_cp.lo
    CC       crypto_hash/sha512/libsodium_la-hash_sha512.lo
    CC       crypto_hash/sha512/cp/libsodium_la-hash_sha512_cp.lo
    CC       crypto_kdf/blake2b/libsodium_la-kdf_blake2b.lo
    CC       crypto_kdf/libsodium_la-crypto_kdf.lo
    CC       crypto_kx/libsodium_la-crypto_kx.lo
    CC       crypto_onetimeauth/libsodium_la-crypto_onetimeauth.lo
    CC       crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305.lo
    CC       crypto_onetimeauth/poly1305/donna/libsodium_la-poly1305_donna.lo
    CC       crypto_pwhash/argon2/libsodium_la-argon2-core.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.c:31:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.h:139:17: warning: ‘index_alpha’ defined but not used [-Wunused-function]
    139 | static uint32_t index_alpha(const argon2_instance_t *instance,
        |                 ^~~~~~~~~~~
    CC       crypto_pwhash/argon2/libsodium_la-argon2-encoding.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-encoding.c:2:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.h:139:17: warning: ‘index_alpha’ defined but not used [-Wunused-function]
    139 | static uint32_t index_alpha(const argon2_instance_t *instance,
        |                 ^~~~~~~~~~~
    CC       crypto_pwhash/argon2/libsodium_la-argon2-fill-block-ref.lo
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ref.c: In function ‘fill_segment_ref’:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ref.c:198: warning: ignoring #pragma warning  [-Wunknown-pragmas]
    198 | #pragma warning(push)
        |
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ref.c:199: warning: ignoring #pragma warning  [-Wunknown-pragmas]
    199 | #pragma warning(disable : 6385)
        |
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ref.c:201: warning: ignoring #pragma warning  [-Wunknown-pragmas]
    201 | #pragma warning(pop)
        |
    CC       crypto_pwhash/argon2/libsodium_la-argon2.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2.c:22:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.h:139:17: warning: ‘index_alpha’ defined but not used [-Wunused-function]
    139 | static uint32_t index_alpha(const argon2_instance_t *instance,
        |                 ^~~~~~~~~~~
    CC       crypto_pwhash/argon2/libsodium_la-blake2b-long.lo
    CC       crypto_pwhash/argon2/libsodium_la-pwhash_argon2i.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/pwhash_argon2i.c:9:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.h:139:17: warning: ‘index_alpha’ defined but not used [-Wunused-function]
    139 | static uint32_t index_alpha(const argon2_instance_t *instance,
        |                 ^~~~~~~~~~~
    CC       crypto_pwhash/argon2/libsodium_la-pwhash_argon2id.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/pwhash_argon2id.c:8:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.h:139:17: warning: ‘index_alpha’ defined but not used [-Wunused-function]
    139 | static uint32_t index_alpha(const argon2_instance_t *instance,
        |                 ^~~~~~~~~~~
    CC       crypto_pwhash/libsodium_la-crypto_pwhash.lo
    CC       crypto_scalarmult/libsodium_la-crypto_scalarmult.lo
    CC       crypto_scalarmult/curve25519/ref10/libsodium_la-x25519_ref10.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10.h:23,
                   from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c:7:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:413:1: warning: ‘fe25519_sq2’ defined but not used [-Wunused-function]
    413 | fe25519_sq2(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:109:1: warning: ‘fe25519_cmov’ defined but not used [-Wunused-function]
    109 | fe25519_cmov(fe25519 f, const fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~
    CC       crypto_scalarmult/curve25519/libsodium_la-scalarmult_curve25519.lo
    CC       crypto_secretbox/libsodium_la-crypto_secretbox.lo
    CC       crypto_secretbox/libsodium_la-crypto_secretbox_easy.lo
    CC       crypto_secretbox/xsalsa20poly1305/libsodium_la-secretbox_xsalsa20poly1305.lo
    CC       crypto_secretstream/xchacha20poly1305/libsodium_la-secretstream_xchacha20poly1305.lo
    CC       crypto_shorthash/libsodium_la-crypto_shorthash.lo
    CC       crypto_shorthash/siphash24/libsodium_la-shorthash_siphash24.lo
    CC       crypto_shorthash/siphash24/ref/libsodium_la-shorthash_siphash24_ref.lo
    CC       crypto_sign/libsodium_la-crypto_sign.lo
    CC       crypto_sign/ed25519/libsodium_la-sign_ed25519.lo
    CC       crypto_sign/ed25519/ref10/libsodium_la-keypair.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10.h:23,
                   from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/keypair.c:8:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:493:1: warning: ‘fe25519_scalar_product’ defined but not used [-Wunused-function]
    493 | fe25519_scalar_product(fe25519 h, const fe25519 f, uint32_t n)
        | ^~~~~~~~~~~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:413:1: warning: ‘fe25519_sq2’ defined but not used [-Wunused-function]
    413 | fe25519_sq2(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:334:1: warning: ‘fe25519_sq’ defined but not used [-Wunused-function]
    334 | fe25519_sq(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:146:1: warning: ‘fe25519_cswap’ defined but not used [-Wunused-function]
    146 | fe25519_cswap(fe25519 f, fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:109:1: warning: ‘fe25519_cmov’ defined but not used [-Wunused-function]
    109 | fe25519_cmov(fe25519 f, const fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~
    CC       crypto_sign/ed25519/ref10/libsodium_la-open.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10.h:23,
                   from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/open.c:10:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:493:1: warning: ‘fe25519_scalar_product’ defined but not used [-Wunused-function]
    493 | fe25519_scalar_product(fe25519 h, const fe25519 f, uint32_t n)
        | ^~~~~~~~~~~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:413:1: warning: ‘fe25519_sq2’ defined but not used [-Wunused-function]
    413 | fe25519_sq2(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:334:1: warning: ‘fe25519_sq’ defined but not used [-Wunused-function]
    334 | fe25519_sq(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:243:1: warning: ‘fe25519_mul’ defined but not used [-Wunused-function]
    243 | fe25519_mul(fe25519 h, const fe25519 f, const fe25519 g)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:146:1: warning: ‘fe25519_cswap’ defined but not used [-Wunused-function]
    146 | fe25519_cswap(fe25519 f, fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:109:1: warning: ‘fe25519_cmov’ defined but not used [-Wunused-function]
    109 | fe25519_cmov(fe25519 f, const fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~
    CC       crypto_sign/ed25519/ref10/libsodium_la-sign.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10.h:23,
                   from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign.c:7:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:493:1: warning: ‘fe25519_scalar_product’ defined but not used [-Wunused-function]
    493 | fe25519_scalar_product(fe25519 h, const fe25519 f, uint32_t n)
        | ^~~~~~~~~~~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:413:1: warning: ‘fe25519_sq2’ defined but not used [-Wunused-function]
    413 | fe25519_sq2(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:334:1: warning: ‘fe25519_sq’ defined but not used [-Wunused-function]
    334 | fe25519_sq(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:243:1: warning: ‘fe25519_mul’ defined but not used [-Wunused-function]
    243 | fe25519_mul(fe25519 h, const fe25519 f, const fe25519 g)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:146:1: warning: ‘fe25519_cswap’ defined but not used [-Wunused-function]
    146 | fe25519_cswap(fe25519 f, fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:109:1: warning: ‘fe25519_cmov’ defined but not used [-Wunused-function]
    109 | fe25519_cmov(fe25519 f, const fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~
    CC       crypto_stream/chacha20/libsodium_la-stream_chacha20.lo
    CC       crypto_stream/chacha20/ref/libsodium_la-chacha20_ref.lo
    CC       crypto_stream/libsodium_la-crypto_stream.lo
    CC       crypto_stream/salsa20/libsodium_la-stream_salsa20.lo
    CC       crypto_stream/xsalsa20/libsodium_la-stream_xsalsa20.lo
    CC       crypto_verify/sodium/libsodium_la-verify.lo
    CC       randombytes/libsodium_la-randombytes.lo
    CC       sodium/libsodium_la-codecs.lo
    CC       sodium/libsodium_la-core.lo
    CC       sodium/libsodium_la-runtime.lo
    CC       sodium/libsodium_la-utils.lo
    CC       sodium/libsodium_la-version.lo
    CC       crypto_stream/salsa20/ref/libsodium_la-salsa20_ref.lo
    CC       crypto_box/curve25519xchacha20poly1305/libsodium_la-box_curve25519xchacha20poly1305.lo
    CC       crypto_box/curve25519xchacha20poly1305/libsodium_la-box_seal_curve25519xchacha20poly1305.lo
    CC       crypto_core/ed25519/libsodium_la-core_ed25519.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10.h:23,
                   from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_core/ed25519/core_ed25519.c:6:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:493:1: warning: ‘fe25519_scalar_product’ defined but not used [-Wunused-function]
    493 | fe25519_scalar_product(fe25519 h, const fe25519 f, uint32_t n)
        | ^~~~~~~~~~~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:413:1: warning: ‘fe25519_sq2’ defined but not used [-Wunused-function]
    413 | fe25519_sq2(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:334:1: warning: ‘fe25519_sq’ defined but not used [-Wunused-function]
    334 | fe25519_sq(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:243:1: warning: ‘fe25519_mul’ defined but not used [-Wunused-function]
    243 | fe25519_mul(fe25519 h, const fe25519 f, const fe25519 g)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:146:1: warning: ‘fe25519_cswap’ defined but not used [-Wunused-function]
    146 | fe25519_cswap(fe25519 f, fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:109:1: warning: ‘fe25519_cmov’ defined but not used [-Wunused-function]
    109 | fe25519_cmov(fe25519 f, const fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~
    CC       crypto_core/ed25519/libsodium_la-core_ristretto255.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10.h:23,
                   from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_core/ed25519/core_ristretto255.c:7:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:493:1: warning: ‘fe25519_scalar_product’ defined but not used [-Wunused-function]
    493 | fe25519_scalar_product(fe25519 h, const fe25519 f, uint32_t n)
        | ^~~~~~~~~~~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:413:1: warning: ‘fe25519_sq2’ defined but not used [-Wunused-function]
    413 | fe25519_sq2(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:334:1: warning: ‘fe25519_sq’ defined but not used [-Wunused-function]
    334 | fe25519_sq(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:243:1: warning: ‘fe25519_mul’ defined but not used [-Wunused-function]
    243 | fe25519_mul(fe25519 h, const fe25519 f, const fe25519 g)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:146:1: warning: ‘fe25519_cswap’ defined but not used [-Wunused-function]
    146 | fe25519_cswap(fe25519 f, fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:109:1: warning: ‘fe25519_cmov’ defined but not used [-Wunused-function]
    109 | fe25519_cmov(fe25519 f, const fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~
    CC       crypto_pwhash/scryptsalsa208sha256/libsodium_la-crypto_scrypt-common.lo
    CC       crypto_pwhash/scryptsalsa208sha256/libsodium_la-scrypt_platform.lo
    CC       crypto_pwhash/scryptsalsa208sha256/libsodium_la-pbkdf2-sha256.lo
    CC       crypto_pwhash/scryptsalsa208sha256/libsodium_la-pwhash_scryptsalsa208sha256.lo
    CC       crypto_pwhash/scryptsalsa208sha256/nosse/libsodium_la-pwhash_scryptsalsa208sha256_nosse.lo
    CC       crypto_scalarmult/ed25519/ref10/libsodium_la-scalarmult_ed25519_ref10.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10.h:23,
                   from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_scalarmult/ed25519/ref10/scalarmult_ed25519_ref10.c:5:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:493:1: warning: ‘fe25519_scalar_product’ defined but not used [-Wunused-function]
    493 | fe25519_scalar_product(fe25519 h, const fe25519 f, uint32_t n)
        | ^~~~~~~~~~~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:413:1: warning: ‘fe25519_sq2’ defined but not used [-Wunused-function]
    413 | fe25519_sq2(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:334:1: warning: ‘fe25519_sq’ defined but not used [-Wunused-function]
    334 | fe25519_sq(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:243:1: warning: ‘fe25519_mul’ defined but not used [-Wunused-function]
    243 | fe25519_mul(fe25519 h, const fe25519 f, const fe25519 g)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:146:1: warning: ‘fe25519_cswap’ defined but not used [-Wunused-function]
    146 | fe25519_cswap(fe25519 f, fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:109:1: warning: ‘fe25519_cmov’ defined but not used [-Wunused-function]
    109 | fe25519_cmov(fe25519 f, const fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~
    CC       crypto_scalarmult/ristretto255/ref10/libsodium_la-scalarmult_ristretto255_ref10.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10.h:23,
                   from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_scalarmult/ristretto255/ref10/scalarmult_ristretto255_ref10.c:6:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:493:1: warning: ‘fe25519_scalar_product’ defined but not used [-Wunused-function]
    493 | fe25519_scalar_product(fe25519 h, const fe25519 f, uint32_t n)
        | ^~~~~~~~~~~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:413:1: warning: ‘fe25519_sq2’ defined but not used [-Wunused-function]
    413 | fe25519_sq2(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:334:1: warning: ‘fe25519_sq’ defined but not used [-Wunused-function]
    334 | fe25519_sq(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:243:1: warning: ‘fe25519_mul’ defined but not used [-Wunused-function]
    243 | fe25519_mul(fe25519 h, const fe25519 f, const fe25519 g)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:146:1: warning: ‘fe25519_cswap’ defined but not used [-Wunused-function]
    146 | fe25519_cswap(fe25519 f, fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:109:1: warning: ‘fe25519_cmov’ defined but not used [-Wunused-function]
    109 | fe25519_cmov(fe25519 f, const fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~
    CC       crypto_secretbox/xchacha20poly1305/libsodium_la-secretbox_xchacha20poly1305.lo
    CC       crypto_shorthash/siphash24/libsodium_la-shorthash_siphashx24.lo
    CC       crypto_shorthash/siphash24/ref/libsodium_la-shorthash_siphashx24_ref.lo
    CC       crypto_sign/ed25519/ref10/libsodium_la-obsolete.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10.h:23,
                   from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/obsolete.c:9:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:493:1: warning: ‘fe25519_scalar_product’ defined but not used [-Wunused-function]
    493 | fe25519_scalar_product(fe25519 h, const fe25519 f, uint32_t n)
        | ^~~~~~~~~~~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:413:1: warning: ‘fe25519_sq2’ defined but not used [-Wunused-function]
    413 | fe25519_sq2(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:334:1: warning: ‘fe25519_sq’ defined but not used [-Wunused-function]
    334 | fe25519_sq(fe25519 h, const fe25519 f)
        | ^~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:243:1: warning: ‘fe25519_mul’ defined but not used [-Wunused-function]
    243 | fe25519_mul(fe25519 h, const fe25519 f, const fe25519 g)
        | ^~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:146:1: warning: ‘fe25519_cswap’ defined but not used [-Wunused-function]
    146 | fe25519_cswap(fe25519 f, fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h:109:1: warning: ‘fe25519_cmov’ defined but not used [-Wunused-function]
    109 | fe25519_cmov(fe25519 f, const fe25519 g, unsigned int b)
        | ^~~~~~~~~~~~
    CC       crypto_stream/salsa2012/ref/libsodium_la-stream_salsa2012_ref.lo
    CC       crypto_stream/salsa2012/libsodium_la-stream_salsa2012.lo
    CC       crypto_stream/salsa208/ref/libsodium_la-stream_salsa208_ref.lo
    CC       crypto_stream/salsa208/libsodium_la-stream_salsa208.lo
    CC       crypto_stream/xchacha20/libsodium_la-stream_xchacha20.lo
    CC       randombytes/sysrandom/libsodium_la-randombytes_sysrandom.lo
    CC       crypto_aead/aes256gcm/aesni/libaesni_la-aead_aes256gcm_aesni.lo
    CCLD     libaesni.la
  libtool: warning: '-version-info/-version-number' is ignored for convenience libraries
  ar: `u' modifier ignored since `D' is the default (see `U')
    CC       crypto_onetimeauth/poly1305/sse2/libsse2_la-poly1305_sse2.lo
    CC       crypto_pwhash/scryptsalsa208sha256/sse/libsse2_la-pwhash_scryptsalsa208sha256_sse.lo
    CC       crypto_stream/salsa20/xmm6int/libsse2_la-salsa20_xmm6int-sse2.lo
    CCLD     libsse2.la
  libtool: warning: '-version-info/-version-number' is ignored for convenience libraries
  ar: `u' modifier ignored since `D' is the default (see `U')
    CC       crypto_generichash/blake2b/ref/libssse3_la-blake2b-compress-ssse3.lo
    CC       crypto_pwhash/argon2/libssse3_la-argon2-fill-block-ssse3.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ssse3.c:18:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.h:139:17: warning: ‘index_alpha’ defined but not used [-Wunused-function]
    139 | static uint32_t index_alpha(const argon2_instance_t *instance,
        |                 ^~~~~~~~~~~
    CC       crypto_stream/chacha20/dolbeau/libssse3_la-chacha20_dolbeau-ssse3.lo
    CCLD     libssse3.la
  libtool: warning: '-version-info/-version-number' is ignored for convenience libraries
  ar: `u' modifier ignored since `D' is the default (see `U')
    CC       crypto_generichash/blake2b/ref/libsse41_la-blake2b-compress-sse41.lo
    CCLD     libsse41.la
  libtool: warning: '-version-info/-version-number' is ignored for convenience libraries
  ar: `u' modifier ignored since `D' is the default (see `U')
    CC       crypto_generichash/blake2b/ref/libavx2_la-blake2b-compress-avx2.lo
    CC       crypto_pwhash/argon2/libavx2_la-argon2-fill-block-avx2.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-avx2.c:18:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.h:139:17: warning: ‘index_alpha’ defined but not used [-Wunused-function]
    139 | static uint32_t index_alpha(const argon2_instance_t *instance,
        |                 ^~~~~~~~~~~
    CC       crypto_stream/chacha20/dolbeau/libavx2_la-chacha20_dolbeau-avx2.lo
    CC       crypto_stream/salsa20/xmm6int/libavx2_la-salsa20_xmm6int-avx2.lo
    CCLD     libavx2.la
  libtool: warning: '-version-info/-version-number' is ignored for convenience libraries
  ar: `u' modifier ignored since `D' is the default (see `U')
    CC       crypto_pwhash/argon2/libavx512f_la-argon2-fill-block-avx512f.lo
  In file included from /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-avx512f.c:18:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.h:139:17: warning: ‘index_alpha’ defined but not used [-Wunused-function]
    139 | static uint32_t index_alpha(const argon2_instance_t *instance,
        |                 ^~~~~~~~~~~
    CCLD     libavx512f.la
  libtool: warning: '-version-info/-version-number' is ignored for convenience libraries
  ar: `u' modifier ignored since `D' is the default (see `U')
    CC       randombytes/internal/librdrand_la-randombytes_internal_random.lo
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/randombytes/internal/randombytes_internal_random.c: In function ‘randombytes_internal_random_buf’:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/randombytes/internal/randombytes_internal_random.c:560:12: warning: variable ‘ret’ set but not used [-Wunused-but-set-variable]
    560 |     int    ret;
        |            ^~~
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/randombytes/internal/randombytes_internal_random.c: In function ‘randombytes_internal_random’:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/randombytes/internal/randombytes_internal_random.c:592:14: warning: variable ‘ret’ set but not used [-Wunused-but-set-variable]
    592 |     int      ret;
        |              ^~~
  At top level:
  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/randombytes/internal/randombytes_internal_random.c:317:1: warning: ‘safe_read’ defined but not used [-Wunused-function]
    317 | safe_read(const int fd, void * const buf_, size_t size)
        | ^~~~~~~~~
    CCLD     librdrand.la
  libtool: warning: '-version-info/-version-number' is ignored for convenience libraries
  ar: `u' modifier ignored since `D' is the default (see `U')
    CCLD     libsodium.la
  ar: `u' modifier ignored since `D' is the default (see `U')
  make[3]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium'
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium'
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src'
  make[2]: Nothing to be done for 'all-am'.
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src'
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src'
  Making all in test
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test'
  Making all in default
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test/default'
  make[2]: Nothing to be done for 'all'.
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test/default'
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test'
  make[2]: Nothing to be done for 'all-am'.
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test'
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test'
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8'
  make[1]: Nothing to be done for 'all-am'.
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8'
  Making check in builds
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/builds'
  make[1]: Nothing to be done for 'check'.
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/builds'
  Making check in contrib
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/contrib'
  make[1]: Nothing to be done for 'check'.
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/contrib'
  Making check in dist-build
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/dist-build'
  make[1]: Nothing to be done for 'check'.
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/dist-build'
  Making check in msvc-scripts
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/msvc-scripts'
  make[1]: Nothing to be done for 'check'.
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/msvc-scripts'
  Making check in src
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src'
  Making check in libsodium
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium'
  Making check in include
  make[3]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium/include'
  make[3]: Nothing to be done for 'check'.
  make[3]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium/include'
  make[3]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium'
  make[3]: Nothing to be done for 'check-am'.
  make[3]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium'
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium'
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src'
  make[2]: Nothing to be done for 'check-am'.
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src'
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src'
  Making check in test
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test'
  Making check in default
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test/default'
  make  aead_aes256gcm aead_aes256gcm2 aead_chacha20poly1305 aead_chacha20poly13052 aead_xchacha20poly1305 auth auth2 auth3 auth5 auth6 auth7 box box2 box7 box8 box_easy box_easy2 box_seal box_seed chacha20 codecs core1 core2 core3 core4 core5 core6 ed25519_convert generichash generichash2 generichash3 hash hash3 kdf keygen kx metamorphic misuse onetimeauth onetimeauth2 onetimeauth7 pwhash_argon2i pwhash_argon2id randombytes scalarmult scalarmult2 scalarmult5 scalarmult6 scalarmult7 scalarmult8 secretbox secretbox2 secretbox7 secretbox8 secretbox_easy secretbox_easy2 secretstream shorthash sign sodium_core sodium_utils sodium_version stream stream2 stream3 stream4 verify1 sodium_utils2 sodium_utils3 core_ed25519 core_ristretto255 pwhash_scrypt pwhash_scrypt_ll scalarmult_ed25519 scalarmult_ristretto255 siphashx24 xchacha20
  make[3]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test/default'
    CC       aead_aes256gcm.o
    CCLD     aead_aes256gcm
    CC       aead_aes256gcm2.o
    CCLD     aead_aes256gcm2
    CC       aead_chacha20poly1305.o
    CCLD     aead_chacha20poly1305
    CC       aead_chacha20poly13052.o
    CCLD     aead_chacha20poly13052
    CC       aead_xchacha20poly1305.o
    CCLD     aead_xchacha20poly1305
    CC       auth.o
    CCLD     auth
    CC       auth2.o
    CCLD     auth2
    CC       auth3.o
    CCLD     auth3
    CC       auth5.o
    CCLD     auth5
    CC       auth6.o
    CCLD     auth6
    CC       auth7.o
    CCLD     auth7
    CC       box.o
    CCLD     box
    CC       box2.o
    CCLD     box2
    CC       box7.o
    CCLD     box7
    CC       box8.o
    CCLD     box8
    CC       box_easy.o
    CCLD     box_easy
    CC       box_easy2.o
    CCLD     box_easy2
    CC       box_seal.o
    CCLD     box_seal
    CC       box_seed.o
    CCLD     box_seed
    CC       chacha20.o
    CCLD     chacha20
    CC       codecs.o
    CCLD     codecs
    CC       core1.o
    CCLD     core1
    CC       core2.o
    CCLD     core2
    CC       core3.o
    CCLD     core3
    CC       core4.o
    CCLD     core4
    CC       core5.o
    CCLD     core5
    CC       core6.o
    CCLD     core6
    CC       ed25519_convert.o
    CCLD     ed25519_convert
    CC       generichash.o
    CCLD     generichash
    CC       generichash2.o
    CCLD     generichash2
    CC       generichash3.o
    CCLD     generichash3
    CC       hash.o
    CCLD     hash
    CC       hash3.o
    CCLD     hash3
    CC       kdf.o
    CCLD     kdf
    CC       keygen.o
    CCLD     keygen
    CC       kx.o
    CCLD     kx
    CC       metamorphic.o
    CCLD     metamorphic
    CC       misuse.o
    CCLD     misuse
    CC       onetimeauth.o
    CCLD     onetimeauth
    CC       onetimeauth2.o
    CCLD     onetimeauth2
    CC       onetimeauth7.o
    CCLD     onetimeauth7
    CC       pwhash_argon2i.o
    CCLD     pwhash_argon2i
    CC       pwhash_argon2id.o
    CCLD     pwhash_argon2id
    CC       randombytes.o
    CCLD     randombytes
    CC       scalarmult.o
    CCLD     scalarmult
    CC       scalarmult2.o
    CCLD     scalarmult2
    CC       scalarmult5.o
    CCLD     scalarmult5
    CC       scalarmult6.o
    CCLD     scalarmult6
    CC       scalarmult7.o
    CCLD     scalarmult7
    CC       scalarmult8.o
    CCLD     scalarmult8
    CC       secretbox.o
    CCLD     secretbox
    CC       secretbox2.o
    CCLD     secretbox2
    CC       secretbox7.o
    CCLD     secretbox7
    CC       secretbox8.o
    CCLD     secretbox8
    CC       secretbox_easy.o
    CCLD     secretbox_easy
    CC       secretbox_easy2.o
    CCLD     secretbox_easy2
    CC       secretstream.o
    CCLD     secretstream
    CC       shorthash.o
    CCLD     shorthash
    CC       sign.o
    CCLD     sign
    CC       sodium_core.o
    CCLD     sodium_core
    CC       sodium_utils.o
    CCLD     sodium_utils
    CC       sodium_version.o
    CCLD     sodium_version
    CC       stream.o
    CCLD     stream
    CC       stream2.o
    CCLD     stream2
    CC       stream3.o
    CCLD     stream3
    CC       stream4.o
    CCLD     stream4
    CC       verify1.o
    CCLD     verify1
    CC       sodium_utils2.o
    CCLD     sodium_utils2
    CC       sodium_utils3.o
    CCLD     sodium_utils3
    CC       core_ed25519.o
    CCLD     core_ed25519
    CC       core_ristretto255.o
    CCLD     core_ristretto255
    CC       pwhash_scrypt.o
    CCLD     pwhash_scrypt
    CC       pwhash_scrypt_ll.o
    CCLD     pwhash_scrypt_ll
    CC       scalarmult_ed25519.o
    CCLD     scalarmult_ed25519
    CC       scalarmult_ristretto255.o
    CCLD     scalarmult_ristretto255
    CC       siphashx24.o
    CCLD     siphashx24
    CC       xchacha20.o
    CCLD     xchacha20
  make[3]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test/default'
  make  check-TESTS
  make[3]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test/default'
  make[4]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test/default'
  PASS: aead_aes256gcm
  PASS: aead_aes256gcm2
  PASS: aead_chacha20poly1305
  PASS: aead_chacha20poly13052
  PASS: aead_xchacha20poly1305
  PASS: auth
  PASS: auth2
  PASS: auth3
  PASS: auth5
  PASS: auth6
  PASS: auth7
  PASS: box
  PASS: box2
  PASS: box7
  PASS: box8
  PASS: box_easy
  PASS: box_easy2
  PASS: box_seal
  PASS: box_seed
  PASS: chacha20
  PASS: codecs
  PASS: core1
  PASS: core2
  PASS: core3
  PASS: core4
  PASS: core5
  PASS: core6
  PASS: ed25519_convert
  PASS: generichash
  PASS: generichash2
  PASS: generichash3
  PASS: hash
  PASS: hash3
  PASS: kdf
  PASS: keygen
  PASS: kx
  PASS: metamorphic
  PASS: misuse
  PASS: onetimeauth
  PASS: onetimeauth2
  PASS: onetimeauth7
  PASS: pwhash_argon2i
  PASS: pwhash_argon2id
  PASS: randombytes
  PASS: scalarmult
  PASS: scalarmult2
  PASS: scalarmult5
  PASS: scalarmult6
  PASS: scalarmult7
  PASS: scalarmult8
  PASS: secretbox
  PASS: secretbox2
  PASS: secretbox7
  PASS: secretbox8
  PASS: secretbox_easy
  PASS: secretbox_easy2
  PASS: secretstream
  PASS: shorthash
  PASS: sign
  PASS: sodium_core
  PASS: sodium_utils
  PASS: sodium_version
  PASS: stream
  PASS: stream2
  PASS: stream3
  PASS: stream4
  PASS: verify1
  PASS: sodium_utils2
  PASS: sodium_utils3
  PASS: core_ed25519
  PASS: core_ristretto255
  PASS: pwhash_scrypt
  PASS: pwhash_scrypt_ll
  PASS: scalarmult_ed25519
  PASS: scalarmult_ristretto255
  PASS: siphashx24
  PASS: xchacha20
  ============================================================================
  Testsuite summary for libsodium 1.0.18
  ============================================================================
  # TOTAL: 77
  # PASS:  77
  # SKIP:  0
  # XFAIL: 0
  # FAIL:  0
  # XPASS: 0
  # ERROR: 0
  ============================================================================
  make[4]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test/default'
  make[3]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test/default'
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test/default'
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test'
  make[2]: Nothing to be done for 'check-am'.
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test'
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test'
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8'
  make[1]: Nothing to be done for 'check-am'.
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8'
  Making install in builds
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/builds'
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/builds'
  make[2]: Nothing to be done for 'install-exec-am'.
  make[2]: Nothing to be done for 'install-data-am'.
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/builds'
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/builds'
  Making install in contrib
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/contrib'
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/contrib'
  make[2]: Nothing to be done for 'install-exec-am'.
  make[2]: Nothing to be done for 'install-data-am'.
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/contrib'
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/contrib'
  Making install in dist-build
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/dist-build'
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/dist-build'
  make[2]: Nothing to be done for 'install-exec-am'.
  make[2]: Nothing to be done for 'install-data-am'.
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/dist-build'
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/dist-build'
  Making install in msvc-scripts
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/msvc-scripts'
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/msvc-scripts'
  make[2]: Nothing to be done for 'install-exec-am'.
  make[2]: Nothing to be done for 'install-data-am'.
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/msvc-scripts'
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/msvc-scripts'
  Making install in src
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src'
  Making install in libsodium
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium'
  Making install in include
  make[3]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium/include'
  make[4]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium/include'
  make[4]: Nothing to be done for 'install-exec-am'.
   /usr/bin/mkdir -p '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/include'
   /usr/bin/mkdir -p '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/include/sodium'
   /usr/bin/install -c -m 644  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/core.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_aead_aes256gcm.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_aead_chacha20poly1305.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_aead_xchacha20poly1305.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_auth.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha256.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512256.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_box.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xchacha20poly1305.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xsalsa20poly1305.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_core_ed25519.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_core_ristretto255.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_core_hchacha20.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_core_hsalsa20.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_core_salsa20.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_core_salsa2012.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_core_salsa208.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_generichash.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_generichash_blake2b.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_hash.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_hash_sha256.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_hash_sha512.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_kdf.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_kdf_blake2b.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_kx.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_pwhash.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_pwhash_argon2i.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_pwhash_argon2id.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_pwhash_scryptsalsa208sha256.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_scalarmult.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_scalarmult_ed25519.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_scalarmult_ristretto255.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_secretbox.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_secretbox_xchacha20poly1305.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_secretbox_xsalsa20poly1305.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_secretstream_xchacha20poly1305.h '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/include/sodium'
   /usr/bin/mkdir -p '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/include/sodium'
   /usr/bin/install -c -m 644  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_shorthash.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_shorthash_siphash24.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_sign.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_sign_ed25519.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_sign_edwards25519sha512batch.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_stream.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_stream_chacha20.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa2012.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa208.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_stream_xchacha20.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_stream_xsalsa20.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_verify_16.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_verify_32.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/crypto_verify_64.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/export.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/randombytes.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/randombytes_internal_random.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/randombytes_sysrandom.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/runtime.h /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium/utils.h '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/include/sodium'
   /usr/bin/install -c -m 644  /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/src/libsodium/src/libsodium/include/sodium.h '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/include/.'
   /usr/bin/mkdir -p '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/include'
   /usr/bin/mkdir -p '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/include/sodium'
   /usr/bin/install -c -m 644  sodium/version.h '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/include/sodium'
  make[4]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium/include'
  make[3]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium/include'
  make[3]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium'
  make[4]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium'
   /usr/bin/mkdir -p '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/lib'
   /bin/bash ../../libtool   --mode=install /usr/bin/install -c   libsodium.la '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/lib'
  libtool: install: /usr/bin/install -c .libs/libsodium.lai /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/lib/libsodium.la
  libtool: install: /usr/bin/install -c .libs/libsodium.a /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/lib/libsodium.a
  libtool: install: chmod 644 /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/lib/libsodium.a
  libtool: install: ranlib /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/lib/libsodium.a
  libtool: finish: PATH="/tmp/pip-build-env-de38cm0n/overlay/bin:/tmp/pip-build-env-de38cm0n/normal/bin:/home/eric/Chia/chiadog/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/sbin" ldconfig -n /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/lib
  ----------------------------------------------------------------------
  Libraries have been installed in:
     /tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/lib
  
  If you ever happen to want to link against installed libraries
  in a given directory, LIBDIR, you must either use libtool, and
  specify the full pathname of the library, or use the '-LLIBDIR'
  flag during linking and do at least one of the following:
     - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
       during execution
     - add LIBDIR to the 'LD_RUN_PATH' environment variable
       during linking
     - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
     - have your system administrator add LIBDIR to '/etc/ld.so.conf'
  
  See any operating system documentation about shared libraries for
  more information, such as the ld(1) and ld.so(8) manual pages.
  ----------------------------------------------------------------------
  make[4]: Nothing to be done for 'install-data-am'.
  make[4]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium'
  make[3]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium'
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src/libsodium'
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src'
  make[3]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src'
  make[3]: Nothing to be done for 'install-exec-am'.
  make[3]: Nothing to be done for 'install-data-am'.
  make[3]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src'
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src'
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/src'
  Making install in test
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test'
  Making install in default
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test/default'
  make[3]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test/default'
  make[3]: Nothing to be done for 'install-exec-am'.
  make[3]: Nothing to be done for 'install-data-am'.
  make[3]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test/default'
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test/default'
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test'
  make[3]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test'
  make[3]: Nothing to be done for 'install-exec-am'.
  make[3]: Nothing to be done for 'install-data-am'.
  make[3]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test'
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test'
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/test'
  make[1]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8'
  make[2]: Entering directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8'
  make[2]: Nothing to be done for 'install-exec-am'.
   /usr/bin/mkdir -p '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/lib/pkgconfig'
   /usr/bin/install -c -m 644 libsodium.pc '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8/lib/pkgconfig'
  make[2]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8'
  make[1]: Leaving directory '/tmp/pip-install-6rrxr_oj/pynacl_3abcf9429aba4c37960b57b24bd7adda/build/temp.linux-aarch64-3.8'
  running build_ext
  generating cffi module 'build/temp.linux-aarch64-3.8/_sodium.c'
  building '_sodium' extension
  creating build/temp.linux-aarch64-3.8/build
  creating build/temp.linux-aarch64-3.8/build/temp.linux-aarch64-3.8
  aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/eric/Chia/chiadog/venv/include -I/usr/include/python3.8 -Ibuild/temp.linux-aarch64-3.8/include -c build/temp.linux-aarch64-3.8/_sodium.c -o build/temp.linux-aarch64-3.8/build/temp.linux-aarch64-3.8/_sodium.o
  build/temp.linux-aarch64-3.8/_sodium.c:50:14: fatal error: pyconfig.h: No such file or directory
     50 | #    include <pyconfig.h>
        |              ^~~~~~~~~~~~
  compilation terminated.
  error: command 'aarch64-linux-gnu-gcc' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for pynacl
Failed to build pynacl
ERROR: Could not build wheels for pynacl which use PEP 517 and cannot be installed directly

Extra configuration

I had to do two extra bits of configuration before I could get chiadog to work with a remote harvester.
First I had to add the remotes harvester's ssh fingerprints to my known hosts file using:
ssh-keyscan -H harvester_IP >> ~/.ssh/known_hosts
Then I had to add a banner to my harvester's ssh server by adding this line to /etc/ssh/sshd_config:
Banner /etc/ssh/my_banner
Then I had to create that banner file with any text inside it using:
echo "My banner" >> /etc/ssh/my_banner
Then restart sshd using:
systemctl restart sshd

[Question] Chia FULL_NODE warning

I got this telegram alerts :
⚠️ Chia FULL_NODE
Experiencing networking issues? Skipped some signage points! Last 20/64, current 22/64.

  1. What is the actual log for above WARNING? I want to trace it.
  2. How to solve it? Is it normal to get 2-3 warning like above every 1 hour?
  3. Will is affect my chia WIN rate?

Thanks.

Shuffled signage points not correctly handled

Describe the bug

There are still cases when shuffled signage points during forks are not correctly handled.

The following sequence of events generates 61 skipped SP event.

2021-05-13T22:12:25.148 full_node chia.full_node.full_node: INFO     ⏲️  Finished signage point 60/64: 
2021-05-13T22:12:35.081 full_node chia.full_node.full_node: INFO     ⏲️  Finished signage point 61/64: 
2021-05-13T22:12:41.911 full_node chia.full_node.full_node: INFO     ⏲️  Finished signage point 62/64: 
2021-05-13T22:12:49.784 full_node chia.full_node.full_node: INFO     ⏲️  Finished signage point 63/64: 
2021-05-13T22:12:58.453 full_node chia.full_node.full_node: INFO     ⏲️  Finished sub slot, SP 64/64, 
2021-05-13T22:13:07.659 full_node chia.full_node.full_node: INFO     ⏲️  Finished signage point 1/64: 
2021-05-13T22:13:14.053 full_node chia.full_node.full_node: INFO     ⏲️  Finished signage point 2/64: 
2021-05-13T22:13:42.341 full_node chia.full_node.full_node: INFO     ⏲️  Finished sub slot, SP 64/64, 
2021-05-13T22:13:50.884 full_node chia.full_node.full_node: INFO     ⏲️  Finished signage point 1/64: 
2021-05-13T22:13:58.247 full_node chia.full_node.full_node: INFO     ⏲️  Finished signage point 2/64: 
2021-05-13T22:14:06.288 full_node chia.full_node.full_node: INFO     ⏲️  Finished signage point 3/64: 
2021-05-13T22:14:14.181 full_node chia.full_node.full_node: INFO     ⏲️  Finished signage point 4/64: 
2021-05-13T22:14:22.166 full_node chia.full_node.full_node: INFO     ⏲️  Finished signage point 5/64: 
2021-05-13T22:14:30.104 full_node chia.full_node.full_node: INFO     ⏲️  Finished signage point 6/64: 
2021-05-13T22:14:38.398 full_node chia.full_node.full_node: INFO     ⏲️  Finished signage point 7/64: 

One way to fix would be comparing expected time for 61 SP (61 times 8-9 seconds) with actual time difference to previous SP.

Environment:

  • Chia version: 1.1.5

Notifier: Add event queueing and auto-retries on failed notifications

chiadog tried to notify me using pushover while the network was briefly down. I think this brought down the whole thread, leading to multiple incorrect harvester errors. I have just wrapped it in try..except for now but I suppose the right solution is to queue up any undelivered messages and try again after a delay.

Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/home/ben/chiadog/src/chia_log/log_consumer.py", line 72, in _consume_loop
    self._notify_subscribers(log_line)
  File "/home/ben/chiadog/src/chia_log/log_consumer.py", line 48, in _notify_subscribers
    subscriber.consume_logs(logs)
  File "/home/ben/chiadog/src/chia_log/log_handler.py", line 30, in consume_logs
    self._notify_manager.process_events(events)
  File "/home/ben/chiadog/src/notifier/notify_manager.py", line 47, in process_events
    notifier.send_events_to_user(events)
  File "/home/ben/chiadog/src/notifier/pushover_notifier.py", line 26, in send_events_to_user
    conn.request(
  File "/usr/lib/python3.8/http/client.py", line 1255, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.8/http/client.py", line 1301, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.8/http/client.py", line 1250, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.8/http/client.py", line 1010, in _send_output
    self.send(msg)
  File "/usr/lib/python3.8/http/client.py", line 950, in send
    self.connect()
  File "/usr/lib/python3.8/http/client.py", line 1417, in connect
    super().connect()
  File "/usr/lib/python3.8/http/client.py", line 921, in connect
    self.sock = self._create_connection(
  File "/usr/lib/python3.8/socket.py", line 787, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
  File "/usr/lib/python3.8/socket.py", line 918, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -3] Temporary failure in name resolution
[2021-04-22 22:28:12] [ WARNING] --- Your harvester appears to be offline! No events for the past 584 seconds. (
keep_alive_monitor.py:71)
[2021-04-22 22:33:12] [ WARNING] --- Your harvester appears to be offline! No events for the past 885 seconds. (
keep_alive_monitor.py:71)
[2021-04-22 22:38:13] [ WARNING] --- Your harvester appears to be offline! No events for the past 1186 seconds. 
(keep_alive_monitor.py:71)
[2021-04-22 22:43:14] [ WARNING] --- Your harvester appears to be offline! No events for the past 1487 seconds. 
(keep_alive_monitor.py:71)

Number of plots chaning (non_decreasing_plots) to a variable

Hi,

If you are plotting and farming on the same machine the number of plots will go up and down causing an alert.

I have changed my code in non_decreasing_plots.py from:
if obj.total_plots_count < self._max_farmed_plots:
to
if abs(obj.total_plots_count - self._max_farmed_plots) >= 5:

That way if I loose a full drive, or many plots I will get alerted but not be bothered when plot jobs finis.

Reading the value from the config file seems like a better longer term option

Thanks

Feature Request: Report total searches in an update

To better understand the significance of searches over 5s/15s it would be nice to know the total of searches that were measured.

Example:
Search 🔍:

  • average: 0.46s over xxx searches
  • over 5s: 2 occasions
  • over 15s: 1 occasions

Farmer experiencing network issues

Hi,

I am trying to track down why one of my farmers keep getting the "Experiencing networking issues? Harvester did not participate in any challenge for 61 seconds. It's now working again." error.

Pushover shows the hour and minute that the error occured, but I have multiple events in the Chia event log for that minute. I am not sure if Pushover can do seconds, or if it is better to add the exact time the issue occured in the body of the message.

Thanks

"tail -F" sometime fail to follow new log file

On Linux it looks like tail -F may not reliably follow new log files. When this happens, chiadog will report "Your harvester appears to be offline", and inspecting the /proc file system shows that the tail process is still opening the old log file, eg. .chia/mainnet/log/debug.log.11.

Environment:

  • OS: Ubuntu 20.04
  • Python version: 3.8.5

Email notification shouldn't require username and password

Describe the bug

try:
credentials = config["credentials"]
self.sender = credentials["sender"]
self.sender_name = credentials["sender_name"]
self.recipient = credentials["recipient"]
self.username_smtp = credentials["username_smtp"]
self.password_smtp = credentials["password_smtp"]
self.host = credentials["host"]
self.port = credentials["port"]
except KeyError as key:
logging.error(f"Invalid config.yaml. Missing key: {key}")

Currently username and password have to be specified. I use gmail SMTP relay service for all notifications as such, which doesn't require a username and password.

Proposal
Remove and assign non-required arguments out of the try block:

  • sender_name
  • username_smtp
  • password_smtp

Add a conditional here instead:

server.login(self.username_smtp, self.password_smtp)

something like this could suffice for now:

if self.username_smtp and self.password_smtp:
  server.login(self.username_smtp, self.password_smtp)

Other Thoughts
This could probably be built out a bit better over time to support other options. If the connection pieces were moved into its own function from a message builder function, that could help a bit.

Something else that probably won't work is using no encryption or ssl since that is also forced.

Windows: False "Harvester appears offline" notifications when farm is fine

Describe the bug

I'm running the Windows version of chiadog. Every now and then I'll get the "Your harvester appears offline! No events for the past xxxx seconds" notification, and I will continue getting this notification until I restart chiadog. When I check my farm (using chia farm summary) everything is fine. I actually won a block during one of these fake outages.

Looking at timestamps, these outages seem to always coincide with a log rotation, but not every rotation. My log rotates every 40-50 minutes, but this only happens around once a day or so - so it's definitely not with every rotation.

It was suggested I turn off any other processes tailing (using get-content) debug.log, which I've done, but it didn't help.

Environment:

  • OS: Windows 10
  • Python version: 3.9.4
  • PIP version: 21.1
  • Chia version: 1.1.3

Feature: add support for custom shell scripts

E.g. I would wish to be able to define a number of scripts, each returning 0 or non-0 process exit code, so Chiadog could run them occasionally and send notification when non-zero return code is seen.

Examples usage would be checking whether temperature is above threshold or disk space is below threshold etc. - in a pluginable way.

Alternatively, Chiadog could check the 2 conditions mentioned above, but over the time I would end up with much more checks.

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.