Implement standalone Makefiles for most of the bins and rework main Makefile.

This commit is contained in:
parazyd
2023-08-29 10:42:20 +02:00
parent 39e9d77e67
commit 41bf60570a
21 changed files with 394 additions and 74 deletions

View File

@@ -41,7 +41,7 @@ jobs:
- name: Compile all bins
run: |
./contrib/compile_all_bins.sh
make
feature-powerset:
name: Test crate feature powerset on ${{ matrix.os }}

7
Cargo.lock generated
View File

@@ -3426,14 +3426,13 @@ checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389"
[[package]]
name = "nix"
version = "0.26.2"
version = "0.26.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a"
checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b"
dependencies = [
"bitflags 1.3.2",
"cfg-if",
"libc",
"static_assertions",
]
[[package]]
@@ -6570,8 +6569,8 @@ checksum = "d92ccd67fb88503048c01b59152a04effd0782d035a83a6d256ce6085f08f4a3"
name = "vanityaddr"
version = "0.4.1"
dependencies = [
"arg",
"bs58",
"clap 4.3.24",
"ctrlc",
"darkfi",
"darkfi-sdk",

View File

@@ -135,6 +135,10 @@ p2p-transport-tcp = []
p2p-transport-tor = ["arti-client", "tor-hscrypto"]
p2p-transport-nym = []
async-serial = [
"darkfi-serial/async"
]
async-runtime = [
"async-trait",
"futures",
@@ -202,6 +206,7 @@ net = [
"darkfi-serial",
"darkfi-serial/async",
"darkfi-serial/url",
"async-serial",
"system",
"util",
@@ -242,7 +247,7 @@ util = [
"tinyjson",
"toml",
"darkfi-serial/async",
"darkfi-serial",
]
wallet = [

116
Makefile
View File

@@ -12,27 +12,23 @@ CARGO = cargo +nightly
#TARGET_PRFX = --target=
# Binaries to be built
BINS = darkfid faucetd darkirc vanityaddr tau taud
# zkas dependencies
ZKASDEPS = \
Cargo.toml \
bin/zkas/Cargo.toml \
$(shell find src/zkas -type f) \
$(shell find src/serial -type f) \
$(shell find bin/zkas/src -type f)
BINS = \
zkas \
darkfid \
darkfid2 \
faucetd \
darkirc \
genev \
genevd \
lilith \
tau \
taud \
vanityaddr
# ZK proofs to compile with zkas
PROOFS_SRC = $(shell find proof -type f -name '*.zk') example/simple.zk
PROOFS_BIN = $(PROOFS_SRC:=.bin)
# Common dependencies which should force the binaries to be rebuilt
BINDEPS = \
Cargo.toml \
$(shell find bin/*/src -type f) \
$(shell find bin -type f -name '*.toml') \
$(shell find src -type f) \
all: $(BINS)
zkas:
@@ -47,58 +43,88 @@ contracts: zkas
$(MAKE) -C src/contract/consensus
$(MAKE) -C src/contract/deployooor
$(BINS): contracts $(PROOFS_BIN) $(BINDEPS)
$(CARGO) build $(TARGET_PRFX)$(RUST_TARGET) --all-features --release --package $@
cp -f target/$(RUST_TARGET)/release/$@ $@
darkfid: $(PROOFS_BIN) contracts
$(MAKE) -C bin/darkfid
check: contracts $(PROOFS_BIN)
$(CARGO) hack check --release --feature-powerset --all
darkfid2: contracts
$(MAKE) -C bin/darkfid2
fix: contracts $(PROOFS_BIN)
$(CARGO) clippy --release --all-features --fix --allow-dirty --all
faucetd: contracts
$(MAKE) -C bin/faucetd
darkirc:
$(MAKE) -C bin/darkirc
genev:
$(MAKE) -C bin/genev/genev-cli
genevd:
$(MAKE) -C bin/genev/genevd
lilith:
$(MAKE) -C bin/lilith
tau:
$(MAKE) -C bin/tau/tau-cli
taud:
$(MAKE) -C bin/tau/taud
vanityaddr:
$(MAKE) -C bin/vanityaddr
fmt:
$(CARGO) fmt
clippy: contracts $(PROOFS_BIN)
$(CARGO) clippy --release --all-features --all
check: $(PROOFS_BIN) contracts
$(CARGO) hack check --release --feature-powerset --all
rustdoc: contracts $(PROOFS_BIN)
clippy: $(PROOFS_BIN) contracts
$(CARGO) clippy --release --all-features --all --tests
fix: $(PROOFS_BIN) contracts
$(CARGO) clippy --release --all-features --fix --allow-dirty --all
rustdoc: $(PROOFS_BIN) contracts
$(CARGO) doc --release --all-features --workspace --document-private-items --no-deps
test: $(PROOFS_BIN) contracts
$(CARGO) test --release --all-features --all
test-no-run: $(PROOFS_BIN) contracts
$(CARGO) test --release --all-features --all --no-run
coverage: contracts $(PROOFS_BIN)
coverage: $(PROOFS_BIN) contracts
$(CARGO) llvm-cov --release --all-features --workspace --html
cleanbin:
rm -f $(BINS)
clean:
$(MAKE) -C src/contract/money clean
$(MAKE) -C src/contract/dao clean
$(MAKE) -C src/contract/consensus clean
$(MAKE) -C src/contract/deployooor clean
$(MAKE) -C bin/zkas clean
$(MAKE) -C bin/darkfid clean
$(MAKE) -C bin/darkfid2 clean
$(MAKE) -C bin/faucetd clean
$(MAKE) -C bin/darkirc clean
$(MAKE) -C bin/genev/genev-cli clean
$(MAKE) -C bin/genev/genevd clean
$(MAKE) -C bin/lilith clean
$(MAKE) -C bin/tau/tau-cli clean
$(MAKE) -C bin/tau/taud clean
$(MAKE) -C bin/vanityaddr clean
rm -f $(PROOFS_BIN)
clean: cleanbin
distclean: clean
$(CARGO) clean
install:
install: all
@for i in $(BINS); \
do \
if test ! -f $$i; \
then \
echo "The '$$i' binary was not built."; \
echo "You should run 'make BINS=$$i' as a normal user before installing."; \
exit 1; \
fi; \
$(MAKE) -C $$i install \
done;
mkdir -p $(DESTDIR)$(PREFIX)/bin
cp -f $(BINS) $(DESTDIR)$(PREFIX)/bin
uninstall:
for i in $(BINS); \
do \
rm -f $(DESTDIR)$(PREFIX)/bin/$$i; \
$(MAKE) -C $$i uninstall \
done;
.PHONY: all check fix fmt clippy test test-no-run cleanbin clean \
install uninstall contracts coverage
.PHONY: all contracts check fix fmt clippy rustdoc test coverage distclean clean install uninstall $(BINS)

34
bin/darkfid/Makefile Normal file
View File

@@ -0,0 +1,34 @@
.POSIX:
# Install prefix
PREFIX = $(HOME)/.cargo
# Cargo binary
CARGO = cargo +nightly
SRC = \
Cargo.toml \
../../Cargo.toml \
$(shell find src -type f) \
$(shell find ../../src -type f) \
BIN = ../../darkfid
all: $(BIN)
$(BIN): $(SRC)
$(CARGO) build $(TARGET_PRFX)$(RUST_TARGET) --release --package darkfid
cp -f ../../target/$(RUST_TARGET)/release/darkfid $@
clean:
rm -f $(BIN)
install: all
mkdir -p $(DESTDIR)$(PREFIX)/bin
cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
chmod 755 $(DESTDIR)$(PREFIX)/bin/darkfid
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/darkfid
.PHONY: all clean install uninstall

34
bin/darkfid2/Makefile Normal file
View File

@@ -0,0 +1,34 @@
.POSIX:
# Install prefix
PREFIX = $(HOME)/.cargo
# Cargo binary
CARGO = cargo +nightly
SRC = \
Cargo.toml \
../../Cargo.toml \
$(shell find src -type f) \
$(shell find ../../src -type f) \
BIN = ../../darkfid2
all: $(BIN)
$(BIN): $(SRC)
$(CARGO) build $(TARGET_PRFX)$(RUST_TARGET) --release --package darkfid2
cp -f ../../target/$(RUST_TARGET)/release/darkfid2 $@
clean:
rm -f $(BIN)
install: all
mkdir -p $(DESTDIR)$(PREFIX)/bin
cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
chmod 755 $(DESTDIR)$(PREFIX)/bin/darkfid2
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/darkfid2
.PHONY: all clean install uninstall

34
bin/darkirc/Makefile Normal file
View File

@@ -0,0 +1,34 @@
.POSIX:
# Install prefix
PREFIX = $(HOME)/.cargo
# Cargo binary
CARGO = cargo +nightly
SRC = \
Cargo.toml \
../../Cargo.toml \
$(shell find src -type f) \
$(shell find ../../src -type f) \
BIN = ../../darkirc
all: $(BIN)
$(BIN): $(SRC)
$(CARGO) build $(TARGET_PRFX)$(RUST_TARGET) --release --package darkirc
cp -f ../../target/$(RUST_TARGET)/release/darkirc $@
clean:
rm -f $(BIN)
install: all
mkdir -p $(DESTDIR)$(PREFIX)/bin
cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
chmod 755 $(DESTDIR)$(PREFIX)/bin/darkirc
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/darkirc
.PHONY: all clean install uninstall

34
bin/faucetd/Makefile Normal file
View File

@@ -0,0 +1,34 @@
.POSIX:
# Install prefix
PREFIX = $(HOME)/.cargo
# Cargo binary
CARGO = cargo +nightly
SRC = \
Cargo.toml \
../../Cargo.toml \
$(shell find src -type f) \
$(shell find ../../src -type f) \
BIN = ../../faucetd
all: $(BIN)
$(BIN): $(SRC)
$(CARGO) build $(TARGET_PRFX)$(RUST_TARGET) --release --package faucetd
cp -f ../../target/$(RUST_TARGET)/release/faucetd $@
clean:
rm -f $(BIN)
install: all
mkdir -p $(DESTDIR)$(PREFIX)/bin
cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
chmod 755 $(DESTDIR)$(PREFIX)/bin/faucetd
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/faucetd
.PHONY: all clean install uninstall

View File

@@ -0,0 +1,34 @@
.POSIX:
# Install prefix
PREFIX = $(HOME)/.cargo
# Cargo binary
CARGO = cargo +nightly
SRC = \
Cargo.toml \
../../../Cargo.toml \
$(shell find src -type f) \
$(shell find ../../../src -type f) \
BIN = ../../../genev
all: $(BIN)
$(BIN): $(SRC)
$(CARGO) build $(TARGET_PRFX)$(RUST_TARGET) --release --package genev
cp -f ../../../target/$(RUST_TARGET)/release/genev $@
clean:
rm -f $(BIN)
install: all
mkdir -p $(DESTDIR)$(PREFIX)/bin
cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
chmod 755 $(DESTDIR)$(PREFIX)/bin/genev
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/genev
.PHONY: all clean install uninstall

34
bin/genev/genevd/Makefile Normal file
View File

@@ -0,0 +1,34 @@
.POSIX:
# Install prefix
PREFIX = $(HOME)/.cargo
# Cargo binary
CARGO = cargo +nightly
SRC = \
Cargo.toml \
../../../Cargo.toml \
$(shell find src -type f) \
$(shell find ../../../src -type f) \
BIN = ../../../genevd
all: $(BIN)
$(BIN): $(SRC)
$(CARGO) build $(TARGET_PRFX)$(RUST_TARGET) --release --package genevd
cp -f ../../../target/$(RUST_TARGET)/release/genevd $@
clean:
rm -f $(BIN)
install: all
mkdir -p $(DESTDIR)$(PREFIX)/bin
cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
chmod 755 $(DESTDIR)$(PREFIX)/bin/genevd
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/genevd
.PHONY: all clean install uninstall

View File

@@ -41,7 +41,7 @@ mod rpc;
use rpc::JsonRpcInterface;
const CONFIG_FILE: &str = "genev_config.toml";
const CONFIG_FILE_CONTENTS: &str = include_str!("../../genev_config.toml");
const CONFIG_FILE_CONTENTS: &str = include_str!("../genev_config.toml");
#[derive(Clone, Debug, Deserialize, StructOpt, StructOptToml)]
#[serde(default)]

34
bin/lilith/Makefile Normal file
View File

@@ -0,0 +1,34 @@
.POSIX:
# Install prefix
PREFIX = $(HOME)/.cargo
# Cargo binary
CARGO = cargo +nightly
SRC = \
Cargo.toml \
../../Cargo.toml \
$(shell find src -type f) \
$(shell find ../../src -type f) \
BIN = ../../lilith
all: $(BIN)
$(BIN): $(SRC)
$(CARGO) build $(TARGET_PRFX)$(RUST_TARGET) --release --package lilith
cp -f ../../target/$(RUST_TARGET)/release/lilith $@
clean:
rm -f $(BIN)
install: all
mkdir -p $(DESTDIR)$(PREFIX)/bin
cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
chmod 755 $(DESTDIR)$(PREFIX)/bin/lilith
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/lilith
.PHONY: all clean install uninstall

View File

@@ -1,3 +0,0 @@
# Tau
see [Darkfi Book](https://darkrenaissance.github.io/darkfi/misc/tau.html) for the installation guide.

34
bin/tau/tau-cli/Makefile Normal file
View File

@@ -0,0 +1,34 @@
.POSIX:
# Install prefix
PREFIX = $(HOME)/.cargo
# Cargo binary
CARGO = cargo +nightly
SRC = \
Cargo.toml \
../../../Cargo.toml \
$(shell find src -type f) \
$(shell find ../../../src -type f) \
BIN = ../../../tau
all: $(BIN)
$(BIN): $(SRC)
$(CARGO) build $(TARGET_PRFX)$(RUST_TARGET) --release --package tau
cp -f ../../../target/$(RUST_TARGET)/release/tau $@
clean:
rm -f $(BIN)
install: all
mkdir -p $(DESTDIR)$(PREFIX)/bin
cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
chmod 755 $(DESTDIR)$(PREFIX)/bin/tau
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/tau
.PHONY: all clean install uninstall

View File

@@ -17,7 +17,7 @@ name = "taud"
path = "src/main.rs"
[dependencies]
darkfi = { path = "../../../", features = ["event-graph", "rpc", "bs58"]}
darkfi = { path = "../../../", features = ["event-graph", "rpc", "bs58", "async-serial"]}
darkfi-serial = { path = "../../../src/serial" }
# Misc

34
bin/tau/taud/Makefile Normal file
View File

@@ -0,0 +1,34 @@
.POSIX:
# Install prefix
PREFIX = $(HOME)/.cargo
# Cargo binary
CARGO = cargo +nightly
SRC = \
Cargo.toml \
../../../Cargo.toml \
$(shell find src -type f) \
$(shell find ../../../src -type f) \
BIN = ../../../taud
all: $(BIN)
$(BIN): $(SRC)
$(CARGO) build $(TARGET_PRFX)$(RUST_TARGET) --release --package taud
cp -f ../../../target/$(RUST_TARGET)/release/taud $@
clean:
rm -f $(BIN)
install: all
mkdir -p $(DESTDIR)$(PREFIX)/bin
cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
chmod 755 $(DESTDIR)$(PREFIX)/bin/taud
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/taud
.PHONY: all clean install uninstall

View File

@@ -24,7 +24,7 @@ use url::Url;
use darkfi::net::settings::SettingsOpt;
pub const CONFIG_FILE: &str = "taud_config.toml";
pub const CONFIG_FILE_CONTENTS: &str = include_str!("../../taud_config.toml");
pub const CONFIG_FILE_CONTENTS: &str = include_str!("../taud_config.toml");
/// taud cli
#[derive(Clone, Debug, Deserialize, StructOpt, StructOptToml)]

View File

@@ -1,16 +0,0 @@
#!/bin/sh
set -e
CARGO="${CARGO:-cargo +nightly}"
toplevel="$(git rev-parse --show-toplevel)"
dirs="$(grep '"bin/' "$toplevel/Cargo.toml" | grep -v '#' | tr -d '", \t')"
bins=""
for i in $dirs; do
bins="$bins $(grep '^name = ' "$i/Cargo.toml" | cut -d' ' -f3 | tr -d '"')"
done
bins="$(echo "$bins" | tr ' ' '\n' | sort -u | tr '\n' ' ')"
make CARGO="$CARGO" BINS="$bins"

View File

@@ -18,7 +18,10 @@
use std::{fmt, time::UNIX_EPOCH};
use darkfi_serial::{async_trait, SerialDecodable, SerialEncodable};
#[cfg(feature = "async-serial")]
use darkfi_serial::async_trait;
use darkfi_serial::{SerialDecodable, SerialEncodable};
use crate::Result;