Compare commits

...

10 Commits

8 changed files with 135 additions and 28 deletions

View File

@ -1,5 +1,5 @@
SUBDIRS := $(wildcard */.) SUBDIRS := $(wildcard */.)
VERSION = 24.06 VERSION = 24.09
install: install:
@for dir in $(SUBDIRS) ; do \ @for dir in $(SUBDIRS) ; do \

View File

@ -80,6 +80,7 @@ if ! type "grub-mkrescue" > /dev/null; then
set_indent 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 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 "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 exit 1
fi fi
@ -199,7 +200,7 @@ rm "${tmpdir}/stager.sh"
info "Cleaning up and building initrd" info "Cleaning up and building initrd"
rm "${isoh}" rm "${isoh}"
pushd "$TMPDIR" > /dev/null pushd "${tmpdir}" > /dev/null
mkdir -p "${rootdir}/boot" mkdir -p "${rootdir}/boot"
find . | cpio --quiet -H newc -o | xz -T0 --check=crc32 > "${rootdir}/boot/initrd.img" find . | cpio --quiet -H newc -o | xz -T0 --check=crc32 > "${rootdir}/boot/initrd.img"
check_ret "Failed to build initrd" check_ret "Failed to build initrd"

View File

@ -42,7 +42,11 @@ get_fn_url() {
get_file() { get_file() {
if [[ "${1}" == "https://"* || "${1}" == "http://"* || "${1}" == "ftp://"* ]] if [[ "${1}" == "https://"* || "${1}" == "http://"* || "${1}" == "ftp://"* ]]
then 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 $? return $?
elif [ -f "${pkgpath}/${1}" ]; then elif [ -f "${pkgpath}/${1}" ]; then
cp "${pkgpath}/${1}" . cp "${pkgpath}/${1}" .
@ -89,6 +93,7 @@ help_cmd() {
echo_color " $BOLD--no-depend$RESET: don't check depends" 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-stdout$RESET: disable stdout for PACKAGE() function"
echo_color " $BOLD--no-cache$RESET: don't check cache" 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--no-opts$RESET: don't show/list options"
echo_color " $BOLD--cores$RESET: how many cores to use for the build" echo_color " $BOLD--cores$RESET: how many cores to use for the build"
echo_color " $BOLD--out$RESET: directory for the output archive" echo_color " $BOLD--out$RESET: directory for the output archive"
@ -154,6 +159,7 @@ check_depends() {
OPT_NO_DEPEND=0 # checking depends is ENABLED OPT_NO_DEPEND=0 # checking depends is ENABLED
OPT_NO_STDOUT=0 # PACKAGE() function output is ENABLED OPT_NO_STDOUT=0 # PACKAGE() function output is ENABLED
OPT_NO_CACHE=0 # cache 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_OPTS=0 # showing/listing options is ENABLED
OPT_CORES=$(nproc) # use ALL CPU cores OPT_CORES=$(nproc) # use ALL CPU cores
OPT_OUT="DEFAULT" # use the package dist directory for output OPT_OUT="DEFAULT" # use the package dist directory for output
@ -171,6 +177,8 @@ for arg in "$@"; do
OPT_NO_STDOUT=1 ;; OPT_NO_STDOUT=1 ;;
"--no-cache") "--no-cache")
OPT_NO_CACHE=1 ;; OPT_NO_CACHE=1 ;;
"--insecure")
OPT_INSECURE=1 ;;
"--no-opts") "--no-opts")
OPT_NO_OPTS=1 ;; OPT_NO_OPTS=1 ;;
"--cores"*) "--cores"*)
@ -223,6 +231,7 @@ if [ $OPT_NO_OPTS -eq 0 ]; then
print " $BOLD NO_DEPEND = $(itoyn $OPT_NO_DEPEND)" print " $BOLD NO_DEPEND = $(itoyn $OPT_NO_DEPEND)"
print " $BOLD NO_SDTOUT = $(itoyn $OPT_NO_STDOUT)" print " $BOLD NO_SDTOUT = $(itoyn $OPT_NO_STDOUT)"
print " $BOLD NO_CACHE = $(itoyn $OPT_NO_CACHE)" 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_OPTS = $(itoyn $OPT_NO_OPTS)"
print " $BOLD CORES = ${OPT_CORES}" print " $BOLD CORES = ${OPT_CORES}"
print " $BOLD OUT = ${OPT_OUT}" print " $BOLD OUT = ${OPT_OUT}"
@ -368,6 +377,8 @@ info "Running the build function"
export CC="gcc" export CC="gcc"
export CXX="g++" export CXX="g++"
export CFLAGS="-march=x86-64 -mtune=generic -O2" 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 ROOTDIR="${rootpath}"
export MAKEFLAGS="-j${OPT_CORES}" export MAKEFLAGS="-j${OPT_CORES}"
export MAKEOPTS="-j${OPT_CORES}" export MAKEOPTS="-j${OPT_CORES}"
@ -387,6 +398,7 @@ fi
unset XORG_CONFIG XORG_PREFIX unset XORG_CONFIG XORG_PREFIX
unset MAKEOPTS MAKEFLAGS CXX unset MAKEOPTS MAKEFLAGS CXX
unset CPPFLAGS CXXFLAGS
unset CFLAGS ROOTDIR CC unset CFLAGS ROOTDIR CC
if [ "$SECONDS" != "0" ]; then if [ "$SECONDS" != "0" ]; then
@ -409,6 +421,11 @@ mkdir -p "${distpath}"
clean_dist clean_dist
# build the files archive # 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 - 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)" check_ret "(1/6) Failed to create the files archive (files.tar.gz)"
success "(1/6) Created 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 # create the install script
if type INSTALL &>/dev/null; then 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)" check_ret "(4/6) Failed to create the install script (INSTALL)"
fi fi
success "(4/6) Created the install script (INSTALL)" success "(4/6) Created the install script (INSTALL)"

View File

@ -1,7 +1,7 @@
PREFIX = /usr PREFIX = /usr
install: install:
install -Dm755 "mp-check.sh" $(DESTDIR)/$(PREFIX)/bin/mp-check install -Dm755 "main.sh" $(DESTDIR)/$(PREFIX)/bin/mp-check
uninstall: uninstall:
rm $(DESTDIR)/$(PREFIX)/bin/mp-check rm $(DESTDIR)/$(PREFIX)/bin/mp-check

View File

@ -34,7 +34,7 @@ fi
## global vars ## ## global vars ##
################# #################
warnc=0 warnc=0
tmpdir="/tmp/.mp-clean" tmpdir="/tmp/.mp-check"
required_files=( required_files=(
"DATA" "DATA"
"HASHES" "HASHES"
@ -54,6 +54,7 @@ root_dirs=(
"usr" "usr"
"var" "var"
"opt" "opt"
"run"
) )
bad_vars=( bad_vars=(
'$VERSION' '$VERSION'
@ -173,6 +174,26 @@ check_archive(){
fail_check fail_check
fi fi
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 done
name="$(head -n1 "${tmpdir}/DATA" | sed 's/\[//g')" name="$(head -n1 "${tmpdir}/DATA" | sed 's/\[//g')"
@ -183,6 +204,24 @@ check_archive(){
fail_check fail_check
fi 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" filename="${name}_${version}.mpf"
info "Checking HASHES file" info "Checking HASHES file"
@ -207,8 +246,15 @@ check_archive(){
done < "${tmpdir}/HASHES" done < "${tmpdir}/HASHES"
info "Checking files.tar.gz archive" info "Checking files.tar.gz archive"
filec=0
while read p; do while read p; do
if [ -z "${p}" ]; then
continue
fi
filec=$((filec + 1))
if [ "${p:0:1}" == "." ] || [ "${p:0:1}" == "/" ]; then if [ "${p:0:1}" == "." ] || [ "${p:0:1}" == "/" ]; then
error "Root file location is invalid (${p:0:1})" error "Root file location is invalid (${p:0:1})"
fail_check fail_check
@ -230,6 +276,11 @@ check_archive(){
fi fi
done < <(tar tf "${tmpdir}/files.tar.gz") 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" info "Checking INSTALL file"
if [ -f "${tmpdir}/INSTALL" ] && ! grep -q . "${tmpdir}/INSTALL"; then if [ -f "${tmpdir}/INSTALL" ] && ! grep -q . "${tmpdir}/INSTALL"; then
@ -242,6 +293,10 @@ check_archive(){
add_warning "Changes file is empty" add_warning "Changes file is empty"
fi 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" info "Checking archive name"
archivefile="$(basename "${archivepath}")" archivefile="$(basename "${archivepath}")"
@ -312,6 +367,12 @@ check_source(){
if ! grep -q . "${sourcepath}/changes.md"; then if ! grep -q . "${sourcepath}/changes.md"; then
add_warning "Changes file is empty" add_warning "Changes file is empty"
fi 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
} }
################# #################

View File

@ -78,17 +78,24 @@ fi
# source and store every package # source and store every package
files=("INFO" "LIST") files=("INFO" "LIST")
pc="$(ls -1q "${srcpath}" | wc -l)" pc="$(ls -1q "${srcpath}" | wc -l)"
pi=1 pi=0
info "Sourcing all the packages" info "Sourcing all the packages"
set_indent set_indent
for pkg in "${srcpath}/"*; do for pkg in "${srcpath}/"*; do
package=$(basename "${pkg}") pkg_name=$(basename "${pkg}")
info "(${pi}/${pc}) Sourcing \"${package}\"" 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" 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_pkg_vars
check_ret check_ret
@ -97,7 +104,6 @@ for pkg in "${srcpath}/"*; do
files+=("${NAME}_${VERSION}.mpf.sig") files+=("${NAME}_${VERSION}.mpf.sig")
clean_pkg_vars clean_pkg_vars
pi=$((pi+1))
done done
success "Completed" success "Completed"

View File

@ -42,6 +42,7 @@ help_cmd() {
echo_color " $BOLD--no-depend$RESET: don't check depends" 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-stdout$RESET: disable stdout for build() function"
echo_color " $BOLD--no-cache$RESET: don't use cache" 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-opts$RESET: don't show/list options"
echo_color " $BOLD--no-sign$RESET: don't sign build packages" echo_color " $BOLD--no-sign$RESET: don't sign build packages"
echo_color " $BOLD--cores$RESET: how many cores to use for the build" echo_color " $BOLD--cores$RESET: how many cores to use for the build"
@ -74,17 +75,10 @@ list_to_str(){
mp_build_opts(){ mp_build_opts(){
local opts=("${1}" "--no-opts" "--out='${2}'") local opts=("${1}" "--no-opts" "--out='${2}'")
if [ $OPT_NO_DEPEND -eq 1 ]; then [ $OPT_NO_DEPEND -eq 1 ] && opts+=("--no-depend")
opts+=("--no-depend") [ $OPT_NO_STDOUT -eq 1 ] && opts+=("--no-stdout")
fi [ $OPT_INSECURE -eq 1 ] && opts+=("--insecure")
[ $OPT_NO_CACHE -eq 1 ] && opts+=("--no-cache")
if [ $OPT_NO_STDOUT -eq 1 ]; then
opts+=("--no-stdout")
fi
if [ $OPT_NO_CACHE -eq 1 ]; then
opts+=("--no-cache")
fi
mp-build ${opts[@]} mp-build ${opts[@]}
return "$?" 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_DEPEND=0 # checking depends is ENABLED
OPT_NO_STDOUT=0 # build() function output is ENABLED OPT_NO_STDOUT=0 # build() function output is ENABLED
OPT_NO_CACHE=0 # cache 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_OPTS=0 # showing/listing options is ENABLED
OPT_NO_SIGN=0 # sign all the built packages OPT_NO_SIGN=0 # sign all the built packages
OPT_CORES=$(nproc) # use ALL CPU cores OPT_CORES=$(nproc) # use ALL CPU cores
@ -118,6 +113,8 @@ for arg in "$@"; do
OPT_NO_STDOUT=1 ;; OPT_NO_STDOUT=1 ;;
"--no-cache") "--no-cache")
OPT_NO_CACHE=1 ;; OPT_NO_CACHE=1 ;;
"--insecure")
OPT_INSECURE=1 ;;
"--no-opts") "--no-opts")
OPT_NO_OPTS=1 ;; OPT_NO_OPTS=1 ;;
"--no-sign") "--no-sign")
@ -162,6 +159,7 @@ if [ $OPT_NO_OPTS -eq 0 ]; then
print " $BOLD NO_DEPEND = $(itoyn $OPT_NO_DEPEND)" print " $BOLD NO_DEPEND = $(itoyn $OPT_NO_DEPEND)"
print " $BOLD NO_SDTOUT = $(itoyn $OPT_NO_STDOUT)" print " $BOLD NO_SDTOUT = $(itoyn $OPT_NO_STDOUT)"
print " $BOLD NO_CACHE = $(itoyn $OPT_NO_CACHE)" 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_OPTS = $(itoyn $OPT_NO_OPTS)"
print " $BOLD NO_SIGN = $(itoyn $OPT_NO_SIGN)" print " $BOLD NO_SIGN = $(itoyn $OPT_NO_SIGN)"
print " $BOLD CORES = $OPT_CORES" print " $BOLD CORES = $OPT_CORES"
@ -205,16 +203,22 @@ fi
# build every package # build every package
pc=${#OPT_PACKAGES[@]} pc=${#OPT_PACKAGES[@]}
pi=1 pi=0
for pkg_name in "${OPT_PACKAGES[@]}"; do for pkg_name in "${OPT_PACKAGES[@]}"; do
pkg="${srcpath}/${pkg_name}" pkg="${srcpath}/${pkg_name}"
pi=$((pi+1))
if [ ! -d "${pkg}" ]; then if [ ! -d "${pkg}" ]; then
error "Package not found: \"${pkg_name}\"" error "Package not found: \"${pkg_name}\""
exit 1 exit 1
fi fi
if should_ignore "${pkg_name}"; then
info "(${pi}/${pc}) Ignoring \"${pkg_name}\""
continue
fi
info "(${pi}/${pc}) Building \"${pkg_name}\"" info "(${pi}/${pc}) Building \"${pkg_name}\""
if [ $OPT_SKIP_FAIL -eq 1 ]; then if [ $OPT_SKIP_FAIL -eq 1 ]; then
@ -239,7 +243,6 @@ for pkg_name in "${OPT_PACKAGES[@]}"; do
fi fi
success "(${pi}/${pc}) Build was successful for \"${pkg_name}\"" success "(${pi}/${pc}) Build was successful for \"${pkg_name}\""
pi=$((pi+1))
done done
success "Completed all the package builds" success "Completed all the package builds"

View File

@ -228,5 +228,24 @@ check_pkg_vars() {
return 1 ;; return 1 ;;
esac 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 return 0
} }
# check if a package should be ignored
should_ignore(){
for i in "${IGNORE[@]}"; do
[ "${i}" == "${1}" ] && return 0
done
return 1
}