Skip to content

Commit

Permalink
Merge branch 'master' into gettotalsupply
Browse files Browse the repository at this point in the history
  • Loading branch information
levonpetrosyan93 committed Dec 2, 2024
2 parents be2deaa + 6da96d8 commit b9ef752
Show file tree
Hide file tree
Showing 163 changed files with 10,217 additions and 5,002 deletions.
43 changes: 26 additions & 17 deletions .github/workflows/ci-master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
- 'doc/**'
- '**/README.md'
branches:
- master
- '**'
pull_request:
paths-ignore:
- 'doc/**'
Expand All @@ -14,15 +14,14 @@ on:
- master
env:
SOURCE_ARTIFACT: source
SOURCE_ARTIFACT_DIR: source
jobs:
create-source-distribution:
name: Create Source Distribution
runs-on: ubuntu-latest
env:
ARTIFACT_DIR: source
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Install Required Packages
run: |
sudo apt-get update
Expand All @@ -38,13 +37,13 @@ jobs:
run: tar -czf depends.tar.gz depends
- name: Prepare Files for Artifact
run: |
mkdir -p $ARTIFACT_DIR
mv depends.tar.gz firo-*.tar.gz $ARTIFACT_DIR
mkdir -p $SOURCE_ARTIFACT_DIR
mv depends.tar.gz firo-*.tar.gz $SOURCE_ARTIFACT_DIR
- name: Upload Artifact
uses: actions/upload-artifact@v1
uses: actions/upload-artifact@v4
with:
name: ${{ env.SOURCE_ARTIFACT }}
path: ${{ env.ARTIFACT_DIR }}
path: ${{ env.SOURCE_ARTIFACT_DIR }}
build-linux:
name: Build for Linux
needs: create-source-distribution
Expand All @@ -54,9 +53,10 @@ jobs:
TEST_LOG_ARTIFACT_DIR: test-logs
steps:
- name: Getting Source
uses: actions/download-artifact@v1
uses: actions/download-artifact@v4
with:
name: ${{ env.SOURCE_ARTIFACT }}
path: ${{ env.SOURCE_ARTIFACT_DIR }}
- name: Extract Archives
run: |
tar -xzf depends.tar.gz
Expand Down Expand Up @@ -87,7 +87,7 @@ jobs:
mkdir -p $ARTIFACT_DIR
mv $SOURCE_ARTIFACT/src/{firo-cli,firo-tx,firod,qt/firo-qt} $ARTIFACT_DIR
- name: Upload Artifact
uses: actions/upload-artifact@v1
uses: actions/upload-artifact@v4
with:
name: linux-binaries
path: ${{ env.ARTIFACT_DIR }}
Expand All @@ -108,7 +108,7 @@ jobs:
fi
- name: Upload Test Logs Artifact
if: failure()
uses: actions/upload-artifact@v1
uses: actions/upload-artifact@v4
with:
name: test-logs
path: ${{ env.TEST_LOG_ARTIFACT_DIR }}
Expand All @@ -120,9 +120,10 @@ jobs:
ARTIFACT_DIR: windows-binaries
steps:
- name: Getting Source
uses: actions/download-artifact@v1
uses: actions/download-artifact@v4
with:
name: ${{ env.SOURCE_ARTIFACT }}
path: ${{ env.SOURCE_ARTIFACT_DIR }}
- name: Extract Archives
run: |
tar -xzf depends.tar.gz
Expand All @@ -149,7 +150,7 @@ jobs:
mkdir -p $ARTIFACT_DIR
mv $SOURCE_ARTIFACT/src/{firo-cli.exe,firo-tx.exe,firod.exe,qt/firo-qt.exe} $ARTIFACT_DIR
- name: Upload Artifact
uses: actions/upload-artifact@v1
uses: actions/upload-artifact@v4
with:
name: windows-binaries
path: ${{ env.ARTIFACT_DIR }}
Expand All @@ -161,9 +162,10 @@ jobs:
ARTIFACT_DIR: mac-binaries
steps:
- name: Getting Source
uses: actions/download-artifact@v1
uses: actions/download-artifact@v4
with:
name: ${{ env.SOURCE_ARTIFACT }}
path: ${{ env.SOURCE_ARTIFACT_DIR }}
- name: Extract Archives
run: |
tar -xzf depends.tar.gz
Expand All @@ -172,7 +174,14 @@ jobs:
- name: Use Xcode instead of Command Line Tools
run: sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
- name: Install Required Packages
run: brew install automake coreutils pkg-config
run: |
if ! command -v pkg-config &> /dev/null; then
echo "pkg-config not found, installing..."
brew install pkg-config
else
echo "pkg-config is already installed"
fi
brew install automake coreutils python-setuptools
# Workaround for macOS: https://github.com/actions/runner/issues/2958
- name: Install setuptools
run: sudo -H pip install setuptools
Expand All @@ -181,15 +190,15 @@ jobs:
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Build Firo
run: |
./configure --disable-jni --prefix=$(grealpath depends/x86_64-apple-darwin*)
./configure --prefix=`pwd`/depends/`depends/config.guess`
make -j$(sysctl -n hw.activecpu)
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Prepare Files for Artifact
run: |
mkdir -p $ARTIFACT_DIR
mv $SOURCE_ARTIFACT/src/{firo-cli,firo-tx,firod,qt/firo-qt} $ARTIFACT_DIR
- name: Upload Artifact
uses: actions/upload-artifact@v1
uses: actions/upload-artifact@v4
with:
name: mac-binaries
path: ${{ env.ARTIFACT_DIR }}
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,13 @@ Bootstrappable builds can [be achieved with Guix.](contrib/guix/README.md)

```sh
sudo apt-get update
sudo apt-get install git curl python build-essential libtool automake pkg-config cmake
sudo apt-get install python; sudo apt-get install git curl build-essential libtool automake pkg-config cmake
# Also needed for GUI wallet only:
sudo apt-get install qttools5-dev qttools5-dev-tools libxcb-xkb-dev bison
```

If you use a later version of Ubuntu, you may need to replace `python` with `python3`.

- Redhat/Fedora:

```sh
Expand Down
4 changes: 2 additions & 2 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 0)
define(_CLIENT_VERSION_MINOR, 14)
define(_CLIENT_VERSION_REVISION, 13)
define(_CLIENT_VERSION_BUILD, 2)
define(_CLIENT_VERSION_REVISION, 14)
define(_CLIENT_VERSION_BUILD, 0)
define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2024)
define(_COPYRIGHT_HOLDERS,[The %s developers])
Expand Down
136 changes: 87 additions & 49 deletions doc/build-macos.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,56 +3,92 @@ macOS Build Instructions and Notes
The commands in this guide should be executed in a Terminal application.
The built-in one is located in `/Applications/Utilities/Terminal.app`.

Preparation
-----------
Install the macOS command line tools:

`xcode-select --install`

When the popup appears, click `Install`.

Then install [Homebrew](http://brew.sh).

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

brew install automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python qt libevent qrencode

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

brew install librsvg
Berkley DB
------------------------
## Preparation
1. Install macOS Command Line Tools (if not already installed):
```bash
xcode-select --install
```
When the popup appears, click `Install`.


2. Install Homebrew (if not already installed):
```bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```


## Dependencies
Install the required dependencies using Homebrew:
```bash
brew install automake berkeley-db4 libtool boost miniupnpc openssl protobuf python qt libevent qrencode python-setuptools m4
```

In case you want to build the disk image with `make deploy` (.dmg / optional), you need RSVG:
```bash
brew install librsvg
```

### Ensure `m4` is Found
After installing `m4`, it is important to note that `m4` is a `keg-only` formula in Homebrew. This means it is not symlinked into `/usr/local` by default. To make sure `m4` is available in your PATH, you'll need to link it manually with the `--force` flag:
```bash
brew link m4 --force
```

You can verify that `m4` is properly linked and available by running:
```bash
which m4
```
This should output the path to the `m4` binary, typically `/opt/homebrew/bin/m4` on Apple Silicon Macs. If you do not use the `--force` flag, `which m4` will likely output `/usr/bin/m4`, which is the system version and not the one installed via Homebrew.

### Troubleshooting `m4` Issues
If `m4` is not found even after installation and linking with `--force`, you may need to install Xcode to ensure that `m4` is recognized:

1. Install Xcode from the Mac App Store.
2. Once installed, open Xcode at least once to complete the setup.

#### Berkeley DB
It is recommended to use Berkeley DB 4.8. If you have to build it yourself, you can use [the installation script included in contrib/](https://github.com/bitcoin/bitcoin/blob/master/contrib/install_db4.sh) like so:
./contrib/install_db4.sh .

```bash
./contrib/install_db4.sh
```
from the root of the repository.

Note: You only need Berkeley DB if the wallet is enabled (see Disable-wallet mode).


Build Firo Core
------------------------
1. Build Firo-core:

Configure and build the headless Firo binaries as well as the GUI (if Qt is found).

In case you want to build the disk image with `make deploy` (.dmg / optional), by passing `--with-gui` to configure.

You can disable the GUI build by passing `--without-gui` to configure.

./autogen.sh
./configure
make

2. It is recommended to build and run the unit tests:

` make check`
*Note*: You only need Berkeley DB if the wallet is enabled (see Disable-wallet mode).

## Build Instructions

#### Download the Source
Before building, download the Firo source code:
```bash
git clone https://github.com/firoorg/firo
cd firo
```

#### Build Firo Core
1. **Prepare the build environment**:
```bash
cd depends
make
cd ..
```

2. **Configure and build Firo-core**:
```bash
./autogen.sh
./configure --prefix=`pwd`/depends/`depends/config.guess`
make
```

3. (optional) **It is recommended to build and run the unit tests**:
```bash
./configure --prefix=`pwd`/depends/`depends/config.guess` --enable-tests
make check
```
3. You can also create a .dmg that contains the .app bundle (optional):

` make deploy`
4. (optional) **You can also create a .dmg that contains the .app bundle**:
```bash
make deploy
```


Running
Expand Down Expand Up @@ -86,7 +122,10 @@ Download and install the community edition of [Qt Creator](https://www.qt.io/dow
Uncheck everything except Qt Creator during the installation process.
1. Make sure you installed everything through Homebrew mentioned above
2. Do a proper `./configure --enable-debug`
2. Properly configure the build environment:
```bash
./configure --prefix=`pwd`/depends/`depends/config.guess` --enable-debug
```
3. In Qt Creator do "New Project" -> Import Project -> Import Existing Project
4. Enter "bitcoin-qt" as project name, enter `src/qt` as location
5. Leave the file selection as it is
Expand All @@ -99,7 +138,6 @@ Uncheck everything except Qt Creator during the installation process.
Notes
-----
* Tested on macOS 10.11 through 10.14 on 64-bit Intel processors only.
* Tested on macOS 10.11 through 10.14 on 64-bit Intel processors, and on macOS 14.5 on an M2 chip.
* Building with downloaded Qt binaries is not officially supported. See the notes in [#7714](https://github.com/bitcoin/bitcoin/issues/7714)

2 changes: 1 addition & 1 deletion doc/build-osx.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Then install [Homebrew](https://brew.sh).
Dependencies
----------------------

brew install automake berkeley-db4 libtool boost --c++11 miniupnpc openssl pkg-config protobuf qt libevent
brew install automake berkeley-db4 libtool boost --c++11 miniupnpc openssl protobuf qt libevent

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

Expand Down
Loading

0 comments on commit b9ef752

Please sign in to comment.