Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build v3.1 binary without docker #2566

Open
ThomasBlock opened this issue Aug 9, 2024 · 3 comments
Open

build v3.1 binary without docker #2566

ThomasBlock opened this issue Aug 9, 2024 · 3 comments

Comments

@ThomasBlock
Copy link

ThomasBlock commented Aug 9, 2024

Hi,

i want to build binaries without docker like outlined here
https://docs.arbitrum.io/run-arbitrum-node/nitro/build-nitro-locally#build-nitros-binaries-natively

v2.3.3 was okay, but v3.1.0 now wont let me build.
brotli uses docker - what can i do?

make build
mkdir .make
test -f target/include/brotli/encode.h || ./scripts/build-brotli.sh -l
CMake Deprecation Warning at CMakeLists.txt:5 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- The C compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Build type is 'Release'
-- Performing Test BROTLI_EMSCRIPTEN
-- Performing Test BROTLI_EMSCRIPTEN - Failed
-- Compiler is not EMSCRIPTEN
-- Looking for log2
-- Looking for log2 - not found
-- Looking for log2
-- Looking for log2 - found
-- Configuring done
-- Generating done
-- Build files have been written to: /root/nitro/brotli/buildfiles/build-local
make[1]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
make[2]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
[  4%] Building C object CMakeFiles/brotlicommon.dir/c/common/platform.c.o
[  4%] Building C object CMakeFiles/brotlicommon.dir/c/common/dictionary.c.o
[  4%] Building C object CMakeFiles/brotlicommon.dir/c/common/constants.c.o
[  7%] Building C object CMakeFiles/brotlicommon-static.dir/c/common/context.c.o
[ 11%] Building C object CMakeFiles/brotlicommon-static.dir/c/common/platform.c.o
[ 11%] Building C object CMakeFiles/brotlicommon.dir/c/common/shared_dictionary.c.o
[ 12%] Building C object CMakeFiles/brotlicommon-static.dir/c/common/dictionary.c.o
[ 12%] Building C object CMakeFiles/brotlicommon-static.dir/c/common/constants.c.o
[ 12%] Building C object CMakeFiles/brotlicommon-static.dir/c/common/shared_dictionary.c.o
[ 14%] Building C object CMakeFiles/brotlicommon.dir/c/common/context.c.o
[ 15%] Building C object CMakeFiles/brotlicommon.dir/c/common/transform.c.o
[ 17%] Building C object CMakeFiles/brotlicommon-static.dir/c/common/transform.c.o
[ 20%] Linking C static library libbrotlicommon-static.a
[ 20%] Linking C shared library libbrotlicommon.so
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
[ 20%] Built target brotlicommon
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
[ 21%] Building C object CMakeFiles/brotlidec.dir/c/dec/decode.c.o
[ 24%] Building C object CMakeFiles/brotlienc.dir/c/enc/backward_references.c.o
[ 24%] Building C object CMakeFiles/brotlidec.dir/c/dec/state.c.o
[ 25%] Building C object CMakeFiles/brotlidec.dir/c/dec/bit_reader.c.o
[ 27%] Building C object CMakeFiles/brotlidec.dir/c/dec/huffman.c.o
[ 30%] Building C object CMakeFiles/brotlienc.dir/c/enc/backward_references_hq.c.o
[ 30%] Building C object CMakeFiles/brotlienc.dir/c/enc/bit_cost.c.o
[ 31%] Building C object CMakeFiles/brotlienc.dir/c/enc/block_splitter.c.o
[ 34%] Building C object CMakeFiles/brotlienc.dir/c/enc/brotli_bit_stream.c.o
[ 34%] Building C object CMakeFiles/brotlienc.dir/c/enc/cluster.c.o
[ 35%] Building C object CMakeFiles/brotlienc.dir/c/enc/command.c.o
[ 37%] Building C object CMakeFiles/brotlienc.dir/c/enc/compound_dictionary.c.o
[ 38%] Building C object CMakeFiles/brotlienc.dir/c/enc/compress_fragment.c.o
[ 41%] Building C object CMakeFiles/brotlienc.dir/c/enc/compress_fragment_two_pass.c.o
[ 41%] Building C object CMakeFiles/brotlienc.dir/c/enc/dictionary_hash.c.o
[ 44%] Building C object CMakeFiles/brotlienc.dir/c/enc/encode.c.o
[ 44%] Building C object CMakeFiles/brotlienc.dir/c/enc/encoder_dict.c.o
[ 45%] Building C object CMakeFiles/brotlienc.dir/c/enc/entropy_encode.c.o
[ 48%] Building C object CMakeFiles/brotlienc.dir/c/enc/histogram.c.o
[ 48%] Building C object CMakeFiles/brotlienc.dir/c/enc/fast_log.c.o
[ 50%] Building C object CMakeFiles/brotlienc.dir/c/enc/literal_cost.c.o
[ 51%] Building C object CMakeFiles/brotlienc.dir/c/enc/metablock.c.o
[ 52%] Building C object CMakeFiles/brotlienc.dir/c/enc/memory.c.o
[ 54%] Building C object CMakeFiles/brotlienc.dir/c/enc/utf8_util.c.o
[ 55%] Building C object CMakeFiles/brotlienc.dir/c/enc/static_dict.c.o
[ 57%] Linking C shared library libbrotlidec.so
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
[ 57%] Built target brotlidec
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
[ 57%] Built target brotlicommon-static
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
[ 58%] Building C object CMakeFiles/brotlidec-static.dir/c/dec/bit_reader.c.o
[ 60%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/backward_references.c.o
[ 61%] Building C object CMakeFiles/brotlidec-static.dir/c/dec/decode.c.o
[ 62%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/backward_references_hq.c.o
[ 65%] Building C object CMakeFiles/brotlidec-static.dir/c/dec/huffman.c.o
[ 65%] Building C object CMakeFiles/brotlidec-static.dir/c/dec/state.c.o
[ 67%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/bit_cost.c.o
[ 68%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/block_splitter.c.o
[ 70%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/brotli_bit_stream.c.o
[ 71%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/command.c.o
[ 72%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/compound_dictionary.c.o
[ 74%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/compress_fragment.c.o
[ 77%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/compress_fragment_two_pass.c.o
[ 77%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/dictionary_hash.c.o
[ 78%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/encode.c.o
[ 80%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/encoder_dict.c.o
[ 81%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/cluster.c.o
[ 82%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/entropy_encode.c.o
[ 84%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/fast_log.c.o
[ 85%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/histogram.c.o
[ 87%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/literal_cost.c.o
[ 88%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/static_dict.c.o
[ 91%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/metablock.c.o
[ 91%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/utf8_util.c.o
[ 92%] Building C object CMakeFiles/brotlienc-static.dir/c/enc/memory.c.o
[ 94%] Linking C static library libbrotlidec-static.a
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
[ 94%] Built target brotlidec-static
[ 95%] Linking C shared library libbrotlienc.so
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
[ 95%] Built target brotlienc
[ 97%] Linking C static library libbrotlienc-static.a
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
[ 97%] Built target brotlienc-static
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
[ 98%] Building C object CMakeFiles/brotli.dir/c/tools/brotli.c.o
[100%] Linking C executable brotli
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
[100%] Built target brotli
make[2]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
make[1]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
make[1]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
make[2]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
Consolidate compiler generated dependencies of target brotlicommon
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
[ 10%] Built target brotlicommon
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
Consolidate compiler generated dependencies of target brotlidec
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
[ 17%] Built target brotlidec
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
Consolidate compiler generated dependencies of target brotlienc
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
[ 48%] Built target brotlienc
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
Consolidate compiler generated dependencies of target brotlicommon-static
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
[ 58%] Built target brotlicommon-static
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
Consolidate compiler generated dependencies of target brotlidec-static
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
[ 65%] Built target brotlidec-static
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
Consolidate compiler generated dependencies of target brotlienc-static
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
[ 97%] Built target brotlienc-static
make[3]: Entering directory '/root/nitro/brotli/buildfiles/build-local'
Consolidate compiler generated dependencies of target brotli
make[3]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
[100%] Built target brotli
make[2]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
Install the project...
-- Install configuration: "Release"
-- Installing: /root/nitro/target/bin/brotli
-- Installing: /root/nitro/target/lib/libbrotlienc.so.1.0.9
-- Installing: /root/nitro/target/lib/libbrotlienc.so.1
-- Set runtime path of "/root/nitro/target/lib/libbrotlienc.so.1.0.9" to ""
-- Installing: /root/nitro/target/lib/libbrotlienc.so
-- Installing: /root/nitro/target/lib/libbrotlidec.so.1.0.9
-- Installing: /root/nitro/target/lib/libbrotlidec.so.1
-- Set runtime path of "/root/nitro/target/lib/libbrotlidec.so.1.0.9" to ""
-- Installing: /root/nitro/target/lib/libbrotlidec.so
-- Installing: /root/nitro/target/lib/libbrotlicommon.so.1.0.9
-- Installing: /root/nitro/target/lib/libbrotlicommon.so.1
-- Installing: /root/nitro/target/lib/libbrotlicommon.so
-- Installing: /root/nitro/target/lib/libbrotlienc-static.a
-- Installing: /root/nitro/target/lib/libbrotlidec-static.a
-- Installing: /root/nitro/target/lib/libbrotlicommon-static.a
-- Installing: /root/nitro/target/include/brotli
-- Installing: /root/nitro/target/include/brotli/types.h
-- Installing: /root/nitro/target/include/brotli/shared_dictionary.h
-- Installing: /root/nitro/target/include/brotli/port.h
-- Installing: /root/nitro/target/include/brotli/encode.h
-- Installing: /root/nitro/target/include/brotli/decode.h
-- Installing: /root/nitro/target/lib/pkgconfig/libbrotlicommon.pc
-- Installing: /root/nitro/target/lib/pkgconfig/libbrotlidec.pc
-- Installing: /root/nitro/target/lib/pkgconfig/libbrotlienc.pc
make[1]: Leaving directory '/root/nitro/brotli/buildfiles/build-local'
test -f target/include/brotli/decode.h || ./scripts/build-brotli.sh -l
test -f target/lib/libbrotlicommon-static.a || ./scripts/build-brotli.sh -l
test -f target/lib/libbrotlienc-static.a || ./scripts/build-brotli.sh -l
test -f target/lib/libbrotlidec-static.a || ./scripts/build-brotli.sh -l
test -f target/lib-wasm/libbrotlicommon-static.a || ./scripts/build-brotli.sh -w -d
./scripts/build-brotli.sh: line 82: docker: command not found
make: *** [Makefile:515: .make/cbrotli-wasm] Error 127

@ThomasBlock ThomasBlock changed the title build binary without docker build v3.1 binary without docker Aug 9, 2024
@ThomasBlock
Copy link
Author

Here is my full script to build on ubuntu22 . a lot of things to do. would be really nice if you could publish the binaries. ( docker is not really an option for me when i am inside of lxc containers )

apt install git curl build-essential cmake npm golang clang make gotestsum wabt lld-13 python3 -y
npm install --global yarn
ln -s /usr/bin/wasm-ld-13 /usr/local/bin/wasm-ld
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash 
source /root/.bashrc
nvm install 16.0.0 && npm install --global yarn
nvm install 18.20
nvm use 18.20
source /root/.bashrc
rm -rf /usr/local/go && wget -c https://golang.org/dl/go1.22.6.linux-amd64.tar.gz -O - | tar -xz -C /usr/local
echo "export PATH=/usr/local/go/bin:$PATH:/root/.local/bin" >> /root/.bashrc
source /root/.bashrc
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
rustup install 1.73.0
rustup default 1.73.0
rustup target add wasm32-unknown-unknown --toolchain 1.72.1
rustup target add wasm32-wasi --toolchain 1.72.1
cargo install cbindgen
curl -L https://foundry.paradigm.xyz | bash
echo "export PATH=$PATH:/root/.foundry/bin" >> /root/.bashrc
source /root/.bashrc
foundryup
apt install apt-transport-https curl gnupg-agent ca-certificates software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
apt install docker-ce docker-ce-cli containerd.io -y
git clone --recurse-submodules  https://github.com/OffchainLabs/nitro/
cd nitro
git checkout v3.1.0
git submodule update --init --recursive
export GOPROXY=direct
make build

@monkeybape
Copy link

Did you successfully build v3.1.0? I encountered an issue while compiling, and cargo install cbindgen prompted me to upgrade to 1.74.

@ThomasBlock
Copy link
Author

Did you successfully build v3.1.0? I encountered an issue while compiling, and cargo install cbindgen prompted me to upgrade to 1.74.

yes but i guess this is all work in progress. three days ago i had version 1.72.1 and was told to uopgrade to to 1.73.1
so i did

rustup install 1.73.0
rustup default 1.73.0

and then the rest worked

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants