bldr 1.0.0

This commit is contained in:
Liam Waldron 2023-04-28 13:59:21 -04:00
parent 5f22f33d9c
commit ab928521f1
3 changed files with 111 additions and 4 deletions

89
tools/README.bldr Normal file
View File

@ -0,0 +1,89 @@
+------+
| bldr |
+------+
bldr is a program that builds binary packages from an Everest package. It is intened for system image development.
bldr is compatible with Everest packages. That being said, it's only recommended to build packages designated as bldr compatible.
+--------------+
| Installation |
+--------------+
Copy bldr to a convenient location:
(user)$ cp bldr PROJECT_DIR
Then, copy bldr.conf to either of the following locations:
/etc/bldr.conf
$HOME/.config/bldr.conf
PROJECT_DIR/bldr.conf
+-------+
| Usage |
+-------+
bldr [-h] [-v] [-b] PACKAGE
+-------------------+
| Building packages |
+-------------------+
(user)$ ./bldr -b /path/to/package
It is important to provide the full path.
bldr will compile the package, and install it to $BLDR_OUT_DIR/pkgs/PACKAGE_NAME.
$BLDR_OUT_DIR can be defined in bldr.conf.
After a package has been compiled, you can either import the package-agnostic installation script,
or write your own.
+---------------------------+
| Writing packages for bldr |
+---------------------------+
Everest packages only require slight modification in order to be compatible with bldr.
First, ensure the getsource() function looks similar to this:
getsource() {
command1
command2
cd ${SOURCES[1]}
}
The last command in this function is very important. It MUST be "cd ${SOURCES[1]}", otherwise
bldr will throw an error when a user attempts to build.
It is safe to assume most people using bldr will be cross compiling packages.
In this case, ensure the toolchain is being used. Toolchains will always be located
in $BLDR_OUT_DIR/toolchain.
When configuring a package for compilation, ensure the target triplet matches the
desired system profile. In the case of "x86-musl":
TARGET="x86_64-linux-musl"
ALWAYS install bldr packages to $BLDR_OUT_DIR/pkgs/PACKAGE_NAME
bldr packages must not support system functions.
+-----------+
| Copyright |
+-----------+
(C) 2023 Everest Linux
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program.
If not, see <https://www.gnu.org/licenses/>.

View File

@ -22,16 +22,27 @@ usage_small() {
load_config() {
if [ -f "/etc/bldr.conf" ]; then
source /etc/bldr.conf
elif [ -f "${HOME}/.config/bldr.conf"]; then
elif [ -f "${HOME}/.config/bldr.conf" ]; then
source ${HOME}/.config/bldr.conf
elif [ -f "$(pwd)/bldr.conf" ]; then
source $(pwd)/bldr.conf
else
printf "No valid bldr.conf found\n"
printf "Valid files are:\n"
printf "/etc/bldr.conf"
printf "${HOME}/.config/bldr.conf"
printf "$(pwd)/bldr.conf"
printf "/etc/bldr.conf\n"
printf "${HOME}/.config/bldr.conf\n"
printf "$(pwd)/bldr.conf\n"
exit 1
fi
}
check_for_toolchain() {
if [ -d "${TOOLCHAIN_PATH}" ]; then
printf "Toolchain found, adding to temporary PATH...\n"
PATH=${PATH}:${TOOLCHAIN_PATH}/bin
else
printf "Toolchain not found. Use the following command to download:\n"
printf "curl -O -J https://musl.cc/$(uname -m)-linux-musl-cross.tgz\n"
exit 1
fi
}
@ -79,6 +90,10 @@ case $1 in
;;
-b|--build)
load_config "$@"
check_for_toolchain "$@"
if [ "$?" != 0 ]; then
exit 1
fi
shift
check_if_input_is_blank "$@"
mkdir /tmp/bldr-workspace

View File

@ -10,6 +10,9 @@ export CFLAGS="-O2 -fstack-protector-strong -static -pie"
export CXXFLAGS="${CFLAGS}"
export LDFLAGS="-static"
# Path to Everest toolchain
export TOOLCHAIN_PATH="/home/arco/Projects/x86_64-linux-musl-toolchain"
#
# end bldr.conf
#