mod6's Blog

2020/04/05

getdata for transactions

Filed under: Bitcoin — mod6 @ 00:16

Introduction

As a follow on to my previous entry, I wanted to take a moment and update where I am with the testing regarding 'getdata for transaction' requests specifically. In the previous post, I had mentioned that transactions could also be a problematic spot, as it was for blocks.

Updating wedger.py

To test the transactions section of the 'getdata' code within main.cpp:ProcessMessage(...), I needed to alter asciilifeform's wedger.py tool to be able to take a list of Transactions (currently residing in a node's mempool) and construct them into a 'getdata' message.

I was going to post the changes that I made to the original wedger.py (at the time of this writing is not genesis'd, KECCAK: ba69d5cc9a4b683a241d01177ea9ccae5fc92a23676bc97b26ee6bfae58525f062f1fed8281c84625cf69c9c1cb9c4a9c9e14cfb462a5dacd1d464d751f3c3b6) here; however, it seems that the PHP blog thingy is stripping out a bunch of code because of right and left angle brackets. Uuugh. So, to hell with it. You can find it here.

Collecting Transactions for wedger.py

To gather up transactions in which to construct the 'getdata' message, I wrote a simple script that would grab these out TRB's debug.log. One needs to start the node, let it run for a while (to begin to populate the mempool), and then run a script, or by hand or something of your own design, of course.

We can only use up to 49,999 transactions in the 'getdata' message, so the script here will limit the number we place into the snap file. The bigger issue here is, I never found more than about 5000 transactions in my memory pool (after waiting about 90 minutes after starting the node, your mileage may vary, of course). The script greps through the debug.log (be sure to truncate the log before you start trb so you are getting fresh transactions) looking for lines with "AcceptToMemoryPool", then parses them and adds them to an array. After which, it simply iterates through the array, writing each transaction to STDOUT until just less than the maximum limit. The reason I don't like this is because we end up with a snap file where the transactions can be repeated a number of times: 49,999 / number of transactions found in mempool. I would like to have all unique transactions, but I haven't figured out a better way to do this yet. However, for the sake of my initial testing, I figured this was worth a try.

./loadtx.sh > snap_tx_49999.txt

Once the snap file is loaded up, now can attempt to run the modified wedger.py tool to see if we can TRB to choke.

./wedger.py tx 127.0.0.1 8333 snap_tx_49999.txt > wedger_tx_20200323.log &

You can find the full log here, but here's an excerpt:

<INCOMING MESSAGE: 'version', 115 bytes>
Alive: V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Return Addr=1.2.3.4:8333 Blocks=622691
<INCOMING MESSAGE: 'verack', 0 bytes>
Sending 1685403-byte message packet...
Now listening for replies (Ctl-C to quit...)
<INCOMING MESSAGE: 'getblocks', 1029 bytes>
<INCOMING MESSAGE: 'tx', 226 bytes>
<INCOMING MESSAGE: 'tx', 226 bytes>
<INCOMING MESSAGE: 'tx', 225 bytes>
<INCOMING MESSAGE: 'tx', 225 bytes>
<INCOMING MESSAGE: 'tx', 226 bytes>
<INCOMING MESSAGE: 'tx', 7423 bytes>
<INCOMING MESSAGE: 'tx', 521 bytes>
<INCOMING MESSAGE: 'tx', 191 bytes>
<INCOMING MESSAGE: 'tx', 191 bytes>
<INCOMING MESSAGE: 'tx', 225 bytes>

As you can see, it seems to be working...

However, TRB never did wedge or suffer any problems from the testing. I ran three testing attempts thus far. The third of which has some additional print statements that I included -- because the debug.log gets a bit hard to discern which lines are coming from the wedger test script, and which are normal traffic coming from the greater bitcoin network. The new print statements only execute if the requesting addr.IsLocal(), which is true for me, since my wedger.py script is executing on the same environment with my TRB. After the running of the test, I did do some counts of the data found in the debug log to extract some additional metrics. I need some more investigation there, and I'll leave it at that.

A current working theory of mine here is that, "wedging" or getting TRB into a defunct state from Transactions may be more difficult to do as the size of a transaction message response is much smaller than we would see with a nearly full size block, if that wasn't obvious. In an extreme case, it's hypothetically possible for one to construct a ~1Mb transaction that could cause some problems if it was requested over and over.

However, I could be doing something wrong here in my above testing. If anyone sees something that I've overlooked in my wedger.py changes, collecting the transactions from the debug.log, or elsewhere, please write in.
That's all I have for now, I'll keep looking into this as I can.

2020/04/03

Leaving The Bitcoin Foundation

Filed under: Bitcoin — mod6 @ 20:23

I wanted to make a post here with the announcement, I've attempted to place the following into deedbot, but looks like was not successful in so doing.

I've also posted this to the Foundation website here.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Official Announcement: I, mod6, am stepping-down as Co-Chair of The Bitcoin Foundation.
Juraj Variny (jurov) [ BBB0 A999 5003 7551 F533 850A 677A BD62 D0AE E7D7 ] will be taking over my seat.
As required by the Charter, section 0x2, I will be available upon jurov's request until October 1st, 2020.

Regarding current infrastructure:
1. The website currently resides on a host, donated by me, and will need to be moved.  The goal is to work with jurov, and have the move completed as soon as possible.  The current host will be shutdown as soon as a new host is up and active.  At the latest, the current host will be shutdown on or after October 1st, 2020.
2. The (new) TRB Node that I constructed during January and February, donated by me, will be shutdown on or after April 30th, 2020.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (FreeBSD)

iQIcBAEBCgAGBQJeh5dTAAoJEHIXBai3Hq2voDQQAKpQQ7ivtl+D7TpZ1PXbPT5s
jf75Uwj9iaJShC/sHA/K+u+MXcoimtM8WmnRgQMPT+reYM1DGzxLWfcvXTj6NLMa
HlazzflhUS7T9lGIK9gtVm2mqx9YzDKIl22I0vfM5wSIn9vEnM54bWop7wVo4iuo
+Z20/vYwdDIOgGFbQgRoiphQRn41HbgK+Bs5K0ZBdIsWP+8N0Pj8iXiUD89uxx6q
T6/ocep8BrIHN6IGTUV/WUmVo79JQWeQLVhKj8R2+QHH0+UsgXOcLTRP2wYTMzqf
LTBVRaO7WZd79HndBlHS54REKkhQ3mFJHaWmkJAopZzG2EgHMRkXWhDpjKayDlJd
7gUMUW/KfLsOr7MBCOX3x9h1Y03L7NnwElXAhbtIhqhN7MWsBINK6ppGd+Tolhq2
bW94Y07oDGtaoqD8RvLRx7M+2IJTO/RUVB6U8qOKrK8itllted8TVLqzdDOMlH6v
r+k+ZJnjXUyxY7NOxxuE0lK8iAWCm+IdNBYv0AQRyyfZogfV6mjvRkSnOJy2TSHr
Myqt06uPQrtVlEaHqcDqTN+p12+gUU9FxhKrjJusnpXmKCrfwCiolH1LEQc12saa
ZCRe/SDKYk6oyeJEf4PW4+aO5S91ZQPRBpMeOeFcZilINKwil9yj+27V9IV/Ff1O
Pz4q+u/KWypQhq4UYtsh
=b+wV
-----END PGP SIGNATURE-----

2020/03/16

getdata for blocks

Filed under: Bitcoin — mod6 @ 20:25

The Problem Discovery:

It was observed on or around 2020.02.22 that a number of TRB nodes were getting "wedged". It was initially thought that there might be something problematic about block 618405 causing TRB to be rendered in a still-running, yet defunct state. Specifically, TRB would still have connections to peers, yet, no new blocks were being accepted or processed from peers, and notably, RPC commands would "hang" on the command line and not be issued a response. Also alarming, a major increase in RAM usage as well as CPU utilization (on one logical core) going at or near 100%. During this initial period of discovery, node operators were able to resume TRB operations with a full restart of the node. However, during the first 48 hours of the first instance of the problem, most if not all TRB operators were getting the same problem, repeatedly.

I had noticed in my own TRB debug.log that I was seeing upwards of 32k 'getdata: for block' requests from a single IP address. The protocol obviously allows for this behavior. In fact, main.cpp:ProcessMessage(...) allows for up to 49,999 'inv' entries (for blocks or transactions) to be requested in a single 'getdata' message, from a single peer. It piqued my interest when tens of thousands of these 'getdata for: block' requests were coming in, and during or just after, the node was rendered defunct. This, too, on my end, was reproducing reliably. As it turns out, nothing is wrong with block 618405, it was simply a red herring.

bvt had his gdb connected to his node and was able to debug when the problem occurred. His helpful information was a good starting point for deeper investigation.

My Own Debugging:

On February 26th, asciilifeform created a tool called wedger.py which simply will take an arbitrary list of blocks (and their specific hashes) and construct a single 'getdata' message (in this case, containing 49,999 inv requests for blocks) which is sent to a given node, requesting the blocks to be sent back. This is useful to reproduce the problem since one can easily request 49,999 blocks and see what happens with gdb attached. As soon as I used this against my node, it immediately wedged  [debug.log], just as it had previously.

With the wedger.py in hand, bvt's conditions and print statements (as well as a number of my own), I conducted some extensive debugging while gdb was attached to a live TRB.

As previously stated: an external node may create up to 49,999 'inv' requests in a single 'getdata' message. For each of these requests, TRB makes a unique message response containing header and the block. These are then appended to a byte stream vector called 'vSend'. I observed that 'vSend' fills up with the responses to the request -- to the tune of greater than 4Gb. During my testing it typically takes about 4400 respons messages to fill vSend (using recent blocks from the blockchain, of which most are just under the 1Mb size limit), rendering the vector greater than 32 bits in size. Upon each addition of a message to the vector, the beginning and end of the latest message are passed to util.h's Hash(...) routine. However, when the buffer has exceeded 4Gb, Hash(...) simply never returns, or at least, as far as I can tell.

A check does exist to ensure that the node does not attempt to send more than the -maxsendbuffer size in net.cpp:ThreadSocketHandler2; however, it seems that the mutex locking code surrounding this check prevents it from being called every time through. During testing with weger.py, I observed that TRB does appear to run the size check a small number of times before it gets perma-locked without release.

An Experimental Solution (For Blocks)

The exact surgical fix for this problem, as opposed to an (experimental) change, is to fix the locking code that is pervasive throughout all of TRB. This not only is challenging but very risky in my opinion.

Upon looking at main.cpp:ProcessMessage I can see that Satoshi did place a limiter on the amount of data sent for the 'getblocks' command. Why one exists here, and not for 'getdata', I'm not certain. Another curiosity is why this check divides the -maxsendbuffer size by two: I do not know. A possible experimental solution is to place a limiter check in the 'getdata' (for blocks) section. However, this is truly only one of two limiters that would be needed in the conditional block for 'getdata' commands of the ProcessMessage code. Examining this portion, I can see that 'getdata' commands fall into two categories; blocks and transactions.

The strictly experimental vpatch (signed with my mod6-vpatch-testing key) below only creates a limiter for 'getdata' commands for blocks. The code required to add a limiter for the transactions portion of the code is very similar; however, before I can provide such an experimental change, I need to create (or augment wedger.py) to generate requests of transactions that currently reside in the mempool. This shouldn't be inherently difficult, but will take time and testing. This will be covered in a separate article later.

Tests Conducted

I have been personally testing this change for nearly three weeks now; as has asciilifeform on two of his nodes, and I believe bvt has as well. I, nor asciilifeform, have had the same problem since the vpatch has been applied. I have bombarded my node numerous times with the wedger.py tool, as well as seeing sporadic instances of external clients requesting large numbers of blocks. These are now thwarted by the code change checking to ensure that we're not attempting to send back more than defined by -maxsendbuffer (default is 10Mb). I did also test to ensure that if this value is set to something different, the vpatch still works as expected: Having a higher or lower threshold, depending on the value defined at startup.

Additionally, I have conducted process memory tests with TRB, both without the patch applied, and with the patch applied. The pmap tests were started just after the launch of TRB (requires a PID), and captures a memory profile when connecting to the network, and then being in a steady state of execution. Then I've run the wedger.py tool against TRB, illustrating the growth of memory with and without the patch applied.

TRB pmap memory profile, without vpatch applied

TRB pmap memory profile, with vpatch applied

Experimental Vpatch

mod6_getdata_blocks_wrangler.vpatch  [sig]

2020/02/25

Multiple Vpatches Tested And Signed

Filed under: Bitcoin, Keccak, V — mod6 @ 21:20

Earlier this month I reground and began testing on three vpatches as detailed in the article . The testing has been completed and they are working as expected.

If you participated in testing these three vpatches since the posting of my article; you may discard my 'mod6-vpatch-testing' key and the signatures (seals) of those vpatches with that specific key. They are no longer needed. Next, simply add the new signatures (made with my main key) below. If you did not participate in the testing, please disregard.

Here are links to the vpatches as well as their signatures with my main key:

A. mod6_phexdigit_fix.vpatch  [sig]
B. mod6_excise_hash_truncation.vpatch  [sig]
C. mod6_whogaveblox.vpatch  [sig]

Please note that these vpatches and signatures have been published to The Foundation website  [with signatures]. The new leaf to press through, is 'mod6_whogaveblox.vpatch'. The Foundation's TRB HowTo guide has been updated to reflect this change.

Let me show some log snippets from the testing conducted:

Setup with a blkcut of blk0001.dat.  Will read them in via 'eatblock' from a local file system.  Will ensure that the log is spitting out what it should be
with regard to excise_hash_truncation and whogaveblox.

mod6@localhost ~/trb/v054/bitcoin/bin $ LC_ALL="C" ./bitcoind -myip=127.0.0.1 -nolisten -maxconnections=0 -caneat -verifyall &
[1] 11039
mod6@localhost ~/trb/v054/bitcoin/bin $

(from debug.log):

ThreadRPCServer method=eatblock
Attempting to create block #1 from file /home/mod6/blkcut/all/0001/blk0001.dat.0.blk
ERROR: ProcessBlock() : already have block 0 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f from peer LOCAL
ThreadRPCServer method=eatblock
Attempting to create block #1 from file /home/mod6/blkcut/all/0001/blk0001.dat.1.blk
SetBestChain: new best=00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048  height=1  work=8590065666
ProcessBlock: ACCEPTED block 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 from: LOCAL
ThreadRPCServer method=eatblock
Attempting to create block #2 from file /home/mod6/blkcut/all/0001/blk0001.dat.2.blk
SetBestChain: new best=000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd  height=2  work=12885098499
ProcessBlock: ACCEPTED block 000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd from: LOCAL

...

ThreadRPCServer method=eatblock
Attempting to create block #188526 from file /home/mod6/blkcut/all/0001/blk0001.dat.188526.blk
SetBestChain: new best=0000000000000775ff4ed4a434851e3fafe46617d595f06eb7d560d16b7d34a3  height=188526  work=383777361030021669687
ProcessBlock: ACCEPTED block 0000000000000775ff4ed4a434851e3fafe46617d595f06eb7d560d16b7d34a3 from: LOCAL
ThreadRPCServer method=eatblock
Attempting to create block #188527 from file /home/mod6/blkcut/all/0001/blk0001.dat.188527.blk
SetBestChain: new best=000000000000079da5ca35f89821bf77449b23e1ed9ca834a6db9813cf59da56  height=188527  work=383784883584756464688
ProcessBlock: ACCEPTED block 000000000000079da5ca35f89821bf77449b23e1ed9ca834a6db9813cf59da56 from: LOCAL
ThreadRPCServer method=eatblock
Attempting to create block #188528 from file /home/mod6/blkcut/all/0001/blk0001.dat.188528.blk
SetBestChain: new best=000000000000040167c69f7a835d124214316b72d9a9fc2ec2413a238b6ab6da  height=188528  work=383792406139491259689
ProcessBlock: ACCEPTED block 000000000000040167c69f7a835d124214316b72d9a9fc2ec2413a238b6ab6da from: LOCAL



Next, I stopped TRB, then restarted it while connected to a single republican node:

(starting...)

Loading block index...
LoadBlockIndex(): hashBestChain=000000000000040167c69f7a835d124214316b72d9a9fc2ec2413a238b6ab6da  height=188528
....
received block 0000000000000699f01c80a9cf8a59b9c2935124490a855015355269a48db237
SetBestChain: new best=0000000000000699f01c80a9cf8a59b9c2935124490a855015355269a48db237  height=188529  work=383799928694226054690
ProcessBlock: ACCEPTED block 0000000000000699f01c80a9cf8a59b9c2935124490a855015355269a48db237 from: 208.94.240.42
received block 0000000000000412be2534fd3c05b724016cd627cc7f9a3ced1eb7c1f046b341
SetBestChain: new best=0000000000000412be2534fd3c05b724016cd627cc7f9a3ced1eb7c1f046b341  height=188530  work=383807451248960849691
ProcessBlock: ACCEPTED block 0000000000000412be2534fd3c05b724016cd627cc7f9a3ced1eb7c1f046b341 from: 208.94.240.42
received block 00000000000001310f277d612633c98808dd1677cdb543ce5ca0e222a64d18d9
SetBestChain: new best=00000000000001310f277d612633c98808dd1677cdb543ce5ca0e222a64d18d9  height=188531  work=383814973803695644692
ProcessBlock: ACCEPTED block 00000000000001310f277d612633c98808dd1677cdb543ce5ca0e222a64d18d9 from: 208.94.240.42
received block 000000000000061f8b963a67d16c8fe5e0b136f0651b9f3905163d9159621c35
SetBestChain: new best=000000000000061f8b963a67d16c8fe5e0b136f0651b9f3905163d9159621c35  height=188532  work=383822496358430439693
ProcessBlock: ACCEPTED block 000000000000061f8b963a67d16c8fe5e0b136f0651b9f3905163d9159621c35 from: 208.94.240.42

2020/02/15

Three TRB Vpatches For Testing

Filed under: Bitcoin, Keccak, V — mod6 @ 01:27

I've been working on regrinding three vpatches that are being considered for integration into the current TRB vtree (keccak).

These three vpatches, along with their signatures, are placed into this article (see below) for testing. They have been signed with my 'mod6-vpatch-testing' key. (For those who do not know, I use a secondary key for signing vpatches that are still considered "not final", "experimental", or "testing".)

Here are the vpatches and their seals (signatures) with my 'mod6-vpatch-testing' key. Most importantly, let it not go unsaid: Any vpatch signed with my 'mod6-vpatch-testing' key is for TESTING ONLY. You should NEVER use a vpatch in 'production' or 'battlefield' mode that has been signed with my vpatch testing key. Also, as always, be sure to read ALL code before you put it into use! Only you, dear reader, can be the guardian of your own safety.

Below are the three vpatches, currently in testing, along with their corresponding seals. I am also linking their historical posts to the btc-dev Mailing List.

A. mod6_phexdigit_fix.vpatch  [sig]

   Historical Link for phexdigit_fix:
   * Original post to the btc-dev mailing list

B. mod6_excise_hash_truncation.vpatch  [sig]

   Historical Links for excise_hash_truncation:
     * Original post to the btc-dev mailing list by ben_vulpes
     * Second post, follow up to the original, by ben_vulpes
     * Third post, first regrind of the original by me.
     * Fourth post, second regrind of the original.
       Includes a manifest file, original vpatches and comments incorporated.

C. mod6_whogaveblox.vpatch  [sig]

   Historical Link for whogaveblox:
     * Original post to the btc-dev ML by asciilifeform
   ** New single line change by me in a conditional statement.
      Here's a small snip of a diff of the vpatches:

@@ -16,7 +35,7 @@
 +    // Whose block we are trying.
 +    string peer_ip;
 +
-+    if (pfrom) {
++    if (pfrom != NULL) {

Building a testing vtree with these new vpatches:
1. You'll need a Keccak vtron, find 'starter_v_2.tar.gz' here, by diana_coman.
2. You'll need a full copy of the current TRB vtree (keccak); vpatches and their corresponding seals.
3. Place these in your patches and .seals directories respectively.
4. You'll need to place the vpatches for testing (phexdigit_fix, excise_hash_truncation, whogaveblox) in your 'patches' directory.
5. You'll need to place the their corresponding seals (signed with my 'mod6-vpatch-testing' key) into your '.seals' directory.
6. You'll need to get my main key and place it in your '.wot' directory.
7. You'll need to get my mod6-vpatch-testing key and place it in your '.wot' directory.
8. Now you should have 'mod6_whogaveblox.vpatch' as a single leaf:

mod6@gentoo ~ $ vk.pl l
Leaf: mod6_whogaveblox.vpatch (mod6-vpatch-testing)

9. You should have a flow that looks like this:

mod6@gentoo ~ $ vk.pl f
genesis.vpatch (mod6)
bitcoin-asciilifeform.1.vpatch (mod6)
rm_rf_upnp.vpatch (mod6)
bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch (mod6)
bitcoin-asciilifeform.2-https_snipsnip.vpatch (mod6)
bitcoin-asciilifeform.4-goodbye-win32.vpatch (mod6)
asciilifeform_dnsseed_snipsnip.vpatch (mod6)
asciilifeform_zap_hardcoded_seeds.vpatch (mod6)
asciilifeform-kills-integer-retardation.vpatch (mod6)
asciilifeform_zap_showmyip_crud.vpatch (mod6)
asciilifeform_dns_thermonyukyoolar_kleansing.vpatch (mod6)
asciilifeform_and_now_we_have_block_dumper_corrected.vpatch (mod6)
mod6_fix_dumpblock_params.vpatch (mod6)
bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch (mod6)
bitcoin-v0_5_3_1-rev_bump.7.vpatch (mod6)
asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch (mod6)
asciilifeform_orphanage_thermonuke.vpatch (mod6)
asciilifeform_and_now_we_have_eatblock.vpatch (mod6)
bitcoin-v0_5_3-db_config.6.vpatch (mod6)
asciilifeform_tx-orphanage_amputation.vpatch (mod6)
asciilifeform_maxint_locks_corrected.vpatch (mod6)
asciilifeform_lets_lose_testnet.vpatch (mod6)
asciilifeform_add_verifyall_option.vpatch (mod6)
programmable-versionstring.vpatch (mod6)
mod6_der_high_low_s.vpatch (mod6)
malleus_mikehearnificarum.vpatch (mod6)
makefiles.vpatch (mod6)
asciilifeform_aggressive_pushgetblocks.vpatch (mod6)
mod6_privkey_tools.vpatch (mod6)
mod6_manifest.vpatch (mod6)
mod6_phexdigit_fix.vpatch (mod6-vpatch-testing)
mod6_excise_hash_truncation.vpatch (mod6-vpatch-testing)
mod6_whogaveblox.vpatch (mod6-vpatch-testing)

10. A press-path that looks like this:

mod6@gentoo ~ $ vk.pl pp mod6_whogaveblox.vpatch
genesis.vpatch (mod6)
bitcoin-asciilifeform.1.vpatch (mod6)
rm_rf_upnp.vpatch (mod6)
bitcoin-asciilifeform.2-https_snipsnip.vpatch (mod6)
bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch (mod6)
bitcoin-asciilifeform.4-goodbye-win32.vpatch (mod6)
bitcoin-v0_5_3-db_config.6.vpatch (mod6)
bitcoin-v0_5_3_1-rev_bump.7.vpatch (mod6)
bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch (mod6)
asciilifeform-kills-integer-retardation.vpatch (mod6)
asciilifeform_and_now_we_have_block_dumper_corrected.vpatch (mod6)
asciilifeform_dnsseed_snipsnip.vpatch (mod6)
asciilifeform_maxint_locks_corrected.vpatch (mod6)
asciilifeform_orphanage_thermonuke.vpatch (mod6)
asciilifeform_tx-orphanage_amputation.vpatch (mod6)
asciilifeform_zap_hardcoded_seeds.vpatch (mod6)
asciilifeform_zap_showmyip_crud.vpatch (mod6)
mod6_fix_dumpblock_params.vpatch (mod6)
asciilifeform_dns_thermonyukyoolar_kleansing.vpatch (mod6)
asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch (mod6)
asciilifeform_and_now_we_have_eatblock.vpatch (mod6)
asciilifeform_lets_lose_testnet.vpatch (mod6)
asciilifeform_add_verifyall_option.vpatch (mod6)
programmable-versionstring.vpatch (mod6)
malleus_mikehearnificarum.vpatch (mod6)
mod6_der_high_low_s.vpatch (mod6)
mod6_privkey_tools.vpatch (mod6)
makefiles.vpatch (mod6)
asciilifeform_aggressive_pushgetblocks.vpatch (mod6)
mod6_manifest.vpatch (mod6)
mod6_phexdigit_fix.vpatch (mod6-vpatch-testing)
mod6_excise_hash_truncation.vpatch (mod6-vpatch-testing)
mod6_whogaveblox.vpatch (mod6-vpatch-testing)

As far as my own testing, I have been able to place these vpatches, along with their seals into V, and press all the way up through the single leaf, 'mod6_whogaveblox.vpatch'. After successful press, I was able to successfully compile TRB. I haven't completed any further testing as of yet. Testing is on-going, currently. I anticipate about 7 to 10 days of further testing before completion.

That's all for now -- upon successful testing, will be issuing final signatures with my main key for these vpatches (see above) in a follow up article.

2020/01/14

Physical Specifications for The Bitcoin Foundation's Servers

Filed under: Auctions — mod6 @ 17:16

The Bitcoin Foundation currently owns two physical servers. Neither of which are in use currently, and will be auctioned off via auctionbot, sometime in the near future. There will be a separate auction for each machine below.

Below are the technical specifications of each machine for sale. I'll refer to each as Server-A (shipping from U.S.) and Server-B (shipping from Uruguay).

Server-A ships from U.S.:
1U Dell PowerEdge R610
2 x Intel Xeon E5640 (2.66 Ghz Quad Core)
48Gb RAM
No hard drives included. Six drive bays for 2.5" SAS or SATA.
4 x 1 Gigabit NIC
DVD Optical Drive
Dual 717 Watt Power Supplies
No rails included

Server-B Ships from Uruguay:
1U Dell PowerEdge R610
2 x Intel Xeon E5640 (2.66 Ghz Quad Core)
48Gb RAM
No hard drives included. Six drive bays for 2.5" SAS or SATA.
4 x 1 Gigabit NIC
DVD Optical Drive
Dual 502 Watt Power Supplies
2 extra 502 Watt Power Supplies (~5 lbs. each)
Rails are included

You can expect that shipping weight for a single server is going to be around 50 lbs. / 23 kg.

The buyer takes possession at their own expense. This may be expensive depending on how far it needs to ship to your location. Be advised!

2019/08/01

Testing bvt's Blockwise Read vpatch

Filed under: V — mod6 @ 02:30

In the logs recently, I read that bvt created a blog post, along with a vpatch, and signature for resolving the problem of (v)diffing large files. I wanted to give this a test, just to ensure that it works. Especially in light of recent conversations regarding using large genesis files.

To begin with, I went to the base page for 'vtools' so that I could see the most recent vtree. By clicking on each node in the vtree, I was able to download all of the vpatches and corresponding signatures.

I then pressed the vtree to my local environment, and built the source. After a successful compilation, I wanted to run a five tests. The tests begin with diffing files 25 Mb each, then doubling each pass. Below, I'm posting my log file so others can review and comment if they wish.

mod6@cuntoo-test1 ~/large-vdiff $ mkdir .wot
mod6@cuntoo-test1 ~/large-vdiff $ mkdir patches
mod6@cuntoo-test1 ~/large-vdiff $ mkdir .seals

# Add patches, seals, and keys here...

mod6@cuntoo-test1 ~/large-vdiff $ vk.pl w
bvt:6CF3EFF892A7F23E7E798E5EBA6B8C054B962B68:bvt aka BT
phf:BDDE12104FE81BE7F83B698F5356DE4752432A9E:Philip Fominykh

mod6@cuntoo-test1 ~/large-vdiff $ vk.pl f
vtools_genesis.vpatch (phf)
vdiff_fixes_newline_gcc.vpatch (phf)
keccak.vpatch (phf)
vdiff_keccak.vpatch (phf)
vtools_fixes_bitrate_char_array.vpatch (phf)
vtools_vpatch.vpatch (phf)
vtools_fixes_static_tohex.vpatch (phf)
vtools_vpatch_newline.vpatch (phf)
vtools_ksum.vpatch (phf)
vtools_tempfile_standalone_notmp.vpatch (phf)
vdiff_blockwise_read-2.vpatch (bvt)
mod6@cuntoo-test1 ~/large-vdiff $ vk.pl pp vdiff_blockwise_read-2.vpatch
vtools_genesis.vpatch (phf)
vdiff_fixes_newline_gcc.vpatch (phf)
keccak.vpatch (phf)
vdiff_keccak.vpatch (phf)
vtools_fixes_bitrate_char_array.vpatch (phf)
vtools_vpatch.vpatch (phf)
vtools_fixes_static_tohex.vpatch (phf)
vtools_vpatch_newline.vpatch (phf)
vtools_ksum.vpatch (phf)
vtools_tempfile_standalone_notmp.vpatch (phf)
vdiff_blockwise_read-2.vpatch (bvt)
mod6@cuntoo-test1 ~/large-vdiff $
mod6@cuntoo-test1 ~/large-vdiff $ vk.pl p v test vdiff_blockwise_read-2.vpatch
vtools_genesis.vpatch
  creating vtools/Makefile
  creating vtools/lib/cmpbuf.c
  creating vtools/lib/cmpbuf.h
  creating vtools/lib/diffseq.h
  creating vtools/lib/dirname.c
  creating vtools/lib/dirname.h
  creating vtools/lib/error.c
  creating vtools/lib/error.h
  creating vtools/lib/filenamecat.c
  creating vtools/lib/filenamecat.h
  creating vtools/lib/filetype.c
  creating vtools/lib/filetype.h
  creating vtools/lib/hash.c
  creating vtools/lib/hash.h
  creating vtools/lib/progname.c
  creating vtools/lib/progname.h
  creating vtools/lib/xalloc.c
  creating vtools/lib/xalloc.h
  creating vtools/manifest
  creating vtools/src/analyze.c
  creating vtools/src/context.c
  creating vtools/src/diff.c
  creating vtools/src/diff.h
  creating vtools/src/dir.c
  creating vtools/src/io.c
  creating vtools/src/system.h
  creating vtools/src/util.c
vdiff_fixes_newline_gcc.vpatch
  patching vtools/Makefile
  patching vtools/lib/xalloc.h
  patching vtools/manifest
  patching vtools/src/analyze.c
  patching vtools/src/io.c
keccak.vpatch
  patching vtools/manifest
  creating vtools/src/smg_keccak.adb
  creating vtools/src/smg_keccak.ads
vdiff_keccak.vpatch
  patching vtools/Makefile
  patching vtools/manifest
  creating vtools/obj/readme
  patching vtools/src/analyze.c
  patching vtools/src/context.c
  patching vtools/src/diff.c
  patching vtools/src/diff.h
  patching vtools/src/io.c
  creating vtools/src/keccak.h
  creating vtools/src/keccak_c.adb
  creating vtools/src/keccak_c.ads
  patching vtools/src/smg_keccak.adb
  patching vtools/src/smg_keccak.ads
  creating vtools/vdiff.gpr
vtools_fixes_bitrate_char_array.vpatch
  patching vtools/manifest
  patching vtools/src/keccak_c.adb
  patching vtools/src/keccak_c.ads
  patching vtools/src/smg_keccak.adb
vtools_vpatch.vpatch
  patching vtools/Makefile
  patching vtools/manifest
  creating vtools/src/bits.adb
  creating vtools/src/bits.ads
  patching vtools/src/keccak_c.adb
  patching vtools/src/keccak_c.ads
  patching vtools/src/smg_keccak.ads
  creating vtools/src/vpatch.adb
  patching vtools/vdiff.gpr
  creating vtools/vpatch.gpr
vtools_fixes_static_tohex.vpatch
  patching vtools/lib/xalloc.h
  patching vtools/manifest
  patching vtools/src/bits.adb
vtools_vpatch_newline.vpatch
  patching vtools/manifest
  creating vtools/src/character_io.adb
  creating vtools/src/character_io.ads
  patching vtools/src/vpatch.adb
vtools_ksum.vpatch
  creating vtools/ksum.gpr
  patching vtools/manifest
  creating vtools/src/ksum.adb
vtools_tempfile_standalone_notmp.vpatch
  patching vtools/manifest
  creating vtools/src/temporary_file.adb
  creating vtools/src/temporary_file.ads
  patching vtools/src/vpatch.adb
vdiff_blockwise_read-2.vpatch
  patching vtools/manifest
  patching vtools/src/keccak_c.adb
mod6@cuntoo-test1 ~/large-vdiff $ cd test
mod6@cuntoo-test1 ~/large-vdiff/test $ ls
vtools
mod6@cuntoo-test1 ~/large-vdiff/test $ cd vtools/
mod6@cuntoo-test1 ~/large-vdiff/test/vtools $ ls
Makefile  ksum.gpr  lib  manifest  obj  src  vdiff.gpr  vpatch.gpr
mod6@cuntoo-test1 ~/large-vdiff/test/vtools $ make
gprbuild -Pvdiff.gpr
Compile
   [C]            diff.c
   [C]            filetype.c
   [C]            error.c
   [C]            cmpbuf.c
   [C]            progname.c
   [C]            dirname.c
   [C]            hash.c
   [C]            filenamecat.c
   [C]            xalloc.c
   [C]            dir.c
   [C]            io.c
   [C]            util.c
   [C]            context.c
   [C]            analyze.c
   [Ada]          bits.adb
   [Ada]          ksum.adb
   [Ada]          temporary_file.adb
   [Ada]          character_io.adb
   [Ada]          keccak_c.adb
   [Ada]          smg_keccak.adb
Bind
   [gprbind]      diff.bexch
   [Ada]          bits.ali -n
Link
   [archive]      libvdiff.a
   [index]        libvdiff.a
   [link]         diff.c
mod6@cuntoo-test1 ~/large-vdiff/test/vtools $
SIZE=25;
time for i in `seq 1 5`; do
  mkdir -p test$i/{a,b};
  echo "$SIZE" | perl -e '@a=; my $mb = $a[0] * 1024000; print "A" x $mb;' > test$i/a/test$i.txt;
  echo "$SIZE" | perl -e '@a=; my $mb = $a[0] * 1024000; print "B" x $mb;' > test$i/b/test$i.txt;
  ./vdiff test$i/a/test$i.txt test$i/b/test$i.txt > test$i/test$i.vpatch;
  SIZE=$((SIZE * 2));
done

real    5m49.038s
user    5m44.641s
sys     0m4.297s

mod6@cuntoo-test1 ~/large-vdiff/test/vtools $
for i in `seq 1 5`; do
  cd test$i;
  pwd;
  ls -al a/test$i.txt b/test$i.txt test$i.vpatch;
  KS_A=$(ksum a/test$i.txt);
  grep -q $KS_A test$i.vpatch;
  if [[ $? != 0 ]]; then
    echo "eggog! ksum mismatch in test$i.vpatch :: $KS_A";
  fi;
  KS_B=$(ksum b/test$i.txt);
  grep -q $KS_B test$i.vpatch;
  if [[ $? != 0 ]]; then
    echo "eggog! ksum mismatch in test$i.vpatch :: $KS_B";
  fi;
  cd ..;
done
/home/mod6/large-vdiff/test/vtools/test1
-rw-r--r-- 1 mod6 mod6 25600000 Aug  1 01:32 a/test1.txt
-rw-r--r-- 1 mod6 mod6 25600000 Aug  1 01:32 b/test1.txt
-rw-r--r-- 1 mod6 mod6 51200374 Aug  1 01:32 test1.vpatch
/home/mod6/large-vdiff/test/vtools/test2
-rw-r--r-- 1 mod6 mod6  51200000 Aug  1 01:32 a/test2.txt
-rw-r--r-- 1 mod6 mod6  51200000 Aug  1 01:32 b/test2.txt
-rw-r--r-- 1 mod6 mod6 102400374 Aug  1 01:32 test2.vpatch
/home/mod6/large-vdiff/test/vtools/test3
-rw-r--r-- 1 mod6 mod6 102400000 Aug  1 01:32 a/test3.txt
-rw-r--r-- 1 mod6 mod6 102400000 Aug  1 01:32 b/test3.txt
-rw-r--r-- 1 mod6 mod6 204800374 Aug  1 01:33 test3.vpatch
/home/mod6/large-vdiff/test/vtools/test4
-rw-r--r-- 1 mod6 mod6 204800000 Aug  1 01:33 a/test4.txt
-rw-r--r-- 1 mod6 mod6 204800000 Aug  1 01:33 b/test4.txt
-rw-r--r-- 1 mod6 mod6 409600374 Aug  1 01:34 test4.vpatch
/home/mod6/large-vdiff/test/vtools/test5
-rw-r--r-- 1 mod6 mod6 409600000 Aug  1 01:34 a/test5.txt
-rw-r--r-- 1 mod6 mod6 409600000 Aug  1 01:34 b/test5.txt
-rw-r--r-- 1 mod6 mod6 819200374 Aug  1 01:37 test5.vpatch
mod6@cuntoo-test1 ~/large-vdiff/test/vtools $

2019/07/01

Cuntoo ebuild prototypes

Filed under: Cuntoo — mod6 @ 00:22

FORWARD: Contained in this post are highly experimental ebuilds for Cuntoo! Do not use these, these are currently IN-PROGRESS! I post them here for my own notes.

Last month, upon reporting to TMSR~ that I had successfully built TRB on Cuntoo with ave1's musltronic GNAT & Tools, trinque mentioned an ebuild for TRB.

This seemed like a next good logical step in my adventure to getting TRB setup and working on Cuntoo. Despite being a Gentoo user for a few years now, I'm still very unfamiliar with the ebuild system. I decided to set out this month and learn more about the topic and attempt to build TRB via ebuilds. To do this, I consulted my build logs, and blog posts about how I went about building TRB on Cuntoo by hand. What I found was that there were three parts to making this work:

  1. A working GNAT & Tools from ave1 pre-installed on Cuntoo
  2. Building a Keccak Vtron (starter_v from diana_coman) with ave1's supplied GNAT
  3. Press the (yet unreleased) Keccak TRB Vtree [sig]; and finally build TRB with ave1's musltronic tools (gcc, g++, et. al.)

With this in mind, I wanted to try making three different ebuilds. One for each: ave1's musltronic tools, diana_coman's Keccak Vtron, and TRB itself.

For ave1's musltronic tools, I already knew in advance about the circular dependency of GNAT: You need a working GNAT to compile a GNAT. Months ago I had already attempted to install AdaCore's GNAT on Cuntoo; however, even though it will install the binaries, they will not work as these are dynamically built. At execution time they will go off and look for glibc, which does not exist on native Cuntoo. Cuntoo ships with a standard musl libc.a. For example:

cuntoo-test1 /usr/gnat/bin # ./gnat
bash: ./gnat: No such file or directory
cuntoo-test1 /usr/gnat/bin # ldd gnat
        /lib64/ld-linux-x86-64.so.2 (0x7f1570003000)
        libdl.so.2 => /lib64/ld-linux-x86-64.so.2 (0x7f1570003000)
        libm.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f1570003000)
        libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f1570003000)
Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by gnat)
Error relocating gnat: _obstack_newchunk: symbol not found
Error relocating gnat: obstack_free: symbol not found
Error relocating gnat: _obstack_begin: symbol not found
Error relocating gnat: _obstack_memory_used: symbol not found

I want to compile ave1's musltronic tools on Cuntoo; however, to continue with the proofs of concept, I decided to make an ebuild that would simply pull and unpack a tarball of pre-(cross)-compiled (on a separate gentoo) binaries. And after all, this is a learning exercise. I won't even bother posting this ebuild in this post as it will be discarded.

Continuing on, I also created an ebuild for Keccak V Tools. This one is more elaborate, as it will pull the remote 'starter_v.zip' and the signature file, check the signature, build and install. You can see the ebuild here. ***Please keep in mind these are EXPERIMENTAL only!!***

Lastly, the ebuild for TRB was more elaborate than for Keccak V Tools and setup to depend on the Keccak V Tools ebuild. Additionally, it needs to do a whole variety of tasks, such as: Get the unreleased Keccak TRB Vtree tarball & Signature, and verify them; Unpack the tarball, move the vpatches and seals into their proper places; Press up through the HEAD; Grab the experimental 'mod6_cuntoo_with_ave1_tools.vpatch', place it in the proper place for a "manual" patching process on top of the pressed Keccak TRB Vtree. Finally, compiling in src_install() {}. You can see the ebuild here. ***Please keep in mind these are EXPERIMENTAL only!!***


Of course, going forward, we won't need to grab the Keccak Vtree tarball, nor the 'mod6_cuntoo_with_ave1_tools.vpatch', this will all be included the main Vtree @ The Bitcoin Foundation.

The next hurdle remains to be getting ave1 musltronic tools compiled on Cuntoo.

2019/05/22

Building TRB on Cuntoo: Part 1

Filed under: Bitcoin, Cuntoo, GNAT, Keccak, V — mod6 @ 02:35

Continuing to build upon last month's post (building ave1's musltronic GNAT on Gentoo), I wanted to try building TRB on Cuntoo.

I utilized diana_coman's Keccak-V to press Keccak-V TRB vpatches and seals that I created back in January. These have not yet been reviewed by other TMSR~ Lords, and subsequently, still are considered experimental at the time of this writing.

After pressing the Keccak TRB Tree up through asciilifeform_aggressive_pushgetblocks.vpatch into directory 'a', I copied all of it's contents into directory 'b'. This way, I'm able to make changes in directory 'b'; removing all of the buildroot requirements throughout the Makefiles. Once these changes were complete, I was able to use the Keccak vdiff tool to compare the original press directory in 'a', with the changes made in 'b' to output a new vpatch.

As a preliminary step, I simply set out to update the Makefile.rotor file in the 'build' directory so that I could utilize the deployed musltronic toolset in '/opt/20180924' and build the following: Boost, BDB, and OpenSSL. I was successful in building both Boost and OpenSSL without any changes at all; however, I did get an error when building BDB:

-L/opt/20180924/x86_64-linux-musl-native/lib -lpthread
-Wl,-soname -Wl,libdb-4.8.so -o
.libs/libdb-4.8.so /opt/20180924/x86_64-linux-musl-native/bin/../lib/gcc/x86_64-linux-musl/4.9.4/../../../../x86_64-linux-musl/bin/ld:
/opt/20180924/x86_64-linux-musl-native/bin/../lib/gcc/x86_64-linux-musl/4.9.4/../../../../x86_64-linux-musl/lib/libc.a(sysconf.o):
relocation R_X86_64_32S against `.rodata.values.2406' can not be used when making a shared object;
recompile with -fPIC /opt/20180924/x86_64-linux-musl-native/bin/../lib/gcc/x86_64-linux-musl/4.9.4/../../../../x86_64-linux-musl/lib/libc.a:
error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:771: libdb-4.8.la] Error 1
make[1]: Leaving directory
'/home/mod6/trb/trb054/bitcoin/build/db-4.8.30/build_unix'
make: *** [Makefile.rotor:41: db-4.8.30] Error 2

Seeing that this was a relocation record error was a clue for me. I wanted ensure that we're not building a shared library, so I dug up some BDB documentation here. Specifically:

--disable-shared, --disable-static

On systems supporting shared libraries, Berkeley DB builds both static and shared libraries by default. (Shared libraries are built using the GNU Project's Libtool distribution, which supports shared library builds on many (although not all) systems.) To not build shared libraries, configure using the --disable-shared argument. To not build static libraries, configure using the --disable-static argument.

I then added the '--disable-shared' flag to the configure options for BDB, it compiled, no problem at all.

The changes to the Makefiles were as follows:

  1. Removal of buildroot, its dependencies, and their checksums
  2. Updating the following environment variables in Makefile.rotor to point at my deployed musltronic native binaries from ave1's 20180924 version:
    1. CC
    2. CXX
    3. LD
    4. CFLAGS
    5. LDFLAGS
    6. PATH
  3. The addition of the '--disable-shared' configure flag for BDB

Once I had a vpatch of the necessary changes, I did another press up through asciilifeform_aggressive_pushgetblocks.vpatch into the 'test' directory. Next, I simply just applied my own vpatch manually (just for testing purposes). I then conducted a full TRB build, with success. Lastly, I started up TRB and was able to connect to the network and pull blocks. More testing is required, of course, but it was nice to see this working!

What follows below is a full log of all of the things that I conducted, as well as the (unsigned) vpatch of the changes that I created.

mod6@cuntoo-test1 ~ $ mkdir trb
mod6@cuntoo-test1 ~ $ cd trb/
mod6@cuntoo-test1 ~/trb $ touch log.txt
mod6@cuntoo-test1 ~/trb $ curl -sL
"http://ossasepia.com/vpatches/starter_v.zip" -O
mod6@cuntoo-test1 ~/trb $ curl -sL
"http://ossasepia.com/vpatches/starter_v.zip.diana_coman.sig" -O
mod6@cuntoo-test1 ~/trb $ gpg --verify starter_v.zip.diana_coman.sig
starter_v.zip
gpg: Signature made Wed Nov 14 10:39:50 2018 UTC using RSA key ID 390F999E
gpg: Good signature from "Diana Coman "
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: E72D CCB7 3A5E 0669 4C5C  D781 D519 6EE6 390F 999E
mod6@cuntoo-test1 ~/trb $ unzip starter_v.zip
Archive:  starter_v.zip
   creating: starter_v/
  inflating: starter_v/clean.sh
  inflating: starter_v/build.sh
   creating: starter_v/vtools/
  inflating: starter_v/vtools/vdiff.gpr
  inflating: starter_v/vtools/vpatch.gpr
  inflating: starter_v/vtools/Makefile
  inflating: starter_v/vtools/ksum.gpr
  inflating: starter_v/vtools/manifest
   creating: starter_v/v/
  inflating: starter_v/v/v.pl
  inflating: starter_v/v/v_quick_start.txt
  inflating: starter_v/v/manifest
   creating: starter_v/vtools/src/
  inflating: starter_v/vtools/src/bits.ads
  inflating: starter_v/vtools/src/keccak_c.adb
  inflating: starter_v/vtools/src/vpatch.adb
  inflating: starter_v/vtools/src/dir.c
  inflating: starter_v/vtools/src/util.c
  inflating: starter_v/vtools/src/keccak.h
  inflating: starter_v/vtools/src/diff.h
  inflating: starter_v/vtools/src/bits.adb
  inflating: starter_v/vtools/src/character_io.ads
  inflating: starter_v/vtools/src/context.c
  inflating: starter_v/vtools/src/smg_keccak.adb
  inflating: starter_v/vtools/src/character_io.adb
  inflating: starter_v/vtools/src/ksum.adb
  inflating: starter_v/vtools/src/analyze.c
  inflating: starter_v/vtools/src/keccak_c.ads
  inflating: starter_v/vtools/src/io.c
  inflating: starter_v/vtools/src/diff.c
  inflating: starter_v/vtools/src/smg_keccak.ads
  inflating: starter_v/vtools/src/system.h
   creating: starter_v/vtools/lib/
  inflating: starter_v/vtools/lib/hash.c
  inflating: starter_v/vtools/lib/cmpbuf.c
  inflating: starter_v/vtools/lib/progname.c
  inflating: starter_v/vtools/lib/filetype.h
  inflating: starter_v/vtools/lib/xalloc.c
  inflating: starter_v/vtools/lib/dirname.h
  inflating: starter_v/vtools/lib/filetype.c
  inflating: starter_v/vtools/lib/progname.h
  inflating: starter_v/vtools/lib/cmpbuf.h
  inflating: starter_v/vtools/lib/error.h
  inflating: starter_v/vtools/lib/error.c
  inflating: starter_v/vtools/lib/filenamecat.c
  inflating: starter_v/vtools/lib/dirname.c
  inflating: starter_v/vtools/lib/diffseq.h
  inflating: starter_v/vtools/lib/hash.h
  inflating: starter_v/vtools/lib/filenamecat.h
  inflating: starter_v/vtools/lib/xalloc.h
   creating: starter_v/vtools/obj/
 extracting: starter_v/vtools/obj/readme
mod6@cuntoo-test1 ~/trb $
mod6@cuntoo-test1 ~/trb $ cd starter_v
mod6@cuntoo-test1 ~/trb/starter_v $ chmod +x build.sh
mod6@cuntoo-test1 ~/trb/starter_v $ ./build.sh
Compile
   [C]            diff.c
   [C]            filetype.c
   [C]            error.c
   [C]            cmpbuf.c
   [C]            progname.c
   [C]            dirname.c
   [C]            hash.c
   [C]            filenamecat.c
   [C]            xalloc.c
   [C]            dir.c
   [C]            io.c
   [C]            util.c
   [C]            context.c
   [C]            analyze.c
   [Ada]          bits.adb
   [Ada]          ksum.adb
   [Ada]          character_io.adb
   [Ada]          keccak_c.adb
   [Ada]          smg_keccak.adb
Bind
   [gprbind]      diff.bexch
   [Ada]          bits.ali -n
Link
   [archive]      libvdiff.a
   [index]        libvdiff.a
   [link]         diff.c
Compile
   [Ada]          vpatch.adb
Bind
   [gprbind]      vpatch.bexch
   [Ada]          vpatch.ali
Link
   [link]         vpatch.adb
Bind
   [gprbind]      ksum.bexch
   [Ada]          ksum.ali
Link
   [link]         ksum.adb
Done.
mod6@cuntoo-test1 ~/trb/starter_v $
mod6@cuntoo-test1 ~/trb/starter_v $ command -v ksum
/usr/local/bin/ksum
mod6@cuntoo-test1 ~/trb/starter_v $ command -v vdiff
/usr/local/bin/vdiff
mod6@cuntoo-test1 ~/trb/starter_v $ command -v vpatch
/usr/local/bin/vpatch
mod6@cuntoo-test1 ~/trb $ mkdir .wot
mod6@cuntoo-test1 ~/trb $ mkdir .seals
mod6@cuntoo-test1 ~/trb $ mkdir patches
mod6@cuntoo-test1 ~/trb $ cd .wot
mod6@cuntoo-test1 ~/trb/.wot $ cp ~/pubkeys/mod6.asc .
mod6@cuntoo-test1 ~/trb/.wot $ cd ../
mod6@cuntoo-test1 ~/trb $ cp starter_v/vk.pl .
mod6@cuntoo-test1 ~/trb $ ./vk.pl w
mod6:027A8D7C0FB8A16643720F40721705A8B71EADAF:mod6 (mod6) 
mod6@cuntoo-test1 ~/trb $ curl -sL "http://mod6.net/trb/regrinds/keccak_trb_20190112.tar.gz" -O
mod6@cuntoo-test1 ~/trb $ curl -sL "http://mod6.net/trb/regrinds/keccak_trb_20190112.tar.gz.mod6.sig" -O
mod6@cuntoo-test1 ~/trb $ gpg --import ~/pubkeys/mod6.asc
gpg: key B71EADAF: public key "mod6 (mod6) " imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
gpg: no ultimately trusted keys found
mod6@cuntoo-test1 ~/trb $ gpg --verify keccak_trb_20190112.tar.gz.mod6.sig keccak_trb_20190112.tar.gz
gpg: Signature made Sun Jan 13 18:39:41 2019 UTC using RSA key ID B71EADAF
gpg: Good signature from "mod6 (mod6) "
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 027A 8D7C 0FB8 A166 4372  0F40 7217 05A8 B71E ADAF
mod6@cuntoo-test1 ~/trb $ tar -xf keccak_trb_20190112.tar.gz
mod6@cuntoo-test1 ~/trb $ ls
keccak_trb_20190112.tar.gz  keccak_trb_20190112.tar.gz.mod6.sig  log.txt  seals  starter_v  starter_v.zip  starter_v.zip.diana_coman.sig  vk.pl  vpatches
mod6@cuntoo-test1 ~/trb $ mv seals/ .seals
mod6@cuntoo-test1 ~/trb $ mv vpatches/ patches
mod6@cuntoo-test1 ~/trb $ ./vk.pl f
genesis.vpatch (mod6)
bitcoin-asciilifeform.1.vpatch (mod6)
rm_rf_upnp.vpatch (mod6)
bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch (mod6)
bitcoin-asciilifeform.2-https_snipsnip.vpatch (mod6)
bitcoin-asciilifeform.4-goodbye-win32.vpatch (mod6)
asciilifeform_dnsseed_snipsnip.vpatch (mod6)
asciilifeform_zap_hardcoded_seeds.vpatch (mod6)
asciilifeform-kills-integer-retardation.vpatch (mod6)
asciilifeform_zap_showmyip_crud.vpatch (mod6)
asciilifeform_dns_thermonyukyoolar_kleansing.vpatch (mod6)
asciilifeform_and_now_we_have_block_dumper_corrected.vpatch (mod6)
mod6_fix_dumpblock_params.vpatch (mod6)
bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch (mod6)
bitcoin-v0_5_3_1-rev_bump.7.vpatch (mod6)
asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch (mod6)
asciilifeform_orphanage_thermonuke.vpatch (mod6)
asciilifeform_and_now_we_have_eatblock.vpatch (mod6)
bitcoin-v0_5_3-db_config.6.vpatch (mod6)
asciilifeform_tx-orphanage_amputation.vpatch (mod6)
asciilifeform_maxint_locks_corrected.vpatch (mod6)
asciilifeform_lets_lose_testnet.vpatch (mod6)
asciilifeform_add_verifyall_option.vpatch (mod6)
programmable-versionstring.vpatch (mod6)
mod6_der_high_low_s.vpatch (mod6)
malleus_mikehearnificarum.vpatch (mod6)
makefiles.vpatch (mod6)
asciilifeform_aggressive_pushgetblocks.vpatch (mod6)
mod6@cuntoo-test1 ~/trb $ ./vk.pl p a asciilifeform_aggressive_pushgetblocks.vpatch
mod6@cuntoo-test1 ~/trb $ cp -pr a b
mod6@cuntoo-test1 ~/trb $ ls a
bitcoin
mod6@cuntoo-test1 ~/trb $ ls b
bitcoin

# Here's where I went into directory 'b' and made my changes.
#
# See the full (keccak) vpatch at the bottom of this blog post, or here.

mod6@cuntoo-test1 ~/trb $ vdiff a b > mod6_cuntoo_with_ave1_tools.vpatch
mod6@cuntoo-test1 ~/trb $ ./vk.pl p test asciilifeform_aggressive_pushgetblocks.vpatch
mod6@cuntoo-test1 ~/trb $ cd test/
mod6@cuntoo-test1 ~/trb/test $ cp ../mod6_cuntoo_with_ave1_tools.vpatch .
# ( patching manually just for testing! )
mod6@cuntoo-test1 ~/trb/test $ patch -p1 < mod6_cuntoo_with_ave1_tools.vpatch
patching file bitcoin/build/Makefile
patching file bitcoin/build/Makefile.rotor
patching file bitcoin/deps/Makefile
patching file bitcoin/deps/Manifest.sha512

mod6@cuntoo-test1 ~/trb/test $ cd bitcoin
mod6@cuntoo-test1 ~/trb/test/bitcoin $ make ONLINE=1

...

trb/test/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/init.o init.cpp
/opt/20180924/x86_64-linux-musl-native/bin/g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/keystore.o keystore.cpp
/opt/20180924/x86_64-linux-musl-native/bin/g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/main.o main.cpp
/opt/20180924/x86_64-linux-musl-native/bin/g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/net.o net.cpp
/opt/20180924/x86_64-linux-musl-native/bin/g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/protocol.o protocol.cpp
/opt/20180924/x86_64-linux-musl-native/bin/g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/bitcoinrpc.o bitcoinrpc.cpp
In file included from /home/mod6/trb/test/bitcoin/build/ourlibs/include/boost/asio/detail/socket_types.hpp:50:0,
                 from /home/mod6/trb/test/bitcoin/build/ourlibs/include/boost/asio/detail/epoll_reactor.hpp:32,
                 from /home/mod6/trb/test/bitcoin/build/ourlibs/include/boost/asio/detail/reactor.hpp:21,
                 from /home/mod6/trb/test/bitcoin/build/ourlibs/include/boost/asio/detail/impl/task_io_service.ipp:24,
                 from /home/mod6/trb/test/bitcoin/build/ourlibs/include/boost/asio/detail/task_io_service.hpp:217,
                 from /home/mod6/trb/test/bitcoin/build/ourlibs/include/boost/asio/impl/io_service.hpp:71,
                 from /home/mod6/trb/test/bitcoin/build/ourlibs/include/boost/asio/io_service.hpp:767,
                 from /home/mod6/trb/test/bitcoin/build/ourlibs/include/boost/asio/basic_io_object.hpp:19,
                 from /home/mod6/trb/test/bitcoin/build/ourlibs/include/boost/asio/basic_socket.hpp:19,
                 from /home/mod6/trb/test/bitcoin/build/ourlibs/include/boost/asio/basic_datagram_socket.hpp:20,
                 from /home/mod6/trb/test/bitcoin/build/ourlibs/include/boost/asio.hpp:20,
                 from bitcoinrpc.cpp:11:
/opt/20180924/x86_64-linux-musl-native/x86_64-linux-musl/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include  to
 [-Wcpp]
 #warning redirecting incorrect #include  to

  ^
/opt/20180924/x86_64-linux-musl-native/bin/g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/script.o script.cpp
/opt/20180924/x86_64-linux-musl-native/bin/g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/util.o util.cpp
/opt/20180924/x86_64-linux-musl-native/bin/g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/wallet.o wallet.cpp
/opt/20180924/x86_64-linux-musl-native/bin/g++ -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -I/home/mod6/trb/test/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -o bitcoind obj/nogui/checkpoints.o obj/nogui/crypter.o obj/nogui/db.o obj/nogui/init.o obj/nogui/keystore.o obj/nogui/main.o obj/nogui/net.o obj/nogui/protocol.o obj/nogui/bitcoinrpc.o obj/nogui/script.o obj/nogui/util.o obj/nogui/wallet.o -L/opt/20180924/x86_64-linux-musl-native/lib -L/home/mod6/trb/test/bitcoin/build/ourlibs/lib -L/home/mod6/trb/test/bitcoin/build/ourlibs/lib -L/home/mod6/trb/test/bitcoin/build/ourlibs/lib -Wl,-Bstatic -l boost_system -l boost_filesystem -l boost_program_options -l boost_thread -l db_cxx -l ssl -l crypto -static-libgcc -Wl,-Bstatic -l pthread
make[3]: Leaving directory '/home/mod6/trb/test/bitcoin/src'
strip ../src/bitcoind
make[2]: Leaving directory '/home/mod6/trb/test/bitcoin/build'
cp ../src/bitcoind .
make[1]: Leaving directory '/home/mod6/trb/test/bitcoin/build'
make -C bin
make[1]: Entering directory '/home/mod6/trb/test/bitcoin/bin'
cp ../build/bitcoind .
#grep "  bitcoind$" Manifest.sha512 | sha512sum -c || (mv bitcoind bitcoind.badsum && false)
make[1]: Leaving directory '/home/mod6/trb/test/bitcoin/bin'
mod6@cuntoo-test1 ~/trb/test/bitcoin $ ls -al bin/bitcoind
-rwxr-xr-x 1 mod6 mod6 5085296 May 18 00:40 bin/bitcoind
mod6@cuntoo-test1 ~/trb/test/bitcoin $ mkdir ~/.bitcoin
mod6@cuntoo-test1 ~/trb/test/bitcoin $ vim ~/.bitcoin/bitcoin.conf
mod6@cuntoo-test1 ~/trb/test/bitcoin $
...
From here I started up bitcoind, and pulled the first 2000 blocks.

Here is the full (keccak) 'mod6_cuntoo_with_ave1_tools.vpatch' file (for review):

diff -uNr a/bitcoin/build/Makefile b/bitcoin/build/Makefile
--- a/bitcoin/build/Makefile c958ddef742cd53043ad744166918e1e0a16da6e660341adfddb34280e650031dd0ada7ebf0679764a2dbd41a70d78204af34f381f8ed4e48be0098227a19358
+++ b/bitcoin/build/Makefile 1199de9a81356a54737644c0177c48f7c6e558eb0b3e37e3f5a4129b748505725c0117c2f0b96f3d0bec812b6aed042c2cff4dd679426e7675f23c544885119e
@@ -1,6 +1,6 @@
 BUILDER=rotor

-all: buildroot-2015.05 rotor bitcoind
+all: rotor bitcoind

 clean:
 	find . -maxdepth 1 \
@@ -9,31 +9,11 @@
 	-not -name '.' \
 	-exec rm -rf {} \;

-buildroot-2015.05:
-	tar -xvzf ../deps/buildroot-2015.05.tar.gz
-	tar -xvzf ../deps/rotor.tar.gz
-	cp rotor_buildroot_dot_config buildroot-2015.05/.config
-	mkdir -p buildroot-2015.05/dl
-	cp ../deps/binutils-2.24.tar.bz2 \
-	../deps/busybox-1.23.2.tar.bz2 \
-	../deps/expat-2.1.0.tar.gz \
-	../deps/fakeroot_1.18.4.orig.tar.bz2 \
-	../deps/gcc-4.9.2.tar.bz2 \
-	../deps/gdb-7.8.2.tar.xz \
-	../deps/gmp-6.0.0a.tar.xz \
-	../deps/linux-3.18.14.tar.xz \
-	../deps/m4-1.4.17.tar.xz \
-	../deps/mpc-1.0.3.tar.gz \
-	../deps/mpfr-3.1.2.tar.xz \
-	../deps/musl-1.1.8.tar.gz \
-	../deps/ncurses-5.9.tar.gz \
-	../deps/pkgconf-0.8.9.tar.bz2 \
-	buildroot-2015.05/dl
-
 	$(MAKE) -C buildroot-2015.05

 .PHONY: $(BUILDER)
 $(BUILDER):
+	tar -xvzf ../deps/rotor.tar.gz
 	$(MAKE) -f Makefile.$(BUILDER)

 bitcoind:
diff -uNr a/bitcoin/build/Makefile.rotor b/bitcoin/build/Makefile.rotor
--- a/bitcoin/build/Makefile.rotor ba5a6c72cf444b5872fb006ca025ea4df3c7293a8986019b64fb57ef9d28e6a3080a81a169197b956825c1fee92fc025c0ec9a8e36f50d9fb7c2f3a9bd8ac5de
+++ b/bitcoin/build/Makefile.rotor a3138a9e927585e84258b1ab008120e5be73dfa2f1f6bebc41c54fff75e601baf24263b707af9ebcb2ecca8d3436e45242fba0ee456335858b6cd8ff3cafabb6
@@ -7,12 +7,12 @@

 export DIST=$(shell readlink -f ../deps)
 export OURLIBS=$(shell readlink -f ./ourlibs)
-export CC=$(shell readlink -f toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-gcc)
-export CXX=$(shell readlink -f toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-g++)
-export LD=$(shell readlink -f toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-ld)
-export CFLAGS=-I$(shell readlink -f toolchain/usr/include)
-export LDFLAGS=-L$(shell readlink -f toolchain/usr/lib)
-export PATH := $(PATH):$(shell readlink -f toolchain/usr/bin)
+export CC=$(shell readlink -f /opt/20180924/x86_64-linux-musl-native/bin/gcc)
+export CXX=$(shell readlink -f /opt/20180924/x86_64-linux-musl-native/bin/g++)
+export LD=$(shell readlink -f /opt/20180924/x86_64-linux-musl-native/bin/ld)
+export CFLAGS=-I$(shell readlink -f /opt/20180924/x86_64-linux-musl-native/include)
+export LDFLAGS=-L$(shell readlink -f /opt/20180924/x86_64-linux-musl-native/lib)
+export PATH := $(PATH):$(shell readlink -f /opt/20180924/x86_64-linux-musl-native/bin)
 export BOOST_INCLUDE_PATH=$(OURLIBS)/include
 export BDB_INCLUDE_PATH=$(OURLIBS)/include
 export OPENSSL_INCLUDE_PATH=$(OURLIBS)/include
@@ -38,7 +38,7 @@
 $(BDB):
 	tar xvfz $(DIST)/$(BDB).tar.gz
 	cd $(BDB)/build_unix && \
-	../dist/configure --enable-cxx --prefix=$(OURLIBS) --host=x86_64-linux && \
+	../dist/configure --disable-shared --enable-cxx --prefix=$(OURLIBS) --host=x86_64-linux && \
 	$(MAKE) && \
 	$(MAKE) install

diff -uNr a/bitcoin/deps/Makefile b/bitcoin/deps/Makefile
--- a/bitcoin/deps/Makefile 84410767530f3081269fbc0f494b5a00f7d7f665ed442a7330b87cee22fb83d5bd4acdb47f75e0cce984a37372cb81ef16931280aa3b8abcf879caa632258548
+++ b/bitcoin/deps/Makefile 4b8ba13ff82f0e6095a5d1a8a4928b3223fb2be6acb4335eb8026e0f441a49d58fb93dfabbf1f4f8ce8e9ddc613706b8986da4e495d9a4f66452d74544ace01d
@@ -1,32 +1,17 @@
 include ../verify.mk

-all: boost_1_52_0.tar.bz2 buildroot-2015.05.tar.gz db-4.8.30.tar.gz \
-     openssl-1.0.1g.tar.gz binutils-2.24.tar.bz2 busybox-1.23.2.tar.bz2 \
-     expat-2.1.0.tar.gz fakeroot_1.18.4.orig.tar.bz2 gcc-4.9.2.tar.bz2 \
-     gdb-7.8.2.tar.xz gmp-6.0.0a.tar.xz linux-3.18.14.tar.xz \
-     m4-1.4.17.tar.xz mpc-1.0.3.tar.gz mpfr-3.1.2.tar.xz musl-1.1.8.tar.gz \
-     ncurses-5.9.tar.gz pkgconf-0.8.9.tar.bz2 rotor.tar.gz \
-     rotor-db-configure-fix.patch
+all: boost_1_52_0.tar.bz2 db-4.8.30.tar.gz openssl-1.0.1g.tar.gz \
+     rotor.tar.gz rotor-db-configure-fix.patch

 check:
 	$(SHA512) -c Manifest.sha512

 clean:
-	rm -f boost_1_52_0.tar.bz2 buildroot-2015.05.tar.gz db-4.8.30.tar.gz \
-	openssl-1.0.1g.tar.gz binutils-2.24.tar.bz2 busybox-1.23.2.tar.bz2 \
-	expat-2.1.0.tar.gz fakeroot_1.18.4.orig.tar.bz2 gcc-4.9.2.tar.bz2 \
-	gdb-7.8.2.tar.xz gmp-6.0.0a.tar.xz linux-3.18.14.tar.xz \
-	m4-1.4.17.tar.xz mpc-1.0.3.tar.gz mpfr-3.1.2.tar.xz musl-1.1.8.tar.gz \
-	ncurses-5.9.tar.gz pkgconf-0.8.9.tar.bz2 rotor.tar.gz \
-	rotor-db-configure-fix.patch boost_1_52_0.tar.bz2.asc \
-	buildroot-2015.05.tar.gz.asc db-4.8.30.tar.gz.asc \
-	openssl-1.0.1g.tar.gz.asc binutils-2.24.tar.bz2.asc \
-	busybox-1.23.2.tar.bz2.asc expat-2.1.0.tar.gz.asc \
-	fakeroot_1.18.4.orig.tar.bz2.asc gcc-4.9.2.tar.bz2.asc \
-	gdb-7.8.2.tar.xz.asc gmp-6.0.0a.tar.xz.asc linux-3.18.14.tar.xz.asc \
-	m4-1.4.17.tar.xz.asc mpc-1.0.3.tar.gz.asc mpfr-3.1.2.tar.xz.asc \
-	musl-1.1.8.tar.gz.asc ncurses-5.9.tar.gz.asc pkgconf-0.8.9.tar.bz2.asc \
-	rotor.tar.gz.asc rotor-db-configure-fix.patch.asc
+	rm -f boost_1_52_0.tar.bz2.asc boost_1_52_0.tar.bz2 \
+	db-4.8.30.tar.gz.asc db-4.8.30.tar.gz \
+	openssl-1.0.1g.tar.gz.asc openssl-1.0.1g.tar.gz \
+	rotor.tar.gz.asc rotor.tar.gz \
+	rotor-db-configure-fix.patch.asc rotor-db-configure-fix.patch

 boost_1_52_0.tar.bz2:
 ifdef ONLINE
@@ -36,14 +21,6 @@
 	$(DECODE_DEED)
 	$(CHECKSUM_OR_DIE)

-buildroot-2015.05.tar.gz:
-ifdef ONLINE
-	curl -s http://deedbot.org/deed-422651-2.txt -o $@.asc
-endif
-	$(VERIFY_DEED_OR_DIE)
-	$(DECODE_DEED)
-	$(CHECKSUM_OR_DIE)
-
 db-4.8.30.tar.gz:
 ifdef ONLINE
 	curl -s http://deedbot.org/deed-422651-3.txt -o $@.asc
@@ -58,118 +35,6 @@
 endif
 	$(VERIFY_DEED_OR_DIE)
 	$(DECODE_DEED)
-	$(CHECKSUM_OR_DIE)
-
-binutils-2.24.tar.bz2:
-ifdef ONLINE
-	curl -s http://deedbot.org/deed-427443-1.txt -o $@.asc
-endif
-	$(VERIFY_DEED_OR_DIE)
-	$(DECODE_DEED)
-	$(CHECKSUM_OR_DIE)
-
-busybox-1.23.2.tar.bz2:
-ifdef ONLINE
-	curl -s http://deedbot.org/deed-427443-2.txt -o $@.asc
-endif
-	$(VERIFY_DEED_OR_DIE)
-	$(DECODE_DEED)
-	$(CHECKSUM_OR_DIE)
-
-expat-2.1.0.tar.gz:
-ifdef ONLINE
-	curl -s http://deedbot.org/deed-427443-3.txt -o $@.asc
-endif
-	$(VERIFY_DEED_OR_DIE)
-	$(DECODE_DEED)
-	$(CHECKSUM_OR_DIE)
-
-fakeroot_1.18.4.orig.tar.bz2:
-ifdef ONLINE
-	curl -s http://deedbot.org/deed-427443-4.txt -o $@.asc
-endif
-	$(VERIFY_DEED_OR_DIE)
-	$(DECODE_DEED)
-	$(CHECKSUM_OR_DIE)
-
-gcc-4.9.2.tar.bz2:
-ifdef ONLINE
-	curl -s http://deedbot.org/deed-427443-5.txt -o $@.asc
-endif
-	$(VERIFY_DEED_OR_DIE)
-	$(DECODE_DEED)
-	$(CHECKSUM_OR_DIE)
-
-gdb-7.8.2.tar.xz:
-ifdef ONLINE
-	curl -s http://deedbot.org/deed-427443-6.txt -o $@.asc
-endif
-	$(VERIFY_DEED_OR_DIE)
-	$(DECODE_DEED)
-	$(CHECKSUM_OR_DIE)
-
-gmp-6.0.0a.tar.xz:
-ifdef ONLINE
-	curl -s http://deedbot.org/deed-427443-7.txt -o $@.asc
-endif
-	$(VERIFY_DEED_OR_DIE)
-	$(DECODE_DEED)
-	$(CHECKSUM_OR_DIE)
-
-linux-3.18.14.tar.xz:
-ifdef ONLINE
-	curl -s http://deedbot.org/deed-427443-8.txt -o $@.asc
-endif
-	$(VERIFY_DEED_OR_DIE)
-	$(DECODE_DEED)
-	$(CHECKSUM_OR_DIE)
-
-m4-1.4.17.tar.xz:
-ifdef ONLINE
-	curl -s http://deedbot.org/deed-427443-9.txt -o $@.asc
-endif
-	$(VERIFY_DEED_OR_DIE)
-	$(DECODE_DEED)
-	$(CHECKSUM_OR_DIE)
-
-mpc-1.0.3.tar.gz:
-ifdef ONLINE
-	curl -s http://deedbot.org/deed-427443-10.txt -o $@.asc
-endif
-	$(VERIFY_DEED_OR_DIE)
-	$(DECODE_DEED)
-	$(CHECKSUM_OR_DIE)
-
-mpfr-3.1.2.tar.xz:
-ifdef ONLINE
-	curl -s http://deedbot.org/deed-427443-11.txt -o $@.asc
-endif
-	$(VERIFY_DEED_OR_DIE)
-	$(DECODE_DEED)
-	$(CHECKSUM_OR_DIE)
-
-musl-1.1.8.tar.gz:
-ifdef ONLINE
-	curl -s http://deedbot.org/deed-427443-12.txt -o $@.asc
-endif
-	$(VERIFY_DEED_OR_DIE)
-	$(DECODE_DEED)
-	$(CHECKSUM_OR_DIE)
-
-ncurses-5.9.tar.gz:
-ifdef ONLINE
-	curl -s http://deedbot.org/deed-427443-13.txt -o $@.asc
-endif
-	$(VERIFY_DEED_OR_DIE)
-	$(DECODE_DEED)
-	$(CHECKSUM_OR_DIE)
-
-pkgconf-0.8.9.tar.bz2:
-ifdef ONLINE
-	curl -s http://deedbot.org/deed-427443-14.txt -o $@.asc
-endif
-	$(VERIFY_DEED_OR_DIE)
-	$(DECODE_DEED)
 	$(CHECKSUM_OR_DIE)

 rotor-db-configure-fix.patch:
diff -uNr a/bitcoin/deps/Manifest.sha512 b/bitcoin/deps/Manifest.sha512
--- a/bitcoin/deps/Manifest.sha512 15a253bba8d7d35ac2f19017ae7350fd8906ad4ec93783d83aca5d07f9d4e0bab5bbaeef0e091276aac7f1cd7c00f64b3edf23c8a74e0ae66273ac99edf1bda2
+++ b/bitcoin/deps/Manifest.sha512 9a04e9d02fb697d6c5a2b45965d09edc14172a3205159899126c8d26effaa0aa8508c665e44f5d3ad3dfd3b4e92a9d58ab3d719185d857700944a811ab8b0675
@@ -1,20 +1,5 @@
-5ec95ad47d49b12c4558a8db0ca2109d3ee1955e3776057f3330c4506f8f4d1cf5e505fbf8a16b98403a0fcdeaaf986fe0a22be6456247dbdace63ce1f776b12  binutils-2.24.tar.bz2
 fc512d3bfa6a39a60fee548775c97239271cf757587b8df7ed739c800844a819a359dca172be0e69ad7752753753139bf11f0813d650066d58386662fe32842d  boost_1_52_0.tar.bz2
-c42fdd39cb2bc46804a86a7d7b2605bd3cd9ddcb365c4e5a1fb147eb02b234fc31a70c8140be2f4d27cd371c84e0c6701f8cb47697dd1c18dd0e0cce784aa07a  buildroot-2015.05.tar.gz
-209c8ef26e40ccb81510f6b663202b080f9bbecac7faf386bbabf7e36a43d63b15dd6ce9f7a84c1ccc5345c524999812251da1e113ef9faadc6af1fedd24c7c9  busybox-1.23.2.tar.bz2
 d1a3c52b0ab54ae3fd6792e6396c9f74d25f36b2eb9e853b67ef9c872508a58c784c7818108d06d184f59601b70cc877916e67dfea6f0ee1ca2b07468c1041f1  db-4.8.30.tar.gz
-2a9ad2b44b87b84087979fe4114d661838df3b03dbdcb74d590cb74096bf35ce9d5a86617b0941a2655ea441a94537bcbcd78252da92342238823be36de2d09d  expat-2.1.0.tar.gz
-497292fe21d18a37eadd657fbe01db8902f4b8d87d63605928efd59789f4c14737997b9f0abc4d794dbef78066b952064bdb2dd9f0910ec75349d7dd313cd058  fakeroot_1.18.4.orig.tar.bz2
-e96cba06d572dbe7f382a2b00fd9297dcf9f9219d46a9ad0bd904dc36d5e7db3335e422640b79a27fed6fde91b0731732b94a0e2fbcd47344d6779f8ba1f4f9c  gcc-4.9.2.tar.bz2
-face5bf1b4ce144fc8604fc84620beed956177a11fd632b4e41906fc7f632910b2b43a50e6cfdfd6cbd876ee527c813bddab8df29dc560a6c36694cdb8edc4e4  gdb-7.8.2.tar.xz
-50368f4368b244b442438ce1768cf0f1166e490d1bafb8feda1ffc90fea3807e7328f30f3faa861799e4f5ff6e3113049ca3231b2f48571e4583fc3d60441816  gmp-6.0.0a.tar.xz
-688a107e7ff2f0d21196fbf809173fee6620ec8e7694188ff38e45a1b16632bca33c617e012726142d8bd80307fc05207badfb115df95df05ee0734d5569a9cb  linux-3.18.14.tar.xz
-406e6e97c3f5c5f3c8055bac748d4fe8c2e861d97e84ab6d840a2caa7df04f523cc662d6d51f6afae7d6c219d03693c7ae0c1e669a80246a3ceb5e8342b82389  m4-1.4.17.tar.xz
-0028b76df130720c1fad7de937a0d041224806ce5ef76589f19c7b49d956071a683e2f20d154c192a231e69756b19e48208f2889b0c13950ceb7b3cfaf059a43  mpc-1.0.3.tar.gz
-8d594206afb2637ed39ad564d42c8c4d02b042b95925f5c6ec891e5cb87f7155195559c7ff477256a088ecaaa3c2b0d35a9d11a74ed526a1080d49b2950e5587  mpfr-3.1.2.tar.xz
-de2f0b03fd199e2ceb9937686d1092838744dccaddb3916f9baef9cdd2621624fb3c4af2206a3366d12852d84ccc8b0b68350f9d06a9e2bcdbc0309dc05383ff  musl-1.1.8.tar.gz
-d7c5e54b6d4d8b9211f0006ca8786f7609d180cc1aaebf4f25e7e35e12959779cf66447359a602daed625621ca32b0d910d67aef3eb8b6fdc3c373819a88faa1  ncurses-5.9.tar.gz
 66ebbad3c8ad98a07b486d39d0c3ae62b00133f8f2877cf8b97c461e7c7f40b29cf9c3cae82cf73a92dcf1daa63d33aa76c910fbcbe60158589fc7cb48f41e6d  openssl-1.0.1g.tar.gz
-3acb571412dedc2587203ed05537ce3adbaa64f2fab4f561da9824917c15e2ea771db7525f9a026261086f4ae196c3a5183e1bb3d33e14fdd779fbe74e6215c3  pkgconf-0.8.9.tar.bz2
 e232c07238feb16ce055211fba68ed283c47753a8716681ac47c869c21936f48768fafaac678f64ee17cf2b62b669a0d2c481008b5ccaf76007f66501a02990d  rotor.tar.gz
 2c1152a88dd6d8e4b0f736dbf0ce2691c66fc592c1ef6c332a976ae7e9ca86850091032d23042558e3eabc0dc2b591f482566ef433606fb91a06dee9a0485063  rotor-db-configure-fix.patch

2019/04/26

Building Musltronic GNAT: Part 2

Filed under: Cuntoo, GNAT, Keccak — mod6 @ 21:57

I recently made a post about building a musltronic GNAT for Cuntoo. Today, I wanted to write about my success with building ave1's latest version 2018-09-24, as I said I would in the previous post.

I took the same basic steps that I took with the previous version, detailed in the previous post. What follows is my log of the building of the 2018-09-24 version, as well as some testing steps on the Cuntoo target machine:

mod6@gentoo-lappy ~/AVE1_GNAT $ gpg --verify ada-musl-cross-2018-09-24.txt
gpg: Signature made Mon Sep 24 05:12:01 2018 CDT using RSA key ID 77BC59F9
gpg: Good signature from "ave--"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 57EE 94EA 6F20 49A4 7DAF  A856 8F4C E8F7 77BC 59F9
mod6@gentoo-lappy ~/AVE1_GNAT $ su
gentoo-lappy AVE1_GNAT # tar -xf ada-musl-cross-2018-09-24.tgz
gentoo-lappy AVE1_GNAT # cd ada-musl-cross-2018-09-24
gentoo-lappy AVE1_GNAT # gnat --version
GNAT GPL 2016 (20160515-49)
Copyright (C) 1996-2016, Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

gentoo-lappy AVE1_GNAT # cd ada-musl-cross-2018-09-24
gentoo-lappy ada-musl-cross-2018-09-24 # mkdir bin
gentoo-lappy ada-musl-cross-2018-09-24 # ls -al
total 92
drwx------ 7  902 users 4096 Apr 21 14:49 .
drwxr-xr-x 6 mod6 mod6  4096 Apr 21 14:49 ..
-rw------- 1  902 users 4354 Sep 24  2018 README.md
drwxr-xr-x 2 root root  4096 Apr 21 14:49 bin
-rwx------ 1  902 users  186 Sep 24  2018 build-ada-arm64.sh
-rwx------ 1  902 users  187 Sep 24  2018 build-ada.sh
-rwx------ 1  902 users 2764 Sep 24  2018 build-native.sh
-rwx------ 1  902 users 4512 Sep 24  2018 build.sh
-rwx------ 1  902 users  125 Sep 24  2018 clean.sh
-rw------- 1  902 users  448 Sep 24  2018 config-static.sh
-rw------- 1  902 users  762 Sep 24  2018 config.sh
-rw------- 1  902 users 8931 Sep 24  2018 defs.sh
-rwx------ 1  902 users 2018 Sep 24  2018 download-adacore-2015.sh
-rwx------ 1  902 users 2685 Sep 24  2018 download-adacore-2016.sh
drwx------ 2  902 users 4096 Sep 24  2018 extra
-rw------- 1  902 users   41 Sep 24  2018 extraconfig.sh
drwx------ 2  902 users 4096 Sep 24  2018 hashes
drwx------ 2  902 users 4096 Sep 24  2018 patches
drwx------ 2  902 users 4096 Sep 24  2018 tarballs

gentoo-lappy ada-musl-cross-2018-09-24 # vim ~/.bashrc
gentoo-lappy ada-musl-cross-2018-09-24 # tail -1 /root/.bashrc
PATH="/home/mod6/AVE1_GNAT/ada-musl-cross-2018-09-24/bin/x86_64-linux-musl/bin/:$PATH"; export PATH
gentoo-lappy ada-musl-cross-2018-09-24 # source ~/.bashrc
gentoo-lappy ada-musl-cross-2018-09-24 # echo $PATH
/home/mod6/AVE1_GNAT/ada-musl-cross-2018-09-24/bin/x86_64-linux-musl/bin/:/usr/gnat/bin:/sbin:/bin:/usr/sbin:/usr/bin
gentoo-lappy ada-musl-cross-2018-09-24 # export MAKEOPTS=-j4
gentoo-lappy ada-musl-cross-2018-09-24 # echo $MAKEOPTS
-j4

gentoo-lappy ada-musl-cross-2018-09-24 # nohup ./build-ada.sh /home/mod6/AVE1_GNAT/ada-musl-cross-2018-09-24/bin &

... Some hours later ...

gentoo-lappy ada-musl-cross-2018-09-24 # cd bin
gentoo-lappy bin # pwd
/home/mod6/AVE1_GNAT/ada-musl-cross-2018-09-24/bin
gentoo-lappy bin # ls -al
total 837704
drwxr-xr-x  7 root root       4096 Apr 21 20:05 .
drwx------ 12  902 users      4096 Apr 21 14:58 ..
drwxr-xr-x  8 root root       4096 Apr 21 17:52 aarch64-linux-musl
drwxr-xr-x  9 root root       4096 Apr 21 20:07 aarch64-linux-musl-native
drwxr-xr-x  8 root root       4096 Apr 21 15:41 bootstrap
-rw-r--r--  1 root root  277760306 Apr 21 20:07 muslaarch64-linux-musl-nativeada.tar.gz
-rw-r--r--  1 root root  135554542 Apr 21 17:52 muslaarch64-linux-muslada.tar.gz
-rw-r--r--  1 root root  298885391 Apr 21 19:00 muslx86_64-linux-musl-nativeada.tar.gz
-rw-r--r--  1 root root  145566406 Apr 21 16:50 muslx86_64-linux-muslada.tar.gz
drwxr-xr-x  8 root root       4096 Apr 21 16:50 x86_64-linux-musl
drwxr-xr-x  8 root root       4096 Apr 21 19:00 x86_64-linux-musl-native
gentoo-lappy bin # sha512sum musl*.tar.gz
97115def5223707837ab83ec661d6f418ef8e4c54cb0a729559011d4b18f1f516cb74ec4a2f4a86a388cfcabadaa542b6fc4cf56521478b089ebe342a4a14765  muslaarch64-linux-musl-nativeada.tar.gz
98c8185f4a38c1db8069915f704cfafabf929a935245b49d3598783106fce3af7fca7e0dee5643bc08ddd2d6f92c31368cfc2e39657cfcd771f281aa031eae91  muslaarch64-linux-muslada.tar.gz
f56931c10a5d49ab779cf3a3b034d5080bb45c1210ae44198900ed16c61391da98aafe1959b65155c1cf3c32899f8320d0b336ad865bba3945f3621728e15b12  muslx86_64-linux-musl-nativeada.tar.gz
04f5506532b512f856a922278a0227eaca52abe30e5ffe0a3f47ab48b3aa5112f12b155878eff2c7c59f89f768f49431249209037ad057cc6f1b45728d45a963  muslx86_64-linux-muslada.tar.gz
gentoo-lappy bin #

# I then copied up these two tarballs to my cuntoo-test1 machine:
muslx86_64-linux-musl-nativeada.tar.gz
muslx86_64-linux-muslada.tar.gz

# I then created a directory for ave1's 2018-09-24 version:
cuntoo-test1 /opt # mkdir 20180924
cuntoo-test1 /opt # cd 20180924
cuntoo-test1 /opt/20180924 # cp /home/mod6/AVE1_GNAT/20180924/muslx86_64-linux-musl-nativeada.tar.gz .
cuntoo-test1 /opt/20180924 # tar -xf muslx86_64-linux-musl-nativeada.tar.gz
cuntoo-test1 /opt/20180924 # ls
muslx86_64-linux-musl-nativeada.tar.gz  x86_64-linux-musl-native

Back to a regular mod6 shell...

mod6@cuntoo-test1 ~ $ source ~/.bashrc
mod6@cuntoo-test1 ~ $ tail -1 ~/.bashrc
export PATH="$PATH:/opt/20180924/x86_64-linux-musl-native/bin"
mod6@cuntoo-test1 ~ $ echo $PATH
/usr/gnat/bin:/usr/x86_64-gentoo-linux-musl/gcc-bin/4.9.4:/usr/local/bin:/usr/bin:/bin:/opt/bin:/opt/20180924/x86_64-linux-musl-native/bin
mod6@cuntoo-test1 ~ $ command -v gnat
/opt/20180924/x86_64-linux-musl-native/bin/gnat
mod6@cuntoo-test1 ~ $ gnat --version
GNAT GPL 2016 (20160515)
Copyright (C) 1996-2016, Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

mod6@cuntoo-test1 ~ $ command -v gnat
/opt/20180924/x86_64-linux-musl-native/bin/gnat
mod6@cuntoo-test1 ~ $ /opt/20180924/x86_64-linux-musl-native/bin/gnat --version
GNAT GPL 2016 (20160515)
Copyright (C) 1996-2016, Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

mod6@cuntoo-test1 ~ $
mod6@cuntoo-test1 ~/test-ave1gnat-20180924 $ curl -sL "http://ossasepia.com/vpatches/starter_v.zip" -O
mod6@cuntoo-test1 ~/test-ave1gnat-20180924 $ curl -sL "http://ossasepia.com/vpatches/starter_v.zip.diana_coman.sig" -O
mod6@cuntoo-test1 ~/test-ave1gnat-20180924 $ gpg --import ../diana_coman.asc
gpg: key 390F999E: "Diana Coman " not changed
gpg: Total number processed: 1
gpg:              unchanged: 1
mod6@cuntoo-test1 ~/test-ave1gnat-20180924 $ gpg --verify starter_v.zip.diana_coman.sig starter_v.zip
gpg: Signature made Wed Nov 14 10:39:50 2018 UTC using RSA key ID 390F999E
gpg: Good signature from "Diana Coman "
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: E72D CCB7 3A5E 0669 4C5C  D781 D519 6EE6 390F 999E
mod6@cuntoo-test1 ~/test-ave1gnat-20180924 $ unzip starter_v.zip                                                                                                                                                    [3/76]
Archive:  starter_v.zip
   creating: starter_v/
  inflating: starter_v/clean.sh
  inflating: starter_v/build.sh
   creating: starter_v/vtools/
  inflating: starter_v/vtools/vdiff.gpr
  inflating: starter_v/vtools/vpatch.gpr
  inflating: starter_v/vtools/Makefile
  inflating: starter_v/vtools/ksum.gpr
  inflating: starter_v/vtools/manifest
   creating: starter_v/v/
  inflating: starter_v/v/v.pl
  inflating: starter_v/v/v_quick_start.txt
  inflating: starter_v/v/manifest
   creating: starter_v/vtools/src/
  inflating: starter_v/vtools/src/bits.ads
  inflating: starter_v/vtools/src/keccak_c.adb
  inflating: starter_v/vtools/src/vpatch.adb
  inflating: starter_v/vtools/src/dir.c
  inflating: starter_v/vtools/src/util.c
  inflating: starter_v/vtools/src/keccak.h
  inflating: starter_v/vtools/src/diff.h
  inflating: starter_v/vtools/src/bits.adb
  inflating: starter_v/vtools/src/character_io.ads
  inflating: starter_v/vtools/src/context.c
  inflating: starter_v/vtools/src/smg_keccak.adb
  inflating: starter_v/vtools/src/character_io.adb
  inflating: starter_v/vtools/src/ksum.adb
  inflating: starter_v/vtools/src/analyze.c
  inflating: starter_v/vtools/src/keccak_c.ads
  inflating: starter_v/vtools/src/io.c
  inflating: starter_v/vtools/src/diff.c
  inflating: starter_v/vtools/src/smg_keccak.ads
  inflating: starter_v/vtools/src/system.h
   creating: starter_v/vtools/lib/
  inflating: starter_v/vtools/lib/hash.c
  inflating: starter_v/vtools/lib/cmpbuf.c
  inflating: starter_v/vtools/lib/progname.c
  inflating: starter_v/vtools/lib/filetype.h
  inflating: starter_v/vtools/lib/xalloc.c
  inflating: starter_v/vtools/lib/dirname.h
  inflating: starter_v/vtools/lib/filetype.c
  inflating: starter_v/vtools/lib/progname.h
  inflating: starter_v/vtools/lib/cmpbuf.h
  inflating: starter_v/vtools/lib/error.h
  inflating: starter_v/vtools/lib/error.c
  inflating: starter_v/vtools/lib/filenamecat.c
  inflating: starter_v/vtools/lib/dirname.c
  inflating: starter_v/vtools/lib/diffseq.h
  inflating: starter_v/vtools/lib/hash.h
  inflating: starter_v/vtools/lib/filenamecat.h
  inflating: starter_v/vtools/lib/xalloc.h
   creating: starter_v/vtools/obj/
 extracting: starter_v/vtools/obj/readme
mod6@cuntoo-test1 ~/test-ave1gnat-20180924 $ cd starter_v
mod6@cuntoo-test1 ~/test-ave1gnat-20180924/starter_v $ chmod +x build.sh
mod6@cuntoo-test1 ~/test-ave1gnat-20180924/starter_v $ ./build.sh
Compile
   [C]            diff.c
   [C]            filetype.c
   [C]            error.c
   [C]            cmpbuf.c
   [C]            progname.c
   [C]            dirname.c
   [C]            hash.c
   [C]            filenamecat.c
   [C]            xalloc.c
   [C]            dir.c
   [C]            io.c
   [C]            util.c
   [C]            context.c
   [C]            analyze.c
   [Ada]          bits.adb
   [Ada]          ksum.adb
   [Ada]          character_io.adb
   [Ada]          keccak_c.adb
   [Ada]          smg_keccak.adb
Bind
   [gprbind]      diff.bexch
   [Ada]          bits.ali -n
Link
   [archive]      libvdiff.a
   [index]        libvdiff.a
   [link]         diff.c
Compile
   [Ada]          vpatch.adb
Bind
   [gprbind]      vpatch.bexch
   [Ada]          vpatch.ali
Link
   [link]         vpatch.adb
Bind
   [gprbind]      ksum.bexch
   [Ada]          ksum.ali
Link
   [link]         ksum.adb
Done.

mod6@cuntoo-test1 ~/test-ave1gnat-20180924/starter_v $ cd ..
mod6@cuntoo-test1 ~/test-ave1gnat-20180924 $ cp ../ffa/ffa-keccak.tar.gz .
mod6@cuntoo-test1 ~/test-ave1gnat-20180924 $ mkdir ffa
mod6@cuntoo-test1 ~/test-ave1gnat-20180924 $ mv ffa-keccak.tar.gz ffa
mod6@cuntoo-test1 ~/test-ave1gnat-20180924 $ cd ffa/
mod6@cuntoo-test1 ~/test-ave1gnat-20180924/ffa $ tar -xf ffa-keccak.tar.gz
mod6@cuntoo-test1 ~/test-ave1gnat-20180924/ffa $ mkdir -p .wot patches .seals
mod6@cuntoo-test1 ~/test-ave1gnat-20180924/ffa $ mv keccak/*.sig .seals/
mod6@cuntoo-test1 ~/test-ave1gnat-20180924/ffa $ mv keccak/*.vpatch patches/
mod6@cuntoo-test1 ~/test-ave1gnat-20180924/ffa $ cp ../starter_v/vk.pl .
mod6@cuntoo-test1 ~/test-ave1gnat-20180924/ffa $ ./vk.pl w
asciilifeform:17215D118B7239507FAFED98B98228A001ABFFC7:Stanislav Datskovskiy 
mod6@cuntoo-test1 ~/test-ave1gnat-20180924/ffa $ ./vk.pl f
ffa_ch1_genesis.kv.vpatch (asciilifeform)
ffa_ch2_logicals.kv.vpatch (asciilifeform)
ffa_ch3_shifts.kv.vpatch (asciilifeform)
ffa_ch4_ffacalc.kv.vpatch (asciilifeform)
ffa_ch5_egypt.kv.vpatch (asciilifeform)
ffa_ch6_simplest_rsa.kv.vpatch (asciilifeform)
ffa_ch7_turbo_egyptians.kv.vpatch (asciilifeform)
ffa_ch8_randomism.kv.vpatch (asciilifeform)
ffa_ch9_exodus.kv.vpatch (asciilifeform)
ffa_ch10_karatsuba.kv.vpatch (asciilifeform)
ffa_ch11_tuning_and_api.kv.vpatch (asciilifeform)
ffa_ch12_karatsuba_redux.kv.vpatch (asciilifeform)
ffa_w_borrow_expr.kv.vpatch (asciilifeform)
ffa_ch13_measure_and_qshifts.kv.vpatch (asciilifeform)
ffa_ch14_barrett.kv.vpatch (asciilifeform)
ffa_ch15_gcd.kv.vpatch (asciilifeform)
ffa_ch16_miller_rabin.kv.vpatch (asciilifeform)
ffa_ch17_peh.kv.vpatch (asciilifeform)
ffa_ch18_subroutines.kv.vpatch (asciilifeform)
mod6@cuntoo-test1 ~/test-ave1gnat-20180924/ffa $ ./vk.pl p v ch1 ffa_ch1_genesis.kv.vpatch
ffa_ch1_genesis.kv.vpatch
  creating ffa/README
  creating ffa/ffademo/README
  creating ffa/ffademo/bin/README
  creating ffa/ffademo/demo_ch1.adb
  creating ffa/ffademo/demo_ch1.ads
  creating ffa/ffademo/ffa_demo.adb
  creating ffa/ffademo/ffa_demo.gpr
  creating ffa/ffademo/ffa_io.adb
  creating ffa/ffademo/ffa_io.ads
  creating ffa/ffademo/obj/README
  creating ffa/libffa/README
  creating ffa/libffa/ffa.gpr
  creating ffa/libffa/fz_arith.adb
  creating ffa/libffa/fz_arith.ads
  creating ffa/libffa/fz_type.ads
  creating ffa/libffa/iron.ads
  creating ffa/libffa/lib/README
  creating ffa/libffa/obj/README
  creating ffa/libffa/restrict.adc
  creating ffa/libffa/w_shifts.ads
  creating ffa/libffa/word_ops.adb
  creating ffa/libffa/word_ops.ads
  creating ffa/libffa/words.ads

mod6@cuntoo-test1 ~/test-ave1gnat-20180924/ffa $ cd ch1/ffa/ffademo/
mod6@cuntoo-test1 ~/test-ave1gnat-20180924/ffa/ch1/ffa/ffademo $ gprbuild
using project file ffa_demo.gpr
Compile
   [Ada]          ffa_demo.adb
   [Ada]          iron.ads
   [Ada]          word_ops.adb
   [Ada]          w_shifts.ads
   [Ada]          fz_arith.adb
   [Ada]          words.ads
   [Ada]          fz_type.ads
   [Ada]          demo_ch1.adb
   [Ada]          ffa_io.adb
Build Libraries
   [gprlib]       FFA.lexch
   [archive]      libFFA.a
   [index]        libFFA.a
Bind
   [gprbind]      ffa_demo.bexch
   [Ada]          ffa_demo.ali
Link
   [link]         ffa_demo.adb
mod6@cuntoo-test1 ~/test-ave1gnat-20180924/ffa/ch1/ffa/ffademo $ bin/ffa_demo
X         =
0000000000000000000000000000000000000000000000000000000000000000
Y         =
0000000000000000000000000000000000000000000000000000000000005555
X + Y     =
0000000000000000000000000000000000000000000000000000000000005555
C         =  0
X - Y     =
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAB
C         =  1
mod6@cuntoo-test1 ~/test-ave1gnat-20180924/ffa/ch1/ffa/ffademo $
Older Posts »

Powered by WordPress