mirror of
				https://git.wownero.com/wowlet/wowlet.git
				synced 2024-08-15 01:03:14 +00:00 
			
		
		
		
	Add reproducible build instructions
This commit is contained in:
		
							parent
							
								
									855755fea3
								
							
						
					
					
						commit
						fbd6b8eb53
					
				
					 1 changed files with 39 additions and 34 deletions
				
			
		
							
								
								
									
										71
									
								
								BUILDING.md
									
										
									
									
									
								
							
							
						
						
									
										71
									
								
								BUILDING.md
									
										
									
									
									
								
							| 
						 | 
					@ -10,6 +10,44 @@ Static builds via Docker are done in 3 steps:
 | 
				
			||||||
2. Creating a base Docker image
 | 
					2. Creating a base Docker image
 | 
				
			||||||
3. Using the base image to compile a build
 | 
					3. Using the base image to compile a build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Linux (reproducible)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The docker image for reproducible Linux static builds uses Ubuntu 16.04 and compiles the required libraries statically 
 | 
				
			||||||
 | 
					so that the resulting Feather binary is static. For more information, check the Dockerfile: `Dockerfile`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### 1. Clone
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					git clone --branch master --recursive https://git.wownero.com/feather/feather.git
 | 
				
			||||||
 | 
					cd feather
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Replace `master` with the desired version tag (e.g. `beta-1`) to build the release binary.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### 2. Base image
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					docker build --tag feather:linux --build-arg THREADS=4 .
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Building the base image takes a while. You only need to build the base image once.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### 3. Build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					docker run --rm -it -v $PWD:/feather --env OPENSSL_ROOT_DIR=/usr/local/openssl/ -w /feather feather:linux sh -c 'TOR="/usr/local/tor/bin/tor" XMRIG="/xmrig/xmrig" make release-static -j4'
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you're re-running a build make sure to `rm -rf build/` first.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The resulting binary can be found in `build/bin/feather`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Hashes for tagged commits should match:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					beta-1: d1a52e3bac1abbae4adda1fc88cb2a7a06fbd61085868421897c6a4f3f4eb091  feather
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Windows
 | 
					### Windows
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The docker image for Windows static compiles uses Ubuntu 18.04 and installs [mxe](https://mxe.cc) from [our git](https://git.wownero.com/feather/mxe/src/branch/feather-patch), 
 | 
					The docker image for Windows static compiles uses Ubuntu 18.04 and installs [mxe](https://mxe.cc) from [our git](https://git.wownero.com/feather/mxe/src/branch/feather-patch), 
 | 
				
			||||||
| 
						 | 
					@ -42,39 +80,6 @@ Replace `PATH_TO_FEATHER` with the absolute path to Feather locally.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The resulting binary can be found in `build/bin/feather.exe`.
 | 
					The resulting binary can be found in `build/bin/feather.exe`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Linux
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The docker image for Linux static compiles uses Ubuntu 18.04 and compiles the required libraries statically so that 
 | 
					 | 
				
			||||||
the resulting Feather binary is static. It comes with OpenSSL 1.1.1g, Qt 5.15.0 (OpenGL disabled). For more information, 
 | 
					 | 
				
			||||||
check the Dockerfile: `Dockerfile`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#### 1. Clone
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
git clone --recursive https://git.wownero.com/feather/feather.git
 | 
					 | 
				
			||||||
cd feather
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#### 2. Base image
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Warning: Building the base image takes a while, go prepare some dinner.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
docker build --tag feather:linux --build-arg THREADS=8 .
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Note: You only need to build the base image once.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#### 3. Build
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
docker run --env OPENSSL_ROOT_DIR=/usr/local/openssl/ --rm -it -v /tmp/ccache:/root/.ccache -v PATH_TO_FEATHER:/feather -w /feather feather:linux sh -c 'TOR="/usr/local/tor/bin/tor" XMRIG="/xmrig/xmrig" make release-static -j8'
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Replace `PATH_TO_FEATHER` with the absolute path to Feather locally.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The resulting binary can be found in `build/bin/feather`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## macOS
 | 
					## macOS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
For MacOS it's easiest to leverage [brew](https://brew.sh) to install the required dependencies. 
 | 
					For MacOS it's easiest to leverage [brew](https://brew.sh) to install the required dependencies. 
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue