Skip to content

Commit

Permalink
tweak(build): Use Boost submodules instead of requiring builders to d…
Browse files Browse the repository at this point in the history
…ownload+extract a full boost.zip somewhere.

This also lets us use/update specific parts.

No more BOOST_ROOT required!
  • Loading branch information
LWSS committed Feb 21, 2024
1 parent 179e4fd commit 223e4bc
Show file tree
Hide file tree
Showing 80 changed files with 347 additions and 52 deletions.
6 changes: 0 additions & 6 deletions .github/workflows/ci_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,6 @@ jobs:
shell: bash
run: |
mkdir -p "$ROOT_DEP" && cd "$_" || exit 1
echo Downloading boost
curl -s -L https://boostorg.jfrog.io/artifactory/main/release/1.71.0/source/boost_1_71_0.7z -o boost.7z
7z -bso0 x boost.7z -oboost
rm boost.7z
echo "BOOST_ROOT=$PWD\boost\boost_1_71_0" >> "$GITHUB_ENV"
- name: Compile
shell: bash
Expand Down
203 changes: 202 additions & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -278,8 +278,209 @@
path = vendor/rnnoise
url = https://github.com/mumble-voip/rnnoise.git
[submodule "vendor/boost-preprocessor"]
path = vendor/boost-preprocessor
path = vendor/boost-submodules/boost-preprocessor
url = https://github.com/boostorg/preprocessor.git
[submodule "vendor/msgpack-cpp"]
path = vendor/msgpack-cpp
url = https://github.com/msgpack/msgpack-c.git
[submodule "vendor/boost-filesystem"]
path = vendor/boost-submodules/boost-filesystem
url = https://github.com/boostorg/filesystem
[submodule "vendor/boost-locale"]
path = vendor/boost-submodules/boost-locale
url = https://github.com/boostorg/locale
[submodule "vendor/boost-program-options"]
path = vendor/boost-submodules/boost-program-options
url = https://github.com/boostorg/program_options
[submodule "vendor/boost-random"]
path = vendor/boost-submodules/boost-random
url = https://github.com/boostorg/random
[submodule "vendor/boost-system"]
path = vendor/boost-submodules/boost-system
url = https://github.com/boostorg/system
[submodule "vendor/boost-context"]
path = vendor/boost-submodules/boost-context
url = https://github.com/boostorg/context
[submodule "vendor/boost-coroutine"]
path = vendor/boost-submodules/boost-coroutine
url = https://github.com/boostorg/coroutine
[submodule "vendor/boost-thread"]
path = vendor/boost-submodules/boost-thread
url = https://github.com/boostorg/thread
[submodule "vendor/boost-config"]
path = vendor/boost-submodules/boost-config
url = https://github.com/boostorg/config
[submodule "vendor/boost-any"]
path = vendor/boost-submodules/boost-any
url = https://github.com/boostorg/any/
[submodule "vendor/boost-assert"]
path = vendor/boost-submodules/boost-assert
url = https://github.com/boostorg/assert
[submodule "vendor/boost-function"]
path = vendor/boost-submodules/boost-function
url = https://github.com/boostorg/function
[submodule "vendor/boost-detail"]
path = vendor/boost-submodules/boost-detail
url = https://github.com/boostorg/detail
[submodule "vendor/boost-smart-ptr"]
path = vendor/boost-submodules/boost-smart-ptr
url = https://github.com/boostorg/smart_ptr/
[submodule "vendor/boost-static-assert"]
path = vendor/boost-submodules/boost-static-assert
url = https://github.com/boostorg/static_assert
[submodule "vendor/boost-throw-exception"]
path = vendor/boost-submodules/boost-throw-exception
url = https://github.com/boostorg/throw_exception
[submodule "vendor/boost-type-index"]
path = vendor/boost-submodules/boost-type-index
url = https://github.com/boostorg/type_index
[submodule "vendor/boost-type-traits"]
path = vendor/boost-submodules/boost-type-traits
url = https://github.com/boostorg/type_traits
[submodule "vendor/boost-predef"]
path = vendor/boost-submodules/boost-predef
url = https://github.com/boostorg/predef
[submodule "vendor/boost-core"]
path = vendor/boost-submodules/boost-core
url = https://github.com/boostorg/core
[submodule "vendor/boost-iterator"]
path = vendor/boost-submodules/boost-iterator
url = https://github.com/boostorg/iterator
[submodule "vendor/boost-move"]
path = vendor/boost-submodules/boost-move
url = https://github.com/boostorg/move
[submodule "vendor/boost-winapi"]
path = vendor/boost-submodules/boost-winapi
url = https://github.com/boostorg/winapi
[submodule "vendor/boost-mpl"]
path = vendor/boost-submodules/boost-mpl
url = https://github.com/boostorg/mpl
[submodule "vendor/boost-integer"]
path = vendor/boost-submodules/boost-integer
url = https://github.com/boostorg/integer
[submodule "vendor/boost-container-hash"]
path = vendor/boost-submodules/boost-container-hash
url = https://github.com/boostorg/container_hash
[submodule "vendor/boost-bind"]
path = vendor/boost-submodules/boost-bind
url = https://github.com/boostorg/bind
[submodule "vendor/boost-unordered"]
path = vendor/boost-submodules/boost-unordered
url = https://github.com/boostorg/unordered
[submodule "vendor/boost-lexical-cast"]
path = vendor/boost-submodules/boost-lexical-cast
url = https://github.com/boostorg/lexical_cast
[submodule "vendor/boost-io"]
path = vendor/boost-submodules/boost-io
url = https://github.com/boostorg/io
[submodule "vendor/boost-date-time"]
path = vendor/boost-submodules/boost-date-time
url = https://github.com/boostorg/date_time
[submodule "vendor/boost-range"]
path = vendor/boost-submodules/boost-range
url = https://github.com/boostorg/range
[submodule "vendor/boost-tuple"]
path = vendor/boost-submodules/boost-tuple
url = https://github.com/boostorg/tuple
[submodule "vendor/boost-concept-check"]
path = vendor/boost-submodules/boost-concept-check
url = https://github.com/boostorg/concept_check/
[submodule "vendor/boost-utility"]
path = vendor/boost-submodules/boost-utility
url = https://github.com/boostorg/utility
[submodule "vendor/boost-numeric-conversion"]
path = vendor/boost-submodules/boost-numeric-conversion
url = https://github.com/boostorg/numeric_conversion
[submodule "vendor/boost-chrono"]
path = vendor/boost-submodules/boost-chrono
url = https://github.com/boostorg/chrono
[submodule "vendor/boost-array"]
path = vendor/boost-submodules/boost-array
url = https://github.com/boostorg/array
[submodule "vendor/boost-ratio"]
path = vendor/boost-submodules/boost-ratio
url = https://github.com/boostorg/ratio
[submodule "vendor/boost-container"]
path = vendor/boost-submodules/boost-container
url = https://github.com/boostorg/container
[submodule "vendor/boost-math"]
path = vendor/boost-submodules/boost-math
url = https://github.com/boostorg/math
[submodule "vendor/boost-property-tree"]
path = vendor/boost-submodules/boost-property-tree
url = https://github.com/boostorg/property_tree
[submodule "vendor/boost-optional"]
path = vendor/boost-submodules/boost-optional
url = https://github.com/boostorg/optional
[submodule "vendor/boost-fusion"]
path = vendor/boost-submodules/boost-fusion
url = https://github.com/boostorg/fusion
[submodule "vendor/boost-function-types"]
path = vendor/boost-submodules/boost-function-types
url = https://github.com/boostorg/function_types
[submodule "vendor/boost-circular-buffer"]
path = vendor/boost-submodules/boost-circular-buffer
url = https://github.com/boostorg/circular_buffer
[submodule "vendor/boost-bimap"]
path = vendor/boost-submodules/boost-bimap
url = https://github.com/boostorg/bimap
[submodule "vendor/boost-algorithm"]
path = vendor/boost-submodules/boost-algorithm
url = https://github.com/boostorg/algorithm
[submodule "vendor/boost-variant"]
path = vendor/boost-submodules/boost-variant
url = https://github.com/boostorg/variant
[submodule "vendor/boost-serialization"]
path = vendor/boost-submodules/boost-serialization
url = https://github.com/boostorg/serialization
[submodule "vendor/boost-exception"]
path = vendor/boost-submodules/boost-exception
url = https://github.com/boostorg/exception
[submodule "vendor/boost-multi-index"]
path = vendor/boost-submodules/boost-multi-index
url = https://github.com/boostorg/multi_index
[submodule "vendor/boost-foreach"]
path = vendor/boost-submodules/boost-foreach
url = https://github.com/boostorg/foreach
[submodule "vendor/boost-uuid"]
path = vendor/boost-submodules/boost-uuid
url = https://github.com/boostorg/uuid
[submodule "vendor/boost-regex"]
path = vendor/boost-submodules/boost-regex
url = https://github.com/boostorg/regex
[submodule "vendor/boost-crc"]
path = vendor/boost-submodules/boost-crc
url = https://github.com/boostorg/crc
[submodule "vendor/boost-tti"]
path = vendor/boost-submodules/boost-tti
url = https://github.com/boostorg/tti
[submodule "vendor/boost-submodules/boost-outcome"]
path = vendor/boost-submodules/boost-outcome
url = https://github.com/boostorg/outcome
[submodule "vendor/boost-submodules/boost-asio"]
path = vendor/boost-submodules/boost-asio
url = https://github.com/boostorg/asio
[submodule "vendor/boost-submodules/boost-atomic"]
path = vendor/boost-submodules/boost-atomic
url = https://github.com/boostorg/atomic
[submodule "vendor/boost-submodules/boost-beast"]
path = vendor/boost-submodules/boost-beast
url = https://github.com/boostorg/beast
[submodule "vendor/boost-submodules/boost-intrusive"]
path = vendor/boost-submodules/boost-intrusive
url = https://github.com/boostorg/intrusive
[submodule "vendor/boost-submodules/boost-mp11"]
path = vendor/boost-submodules/boost-mp11
url = https://github.com/boostorg/mp11
[submodule "vendor/boost-submodules/boost-logic"]
path = vendor/boost-submodules/boost-logic
url = https://github.com/boostorg/logic
[submodule "vendor/boost-submodules/boost-endian"]
path = vendor/boost-submodules/boost-endian
url = https://github.com/boostorg/endian
[submodule "vendor/boost-submodules/boost-iostreams"]
path = vendor/boost-submodules/boost-iostreams
url = https://github.com/boostorg/iostreams
[submodule "vendor/boost-submodules/boost-tokenizer"]
path = vendor/boost-submodules/boost-tokenizer
url = https://github.com/boostorg/tokenizer
73 changes: 70 additions & 3 deletions code/premake5.lua
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,80 @@ workspace "CitizenMP"
"../vendor/rapidjson/include/",
"../vendor/fmtlib/include/",
"deplibs/include/",
"../vendor/boost-preprocessor/include/",
os.getenv("BOOST_ROOT")
"../vendor/boost-submodules/boost-context/include/",
"../vendor/boost-submodules/boost-filesystem/include/",
"../vendor/boost-submodules/boost-locale/include/",
"../vendor/boost-submodules/boost-preprocessor/include/",
"../vendor/boost-submodules/boost-program-options/include/",
"../vendor/boost-submodules/boost-random/include/",
"../vendor/boost-submodules/boost-system/include/",
"../vendor/boost-submodules/boost-thread/include/",

"../vendor/boost-submodules/boost-config/include/",
"../vendor/boost-submodules/boost-any/include/",
"../vendor/boost-submodules/boost-assert/include/",
"../vendor/boost-submodules/boost-detail/include/",
"../vendor/boost-submodules/boost-function/include/",
"../vendor/boost-submodules/boost-smart-ptr/include/",
"../vendor/boost-submodules/boost-static-assert/include/",
"../vendor/boost-submodules/boost-throw-exception/include/",
"../vendor/boost-submodules/boost-type-traits/include/",
"../vendor/boost-submodules/boost-type-index/include/",
"../vendor/boost-submodules/boost-predef/include/",
"../vendor/boost-submodules/boost-core/include/",
"../vendor/boost-submodules/boost-iterator/include/",
"../vendor/boost-submodules/boost-move/include/",
"../vendor/boost-submodules/boost-winapi/include/",
"../vendor/boost-submodules/boost-mpl/include/",
"../vendor/boost-submodules/boost-integer/include/",
"../vendor/boost-submodules/boost-container-hash/include/",
"../vendor/boost-submodules/boost-bind/include/",
"../vendor/boost-submodules/boost-unordered/include/",
"../vendor/boost-submodules/boost-lexical-cast/include/",
"../vendor/boost-submodules/boost-io/include/",
"../vendor/boost-submodules/boost-date-time/include/",
"../vendor/boost-submodules/boost-range/include/",
"../vendor/boost-submodules/boost-tuple/include/",
"../vendor/boost-submodules/boost-concept-check/include/",
"../vendor/boost-submodules/boost-utility/include/",
"../vendor/boost-submodules/boost-numeric-conversion/include/",
"../vendor/boost-submodules/boost-chrono/include/",
"../vendor/boost-submodules/boost-array/include/",
"../vendor/boost-submodules/boost-ratio/include/",
"../vendor/boost-submodules/boost-container/include/",
"../vendor/boost-submodules/boost-math/include/",
"../vendor/boost-submodules/boost-tokenizer/include/",
"../vendor/boost-submodules/boost-property-tree/include/",
"../vendor/boost-submodules/boost-optional/include/",
"../vendor/boost-submodules/boost-fusion/include/",
"../vendor/boost-submodules/boost-function-types/include/",
"../vendor/boost-submodules/boost-circular-buffer/include/",
"../vendor/boost-submodules/boost-bimap/include/",
"../vendor/boost-submodules/boost-algorithm/include/",
"../vendor/boost-submodules/boost-variant/include/",
"../vendor/boost-submodules/boost-serialization/include/",
"../vendor/boost-submodules/boost-exception/include/",
"../vendor/boost-submodules/boost-multi-index/include/",
"../vendor/boost-submodules/boost-foreach/include/",
"../vendor/boost-submodules/boost-uuid/include/",
"../vendor/boost-submodules/boost-regex/include/",
"../vendor/boost-submodules/boost-crc/include/",
"../vendor/boost-submodules/boost-tti/include/",
"../vendor/boost-submodules/boost-outcome/include/",
"../vendor/boost-submodules/boost-coroutine/include/",
"../vendor/boost-submodules/boost-asio/include/",
"../vendor/boost-submodules/boost-atomic/include/",
"../vendor/boost-submodules/boost-beast/include/",
"../vendor/boost-submodules/boost-intrusive/include/",
"../vendor/boost-submodules/boost-iostreams/include/",
"../vendor/boost-submodules/boost-mp11/include/",
"../vendor/boost-submodules/boost-logic/include/",
"../vendor/boost-submodules/boost-endian/include/",
}

filter { 'language:C or language:C++'}
defines { "GTEST_HAS_PTHREAD=0", "BOOST_ALL_NO_LIB" }

defines { "BOOST_NULLPTR=nullptr" }
defines { "_HAS_AUTO_PTR_ETC" } -- until boost gets fixed

filter {}
Expand Down
15 changes: 0 additions & 15 deletions code/tools/ci/build_server_2.sh
Original file line number Diff line number Diff line change
Expand Up @@ -96,21 +96,6 @@ EOF
lua5.3 codegen.lua inp/natives_global.lua rpc server > /opt/cfx-server/citizen/scripting/rpc_natives.json
fi

# download and extract boost
cd /tmp

# keeping this here as a note that boost is really dumb for using "jfrog artifactory bintray" which gives constant persistent 'Forbidden!'
# whenever some arbitrary quota runs out, and deletes their version history on sourceforge, and has no single canonical git repo
#curl --http1.1 -sLo /tmp/boost.tar.bz2 https://dl.bintray.com/boostorg/release/1.71.0/source/boost_1_71_0.tar.bz2
curl --http1.1 -sLo /tmp/boost.tar.bz2 https://runtime.fivem.net/client/deps/boost_1_71_0.tar.bz2

tar xf boost.tar.bz2
rm boost.tar.bz2

mv boost_* boost || true

export BOOST_ROOT=/tmp/boost/

# download and build premake
curl --http1.1 -sLo /tmp/premake.zip https://github.com/premake/premake-core/releases/download/v5.0.0-beta1/premake-5.0.0-beta1-src.zip

Expand Down
16 changes: 0 additions & 16 deletions code/tools/ci/psm1/cfxRunPremake.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,6 @@ function Invoke-RunPremake {
[CfxBuildTools] $Tools
)

# Ensure we have BOOST_ROOT
if (!$env:BOOST_ROOT -or !(Test-Path $env:BOOST_ROOT)) {
$cDevPath = "C:\dev\boost_1_71_0"
$cLibrariesPath = "C:\Libraries\boost_1_71_0"

if (Test-Path $cDevPath) {
$env:BOOST_ROOT = $cDevPath
}
elseif (Test-Path $cLibrariesPath) {
$env:BOOST_ROOT = $cLibrariesPath
}
else {
throw "Unable to find BOOST library, make sure you have the correct path in the BOOST_ROOT env var"
}
}

Push-Location $Context.CodeRoot
& $Tools.premake @(
$Context.PremakeVSVersion
Expand Down
1 change: 0 additions & 1 deletion code/tools/ci/wsl-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ fi
cp -a tools/ci/build_server_2.sh /tmp/build_server.sh
sed -i -e '1,/^## SETUP-CUTOFF/d' -e '/^## BUILD-CUTOFF/,$ d' -e 's/.*make clean.*//g' -e 's/config=release/config=debug/g' -e 's/linux\/release/linux\/debug/g' /tmp/build_server.sh

export BOOST_ROOT=/tmp/boost/
JOB_SLOTS=$(nproc) sh -e /tmp/build_server.sh

echo '------------------'
Expand Down
2 changes: 1 addition & 1 deletion code/vendor/boost_filesystem.lua
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ return {
language "C++"
kind 'StaticLib'

files_project(os.getenv("BOOST_ROOT") .. '/libs/filesystem/src/')
files_project('../vendor/boost-submodules/boost-filesystem/src/')
{
'codecvt_error_category.cpp',
'operations.cpp',
Expand Down
2 changes: 1 addition & 1 deletion code/vendor/boost_locale.lua
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ return {

defines { 'BOOST_LOCALE_NO_STD_BACKEND', 'BOOST_LOCALE_NO_POSIX_BACKEND' }

files_project(os.getenv("BOOST_ROOT") .. '/libs/locale/src/')
files_project('../vendor/boost-submodules/boost-locale/src/')
{
'encoding/codepage.cpp',
'shared/date_time.cpp',
Expand Down
4 changes: 2 additions & 2 deletions code/vendor/boost_program_options.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ return {
language "C++"
kind 'StaticLib'

files_project(os.getenv("BOOST_ROOT") .. '/libs/program_options/src/')
files_project('../vendor/boost-submodules/boost-program-options/src/')
{
'cmdline.cpp',
'config_file.cpp',
Expand All @@ -18,7 +18,7 @@ return {
}

filter 'system:windows'
files_project(os.getenv("BOOST_ROOT") .. '/libs/program_options/src/')
files_project('../vendor/boost-submodules/boost-program-options/src/')
{
'winmain.cpp'
}
Expand Down
Loading

0 comments on commit 223e4bc

Please sign in to comment.