Compare commits
10 Commits
dd18ae23de
...
7b979b45fe
Author | SHA1 | Date | |
---|---|---|---|
7b979b45fe | |||
ec9781a5b6 | |||
4cee462e70 | |||
a5790debc4 | |||
99b686e2b7 | |||
57c898c8d4 | |||
9fc56f5dc8 | |||
7b7b386dab | |||
98bb94bec1 | |||
1b63c6e77a |
2
Makefile
2
Makefile
@ -1,5 +1,5 @@
|
||||
SUBDIRS := $(wildcard */.)
|
||||
VERSION = 24.06
|
||||
VERSION = 24.09
|
||||
|
||||
install:
|
||||
@for dir in $(SUBDIRS) ; do \
|
||||
|
@ -80,6 +80,7 @@ if ! type "grub-mkrescue" > /dev/null; then
|
||||
set_indent
|
||||
warn "If you want to create UEFI ISO files make sure you install x64 GRUB or grub-efi"
|
||||
warn "If you want to create BIOS ISO files make sure you install x86 GRUB or grub-bios"
|
||||
warn "After installing GRUB, don't forget to install libisoburn as well"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -199,7 +200,7 @@ rm "${tmpdir}/stager.sh"
|
||||
|
||||
info "Cleaning up and building initrd"
|
||||
rm "${isoh}"
|
||||
pushd "$TMPDIR" > /dev/null
|
||||
pushd "${tmpdir}" > /dev/null
|
||||
mkdir -p "${rootdir}/boot"
|
||||
find . | cpio --quiet -H newc -o | xz -T0 --check=crc32 > "${rootdir}/boot/initrd.img"
|
||||
check_ret "Failed to build initrd"
|
||||
|
@ -42,7 +42,11 @@ get_fn_url() {
|
||||
get_file() {
|
||||
if [[ "${1}" == "https://"* || "${1}" == "http://"* || "${1}" == "ftp://"* ]]
|
||||
then
|
||||
curl "${1}" --progress-bar -OL
|
||||
if [ $OPT_INSECURE -eq 1 ]; then
|
||||
curl "${1}" --insecure --progress-bar -OL
|
||||
else
|
||||
curl "${1}" --progress-bar -OL
|
||||
fi
|
||||
return $?
|
||||
elif [ -f "${pkgpath}/${1}" ]; then
|
||||
cp "${pkgpath}/${1}" .
|
||||
@ -89,6 +93,7 @@ help_cmd() {
|
||||
echo_color " $BOLD--no-depend$RESET: don't check depends"
|
||||
echo_color " $BOLD--no-stdout$RESET: disable stdout for PACKAGE() function"
|
||||
echo_color " $BOLD--no-cache$RESET: don't check cache"
|
||||
echo_color " $BOLD--insecure$RESET: allow insecure curl downloads"
|
||||
echo_color " $BOLD--no-opts$RESET: don't show/list options"
|
||||
echo_color " $BOLD--cores$RESET: how many cores to use for the build"
|
||||
echo_color " $BOLD--out$RESET: directory for the output archive"
|
||||
@ -105,7 +110,7 @@ clean_dist() {
|
||||
rm -f "${distpath}/files.tar.gz"
|
||||
}
|
||||
|
||||
# install a list of packages with matt
|
||||
# install a list of packages with matt
|
||||
matt_install(){
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
if type doas > /dev/null; then
|
||||
@ -117,7 +122,7 @@ matt_install(){
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
$DOAS matt install --yes --skip --ignore-none $@
|
||||
return $?
|
||||
}
|
||||
@ -154,6 +159,7 @@ check_depends() {
|
||||
OPT_NO_DEPEND=0 # checking depends is ENABLED
|
||||
OPT_NO_STDOUT=0 # PACKAGE() function output is ENABLED
|
||||
OPT_NO_CACHE=0 # cache is ENABLED
|
||||
OPT_INSECURE=0 # insecure curl downloads are DISABLED
|
||||
OPT_NO_OPTS=0 # showing/listing options is ENABLED
|
||||
OPT_CORES=$(nproc) # use ALL CPU cores
|
||||
OPT_OUT="DEFAULT" # use the package dist directory for output
|
||||
@ -171,6 +177,8 @@ for arg in "$@"; do
|
||||
OPT_NO_STDOUT=1 ;;
|
||||
"--no-cache")
|
||||
OPT_NO_CACHE=1 ;;
|
||||
"--insecure")
|
||||
OPT_INSECURE=1 ;;
|
||||
"--no-opts")
|
||||
OPT_NO_OPTS=1 ;;
|
||||
"--cores"*)
|
||||
@ -223,6 +231,7 @@ if [ $OPT_NO_OPTS -eq 0 ]; then
|
||||
print " $BOLD NO_DEPEND = $(itoyn $OPT_NO_DEPEND)"
|
||||
print " $BOLD NO_SDTOUT = $(itoyn $OPT_NO_STDOUT)"
|
||||
print " $BOLD NO_CACHE = $(itoyn $OPT_NO_CACHE)"
|
||||
print " $BOLD INSECURE = $(itoyn $OPT_INSECURE)"
|
||||
print " $BOLD NO_OPTS = $(itoyn $OPT_NO_OPTS)"
|
||||
print " $BOLD CORES = ${OPT_CORES}"
|
||||
print " $BOLD OUT = ${OPT_OUT}"
|
||||
@ -368,6 +377,8 @@ info "Running the build function"
|
||||
export CC="gcc"
|
||||
export CXX="g++"
|
||||
export CFLAGS="-march=x86-64 -mtune=generic -O2"
|
||||
export CPPFLAGS="-march=x86-64 -mtune=generic -O2"
|
||||
export CXXFLAGS="-march=x86-64 -mtune=generic -O2"
|
||||
export ROOTDIR="${rootpath}"
|
||||
export MAKEFLAGS="-j${OPT_CORES}"
|
||||
export MAKEOPTS="-j${OPT_CORES}"
|
||||
@ -387,6 +398,7 @@ fi
|
||||
|
||||
unset XORG_CONFIG XORG_PREFIX
|
||||
unset MAKEOPTS MAKEFLAGS CXX
|
||||
unset CPPFLAGS CXXFLAGS
|
||||
unset CFLAGS ROOTDIR CC
|
||||
|
||||
if [ "$SECONDS" != "0" ]; then
|
||||
@ -409,6 +421,11 @@ mkdir -p "${distpath}"
|
||||
clean_dist
|
||||
|
||||
# build the files archive
|
||||
if [ -z "$(ls -A)" ]; then
|
||||
error "Root directory is empty, did something went wrong during build?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
find . -printf "%P\n" | fakeroot tar -czf "${distpath}/files.tar.gz" --no-recursion -T -
|
||||
check_ret "(1/6) Failed to create the files archive (files.tar.gz)"
|
||||
success "(1/6) Created the files archive (files.tar.gz)"
|
||||
@ -438,7 +455,7 @@ success "(3/6) Created the changes file (CHANGES)"
|
||||
|
||||
# create the install script
|
||||
if type INSTALL &>/dev/null; then
|
||||
echo "$(type INSTALL | head -n-1 | tail -n-2 | sed 's/ //')" > "${distpath}/INSTALL"
|
||||
echo "$(type INSTALL | head -n-1 | sed '1,3d' | sed 's/ //')" > "${distpath}/INSTALL"
|
||||
check_ret "(4/6) Failed to create the install script (INSTALL)"
|
||||
fi
|
||||
success "(4/6) Created the install script (INSTALL)"
|
||||
|
@ -1,7 +1,7 @@
|
||||
PREFIX = /usr
|
||||
|
||||
install:
|
||||
install -Dm755 "mp-check.sh" $(DESTDIR)/$(PREFIX)/bin/mp-check
|
||||
install -Dm755 "main.sh" $(DESTDIR)/$(PREFIX)/bin/mp-check
|
||||
|
||||
uninstall:
|
||||
rm $(DESTDIR)/$(PREFIX)/bin/mp-check
|
||||
|
@ -34,7 +34,7 @@ fi
|
||||
## global vars ##
|
||||
#################
|
||||
warnc=0
|
||||
tmpdir="/tmp/.mp-clean"
|
||||
tmpdir="/tmp/.mp-check"
|
||||
required_files=(
|
||||
"DATA"
|
||||
"HASHES"
|
||||
@ -54,6 +54,7 @@ root_dirs=(
|
||||
"usr"
|
||||
"var"
|
||||
"opt"
|
||||
"run"
|
||||
)
|
||||
bad_vars=(
|
||||
'$VERSION'
|
||||
@ -173,6 +174,26 @@ check_archive(){
|
||||
fail_check
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${k}" == "size" ]; then
|
||||
if [ ! -z "${line_1}" ]; then
|
||||
size="$(echo "${line_1}" | sed 's/size= //g')"
|
||||
size="$(echo "${size}" | sed 's/size=//g')"
|
||||
else
|
||||
size="$(echo "${line_2}" | sed 's/size = //g')"
|
||||
size="$(echo "${size}" | sed 's/size =//g')"
|
||||
fi
|
||||
|
||||
if [ -z "${size}" ]; then
|
||||
error "Failed to obtain package size information"
|
||||
fail_check
|
||||
fi
|
||||
|
||||
if [ "${size}" == "0" ]; then
|
||||
error "Package size information is set as 0, is the package empty?"
|
||||
fail_check
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
name="$(head -n1 "${tmpdir}/DATA" | sed 's/\[//g')"
|
||||
@ -183,6 +204,24 @@ check_archive(){
|
||||
fail_check
|
||||
fi
|
||||
|
||||
case "${name}" in
|
||||
*_*)
|
||||
error "Package name contains an invalid character: \"_\""
|
||||
fail_check ;;
|
||||
*" "*)
|
||||
error "Package name contains an invalid character: \" \""
|
||||
fail_check ;;
|
||||
esac
|
||||
|
||||
case "${version}" in
|
||||
*_*)
|
||||
error "Package version contains an invalid character: \"_\""
|
||||
fail_check ;;
|
||||
*" "*)
|
||||
error "Package version contains an invalid character: \" \""
|
||||
fail_check ;;
|
||||
esac
|
||||
|
||||
filename="${name}_${version}.mpf"
|
||||
|
||||
info "Checking HASHES file"
|
||||
@ -207,8 +246,15 @@ check_archive(){
|
||||
done < "${tmpdir}/HASHES"
|
||||
|
||||
info "Checking files.tar.gz archive"
|
||||
filec=0
|
||||
|
||||
while read p; do
|
||||
if [ -z "${p}" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
filec=$((filec + 1))
|
||||
|
||||
if [ "${p:0:1}" == "." ] || [ "${p:0:1}" == "/" ]; then
|
||||
error "Root file location is invalid (${p:0:1})"
|
||||
fail_check
|
||||
@ -230,6 +276,11 @@ check_archive(){
|
||||
fi
|
||||
done < <(tar tf "${tmpdir}/files.tar.gz")
|
||||
|
||||
if [ "${filec}" == "0" ]; then
|
||||
error "Package file archive is empty (no files)"
|
||||
fail_check
|
||||
fi
|
||||
|
||||
info "Checking INSTALL file"
|
||||
|
||||
if [ -f "${tmpdir}/INSTALL" ] && ! grep -q . "${tmpdir}/INSTALL"; then
|
||||
@ -242,6 +293,10 @@ check_archive(){
|
||||
add_warning "Changes file is empty"
|
||||
fi
|
||||
|
||||
if ! grep "${version}" "${tmpdir}/CHANGES" &> /dev/null; then
|
||||
add_warning "Changes potentially does not have an entry for the current version"
|
||||
fi
|
||||
|
||||
info "Checking archive name"
|
||||
|
||||
archivefile="$(basename "${archivepath}")"
|
||||
@ -312,6 +367,12 @@ check_source(){
|
||||
if ! grep -q . "${sourcepath}/changes.md"; then
|
||||
add_warning "Changes file is empty"
|
||||
fi
|
||||
|
||||
if ! grep "${VERSION}" "${sourcepath}/changes.md" &> /dev/null; then
|
||||
add_warning "Changes potentially does not have an entry for the current version"
|
||||
fi
|
||||
|
||||
clean_pkg_vars
|
||||
}
|
||||
|
||||
#################
|
@ -75,29 +75,35 @@ if [ ! -d "${distpath}" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# source and store every package
|
||||
# source and store every package
|
||||
files=("INFO" "LIST")
|
||||
pc="$(ls -1q "${srcpath}" | wc -l)"
|
||||
pi=1
|
||||
pi=0
|
||||
|
||||
info "Sourcing all the packages"
|
||||
set_indent
|
||||
|
||||
for pkg in "${srcpath}/"*; do
|
||||
package=$(basename "${pkg}")
|
||||
info "(${pi}/${pc}) Sourcing \"${package}\""
|
||||
pkg_name=$(basename "${pkg}")
|
||||
pi=$((pi+1))
|
||||
|
||||
if should_ignore "${pkg_name}"; then
|
||||
info "(${pi}/${pc}) Ignoring \"${pkg_name}\""
|
||||
continue
|
||||
fi
|
||||
|
||||
info "(${pi}/${pc}) Sourcing \"${pkg_name}\""
|
||||
|
||||
source "${pkg}/pkg.sh"
|
||||
check_ret "(${pi}/${pc}) Failed to import the source script for \"${package}\""
|
||||
check_ret "(${pi}/${pc}) Failed to import the source script for \"${pkg_name}\""
|
||||
|
||||
check_pkg_vars
|
||||
check_ret
|
||||
|
||||
|
||||
files+=("${NAME}_${VERSION}.mpf")
|
||||
files+=("${NAME}_${VERSION}.mpf.sig")
|
||||
|
||||
clean_pkg_vars
|
||||
pi=$((pi+1))
|
||||
done
|
||||
|
||||
success "Completed"
|
||||
|
@ -42,6 +42,7 @@ help_cmd() {
|
||||
echo_color " $BOLD--no-depend$RESET: don't check depends"
|
||||
echo_color " $BOLD--no-stdout$RESET: disable stdout for build() function"
|
||||
echo_color " $BOLD--no-cache$RESET: don't use cache"
|
||||
echo_color " $BOLD--insecure$RESET: allow insecure curl downloads"
|
||||
echo_color " $BOLD--no-opts$RESET: don't show/list options"
|
||||
echo_color " $BOLD--no-sign$RESET: don't sign build packages"
|
||||
echo_color " $BOLD--cores$RESET: how many cores to use for the build"
|
||||
@ -74,17 +75,10 @@ list_to_str(){
|
||||
mp_build_opts(){
|
||||
local opts=("${1}" "--no-opts" "--out='${2}'")
|
||||
|
||||
if [ $OPT_NO_DEPEND -eq 1 ]; then
|
||||
opts+=("--no-depend")
|
||||
fi
|
||||
|
||||
if [ $OPT_NO_STDOUT -eq 1 ]; then
|
||||
opts+=("--no-stdout")
|
||||
fi
|
||||
|
||||
if [ $OPT_NO_CACHE -eq 1 ]; then
|
||||
opts+=("--no-cache")
|
||||
fi
|
||||
[ $OPT_NO_DEPEND -eq 1 ] && opts+=("--no-depend")
|
||||
[ $OPT_NO_STDOUT -eq 1 ] && opts+=("--no-stdout")
|
||||
[ $OPT_INSECURE -eq 1 ] && opts+=("--insecure")
|
||||
[ $OPT_NO_CACHE -eq 1 ] && opts+=("--no-cache")
|
||||
|
||||
mp-build ${opts[@]}
|
||||
return "$?"
|
||||
@ -97,6 +91,7 @@ OPT_SKIP_FAIL=0 # stop build when a package build fails
|
||||
OPT_NO_DEPEND=0 # checking depends is ENABLED
|
||||
OPT_NO_STDOUT=0 # build() function output is ENABLED
|
||||
OPT_NO_CACHE=0 # cache is ENABLED
|
||||
OPT_INSECURE=0 # insecure curl downloads are DISABLED
|
||||
OPT_NO_OPTS=0 # showing/listing options is ENABLED
|
||||
OPT_NO_SIGN=0 # sign all the built packages
|
||||
OPT_CORES=$(nproc) # use ALL CPU cores
|
||||
@ -118,6 +113,8 @@ for arg in "$@"; do
|
||||
OPT_NO_STDOUT=1 ;;
|
||||
"--no-cache")
|
||||
OPT_NO_CACHE=1 ;;
|
||||
"--insecure")
|
||||
OPT_INSECURE=1 ;;
|
||||
"--no-opts")
|
||||
OPT_NO_OPTS=1 ;;
|
||||
"--no-sign")
|
||||
@ -162,6 +159,7 @@ if [ $OPT_NO_OPTS -eq 0 ]; then
|
||||
print " $BOLD NO_DEPEND = $(itoyn $OPT_NO_DEPEND)"
|
||||
print " $BOLD NO_SDTOUT = $(itoyn $OPT_NO_STDOUT)"
|
||||
print " $BOLD NO_CACHE = $(itoyn $OPT_NO_CACHE)"
|
||||
print " $BOLD INSECURE = $(itoyn $OPT_INSECURE)"
|
||||
print " $BOLD NO_OPTS = $(itoyn $OPT_NO_OPTS)"
|
||||
print " $BOLD NO_SIGN = $(itoyn $OPT_NO_SIGN)"
|
||||
print " $BOLD CORES = $OPT_CORES"
|
||||
@ -205,16 +203,22 @@ fi
|
||||
|
||||
# build every package
|
||||
pc=${#OPT_PACKAGES[@]}
|
||||
pi=1
|
||||
pi=0
|
||||
|
||||
for pkg_name in "${OPT_PACKAGES[@]}"; do
|
||||
pkg="${srcpath}/${pkg_name}"
|
||||
pi=$((pi+1))
|
||||
|
||||
if [ ! -d "${pkg}" ]; then
|
||||
error "Package not found: \"${pkg_name}\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if should_ignore "${pkg_name}"; then
|
||||
info "(${pi}/${pc}) Ignoring \"${pkg_name}\""
|
||||
continue
|
||||
fi
|
||||
|
||||
info "(${pi}/${pc}) Building \"${pkg_name}\""
|
||||
|
||||
if [ $OPT_SKIP_FAIL -eq 1 ]; then
|
||||
@ -239,7 +243,6 @@ for pkg_name in "${OPT_PACKAGES[@]}"; do
|
||||
fi
|
||||
|
||||
success "(${pi}/${pc}) Build was successful for \"${pkg_name}\""
|
||||
pi=$((pi+1))
|
||||
done
|
||||
|
||||
success "Completed all the package builds"
|
||||
|
@ -228,5 +228,24 @@ check_pkg_vars() {
|
||||
return 1 ;;
|
||||
esac
|
||||
|
||||
case "${VERSION}" in
|
||||
*_*)
|
||||
error "Package version contains an invalid character: \"_\""
|
||||
unset_indent
|
||||
return 1 ;;
|
||||
*" "*)
|
||||
error "Package version contains an invalid character: \" \""
|
||||
unset_indent
|
||||
return 1 ;;
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# check if a package should be ignored
|
||||
should_ignore(){
|
||||
for i in "${IGNORE[@]}"; do
|
||||
[ "${i}" == "${1}" ] && return 0
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user