diff --git a/configuration b/configuration
new file mode 100644
index 0000000..f52aff3
--- /dev/null
+++ b/configuration
@@ -0,0 +1,157 @@
+# Generated by Kconfiglib (https://github.com/ulfalizer/Kconfiglib)
+HAVE_NPROC=y
+
+#
+# BOOK Settings
+#
+# BOOK_LFS is not set
+BOOK_LFS_SYSD=y
+# BOOK_BLFS is not set
+INITSYS="systemd"
+RUN_ME="./jhalfs run"
+BRANCH=y
+# WORKING_COPY is not set
+COMMIT="trunk"
+LFS_MULTILIB_NO=y
+# LFS_MULTILIB_I686 is not set
+# LFS_MULTILIB_X32 is not set
+# LFS_MULTILIB_ALL is not set
+MULTILIB="default"
+BUILD_CHROOT=y
+# BUILD_BOOT is not set
+METHOD="chroot"
+BLFS_TOOL=y
+
+#
+# blfs-tool dependencies
+#
+DEP_LIBXML=y
+DEP_LIBXSLT=y
+DEP_DBXML=y
+DEP_LYNX=y
+DEP_SUDO=y
+DEP_WGET=y
+DEP_GPM=y
+DEP_GIT=y
+# end of blfs-tool dependencies
+
+BLFS_BRANCH=y
+# BLFS_WORKING_COPY is not set
+BLFS_COMMIT="trunk"
+BLFS_ROOT="/blfs_root"
+BLFS_XML="blfs-xml"
+LFS_XML="lfs-xml"
+# CUSTOM_TOOLS is not set
+TRACKING_DIR="/var/lib/jhalfs/BLFS"
+# end of BOOK Settings
+
+#
+# General Settings
+#
+LUSER="lfs"
+LGROUP="lfs"
+LHOME="/home"
+BUILDDIR="xxx"
+GETPKG=y
+SRC_ARCHIVE="$SRC_ARCHIVE"
+RETRYSRCDOWNLOAD=y
+RETRYDOWNLOADCNT=20
+DOWNLOADTIMEOUT=30
+# RUNMAKE is not set
+# CLEAN is not set
+# end of General Settings
+
+#
+# Build Settings
+#
+
+#
+# Parallelism settings
+#
+ALL_CORES=y
+# REALSBU is not set
+# end of Parallelism settings
+
+# CONFIG_TESTS is not set
+TEST=0
+# PKGMNGT is not set
+# INSTALL_LOG is not set
+STRIP=y
+NO_PROGRESS_BAR=y
+# end of Build Settings
+
+#
+# System configuration
+#
+HAVE_FSTAB=y
+FSTAB="xxx"
+CONFIG_BUILD_KERNEL=y
+CONFIG="xxx"
+# NCURSES5 is not set
+TIMEZONE="Europe/Budapest"
+LANG="hu_HU.UTF-8"
+FULL_LOCALE=y
+# PAGE_LETTER is not set
+PAGE_A4=y
+PAGE="A4"
+HOSTNAME="PKR-LINUX"
+
+#
+# Network configuration
+#
+INTERFACE="eth0"
+IP_ADDR="192.168.1.82"
+GATEWAY="192.168.1.1"
+PREFIX="24"
+BROADCAST="192.168.1.255"
+DOMAIN="local"
+DNS1="192.168.1.1"
+DNS2="8.8.8.8"
+# end of Network configuration
+
+#
+# Console configuration
+#
+FONT="lat2-16"
+KEYMAP="us"
+# LOCAL is not set
+# end of Console configuration
+# end of System configuration
+
+#
+# Advanced Features
+#
+CONFIG_OPTIMIZE=y
+
+#
+# Optimization settings
+#
+OPT_1=y
+# OPT_2 is not set
+# end of Optimization settings
+
+OPTIMIZE=1
+# REPORT is not set
+# SAVE_CH5 is not set
+# COMPARE is not set
+
+#
+# Internal Settings (WARNING: for jhalfs developers only)
+#
+SCRIPT_ROOT="jhalfs"
+JHALFSDIR="$BUILDDIR/$SCRIPT_ROOT"
+LOGDIRBASE="logs"
+LOGDIR="$JHALFSDIR/$LOGDIRBASE"
+TESTLOGDIRBASE="test-logs"
+TESTLOGDIR="$JHALFSDIR/$TESTLOGDIRBASE"
+FILELOGDIRBASE="installed-files"
+FILELOGDIR="$JHALFSDIR/$FILELOGDIRBASE"
+ICALOGDIR="$LOGDIR/ICA"
+MKFILE="$JHALFSDIR/Makefile"
+XSL="lfs.xsl"
+PKG_LST="unpacked"
+DEL_LA_FILES=y
+# end of Internal Settings (WARNING: for jhalfs developers only)
+# end of Advanced Features
+
+# REBUILD_MAKEFILE is not set
diff --git a/lfsSetup.sh b/lfsSetup.sh
new file mode 100755
index 0000000..f9edd26
--- /dev/null
+++ b/lfsSetup.sh
@@ -0,0 +1,139 @@
+#!/bin/bash
+# Script that setups LFS installer
+
+set -e
+
+# Helper function to pach the packages.ent
+# Parameters are in this order: major, minor, patch, md5 and full path to packages.ent
+patchKernelVersion()
+{
+ if [ ! -f "$5" ] ; then
+ echo "The packages.ent file is not exist or not defined." >&2
+ echo "File: $5"
+ return 4
+ fi
+
+ sed -i -E "s@(<\!ENTITY linux-major-version \"+)(.+\">)@\1$1\">@" "$5"
+ sed -i -E "s@(<\!ENTITY linux-minor-version \"+)(.+\">)@\1$2\">@" "$5"
+ sed -i -E "s@(<\!ENTITY linux-md5 \"+)(.+\">)@\1$4\">@" "$5"
+
+ if [ "-" == "$3" ] ; then
+ sed -i -E '//g;}' "$5"
+ sed -i -E '/linux-minor-version;">-->/{s///g;}' "$5"
+ sed -i -E '//g;}' "$5"
+ else
+ sed -i -E '///g;}' "$5"
+ sed -i -E "s@(<\!ENTITY linux-patch-version \"+)(.+\">)@\1$3\">@" "$5"
+ sed -i -E '/linux-patch-version;">-->/{s///g;}' "$5"
+ sed -i -E '//g;}' "$5"
+ fi
+}
+
+# Check if the lfs mount point folder is specified as the first argument
+if [ -z "$1" ]
+then
+ echo "Please specify the lfs mount point folder as the first argument!" >&2
+ exit 1
+fi
+
+# Check if the lfs folder is exists
+if [ ! -d "$1" ]
+then
+ echo "LFS mount point folder does not exist!" >&2
+ exit 2
+fi
+
+# Check if jhalfs folder is already exist and delete it if yes
+DIR_JHALFS="$1/jhalfs"
+if [ -d "$DIR_JHALFS" ]
+then
+ echo Deleting old jhalfs folder: "$DIR_JHALFS"
+ sudo rm -rf "$DIR_JHALFS"
+ echo Done!
+fi
+
+# Now create the jhalfs folder and book-source sub-folder owned by the current user
+DIR_BOOK="$DIR_JHALFS/book-source"
+U="$(id -un)" # current user
+G="$(id -gn)" # current group
+echo Creating jhalfs folder...
+sudo install -v -o "$U" -g root -m 1777 -d "$DIR_JHALFS"
+sudo install -v -o "$U" -g "$G" -m 1777 -d "$DIR_BOOK"
+
+# Clone the LFS book repository to book-source folder
+echo Cloning lfs book sources...
+git clone https://git.linuxfromscratch.org/lfs.git "$DIR_BOOK"
+
+# Get the latest kernel version and download link from kernel.org
+echo Getting latest kernel from kernel.org...
+LATEST_KERNEL_URL="$(curl -v --silent https://www.kernel.org/ 2>&1 | sed -n '/
/{n; p}' | cut -d '"' -f 2)"
+LATEST_KERNEL_VER="$(cut -d '-' -f 2 <<< "$LATEST_KERNEL_URL" | rev | cut -c8- | rev)"
+echo Latest kernel version: "$LATEST_KERNEL_VER"
+echo Download URL: "$LATEST_KERNEL_URL"
+
+# Check sources folder existence and create if needed
+DIR_SOURCES="$1/sources"
+if [ ! -d "$DIR_SOURCES" ] ; then
+ sudo install -v -o "$U" -g "$G" -m 1777 -d "$DIR_SOURCES"
+else
+ sudo chmod -v 1777 "$DIR_SOURCES"
+fi
+
+# Download latest kernel if not done yet
+KERNEL_FILE_NAME="$(rev <<< "$LATEST_KERNEL_URL" | cut -d '/' -f1 | rev)"
+if [ ! -f "$DIR_SOURCES/$KERNEL_FILE_NAME" ] ; then
+ echo Downloading kernel tar ball...
+ wget -T 30 -t 5 --directory-prefix="$DIR_SOURCES" "$LATEST_KERNEL_URL"
+ echo Done!
+fi
+
+# Patch packages.ent with latest kernel
+MD5_SUM="$(md5sum "$DIR_SOURCES/$KERNEL_FILE_NAME" | cut -d ' ' -f 1)"
+NUM_VER_DOTS="$(awk -F. '{print NF-1}' <<< "$LATEST_KERNEL_VER")"
+if [ "2" == "$NUM_VER_DOTS" ] ; then
+ MAIN_VER="$(awk -F. '{print $(NF-2)}' <<< "$LATEST_KERNEL_VER")"
+ MINOR_VER="$(awk -F. '{print $(NF-1)}' <<< "$LATEST_KERNEL_VER")"
+ PATCH_VER="$(awk -F. '{print $(NF)}' <<< "$LATEST_KERNEL_VER")"
+elif [ "1" == "$NUM_VER_DOTS" ] ; then
+ MAIN_VER="$(awk -F. '{print $(NF-1)}' <<< "$LATEST_KERNEL_VER")"
+ MINOR_VER="$(awk -F. '{print $(NF)}' <<< "$LATEST_KERNEL_VER")"
+ PATCH_VER="-"
+else
+ echo Invalid count of version dots: "$NUM_VER_DOTS" >&2
+ echo Where version number is: "$LATEST_KERNEL_VER" >&2
+ exit 3
+fi
+patchKernelVersion "$MAIN_VER" "$MINOR_VER" "$PATCH_VER" "$MD5_SUM" "$DIR_BOOK/packages.ent"
+
+# Check if setup folder is already exist and delete it if yes
+DIR_SETUP="$1/setup"
+if [ -d "$DIR_SETUP" ]
+then
+ echo Deleting old setup folder: "$DIR_SETUP"
+ sudo rm -rf "$DIR_SETUP"
+ echo Done!
+fi
+
+# Now create the setup folder owned by the current user
+echo Creating setup folder...
+sudo install -v -o "$U" -g "$G" -m 755 -d "$DIR_SETUP"
+
+# Clone the jhalfs repository to setup folder
+echo Cloning jhalfs sources...
+git clone https://git.linuxfromscratch.org/jhalfs.git "$DIR_SETUP"
+
+# Patch opt_config to use -O3 -pipe -march=native
+echo Patching optimization config file...
+sed -i -E '/DEF_OPT_MODE=/s/noOpt/O3pipe_march/g' "$DIR_SETUP/optimize/opt_config"
+
+# Copy jhalfs config file and adjust some settings in it
+cp -iv configuration "$DIR_SETUP/"
+echo Patching setup configuration file...
+FILE_CFG="$DIR_SETUP/configuration"
+sed -i -E "\@BUILDDIR=\"xxx\"@s@xxx@$1@g" "$FILE_CFG"
+sed -i -E "\@FSTAB=\"xxx\"@s@xxx@/home/$U/fstab@g" "$FILE_CFG"
+sed -i -E "\@CONFIG=\"xxx\"@s@xxx@/home/$U/config-$LATEST_KERNEL_VER@g" "$FILE_CFG"
+
+# Enter to setup folder and start installer
+cd "$DIR_SETUP"
+yes "yes" | ./jhalfs run
\ No newline at end of file
diff --git a/rmscripts.sh b/rmscripts.sh
index 6467195..512d15a 100755
--- a/rmscripts.sh
+++ b/rmscripts.sh
@@ -2,24 +2,42 @@
# first parameter is the blfs tool's script folder
# second parameter is the blfs tool's installed packages xml file
-if [ -z "$1" ]
-then
- echo "Please specify the blfs tool's script folder as the first argument!"
- exit -1
+set -e
+
+# Check if the script folder is specified as an argument
+if [ -z "$1" ] ; then
+ echo "Please specify the blfs tool's script folder as the first argument!" >&2
+ exit 1
fi
-if [ -z "$2" ]
-then
- echo "Please specify the blfs tool's installed packages xml file as the second argument!"
- exit -1
+# Check if the given script folder exists
+if [ ! -d "$1" ] ; then
+ echo "The given script folder is not exist!" >&2
+ exit 2
fi
-if [[ "$1" != */ ]]
-then
- SCRIPTPATH=$(echo "$1"/)
+# Check if the installed packages xml is specified as an argument
+if [ -z "$2" ] ; then
+ echo "Please specify the blfs tool's installed packages xml file as the second argument!" >&2
+ exit 3
+fi
+
+# Check if installed packages xml file exists
+if [ ! -f "$2" ] ; then
+ echo "The given installed packages xml file is not exist!" >&2
+ exit 4
+fi
+
+# Add slash to script path if not there yet
+if [[ "$1" != */ ]] ; then
+ SCRIPTPATH="$1/"
else
- SCRIPTPATH="$1"
+ SCRIPTPATH="$1"
fi
-grep "$2" -f <(ls "$SCRIPTPATH" | awk -F'-z-' '{print ""$2""}') | while read line ; do rm -v "$SCRIPTPATH"$(echo "$line" | sed 's//*-/g' | sed 's|||g') ; done
-
+# Find and remove all the scripts which would install a package that is already mentioned in the installed packages file
+grep "$2" -f <(find "$SCRIPTPATH" -type f -printf '%f\n' | awk -F'-z-' '{print ""$2""}') | \
+ while read -r line
+ do
+ rm -v "$(find "$SCRIPTPATH" -name "$(echo "$line" | sed 's//*-/g' | sed 's|||g')" -type f)"
+ done
diff --git a/update_package_versions.sh b/update_package_versions.sh
index e59f4b6..3d56d78 100755
--- a/update_package_versions.sh
+++ b/update_package_versions.sh
@@ -1,47 +1,49 @@
#!/bin/bash
# This script checks and updates the latest versions of the packages
+set -e
+
# Prints which package is about to update.
greetMsg()
{
- printf "\nUpdating package: $1\n"
+ printf "\nUpdating package: %s\n" "$1"
}
# Does the actual update of the package with the found version.
updatePkg()
{
sed -i -E "s@($1-version \"+)(.+\">)@\1$2\">@" add_packages.sh
- sed -i -E "s@($1-download-http \"+)(.+\">)@\1$3\">@" ./$4/$1.xml
+ sed -i -E "s@($1-download-http \"+)(.+\">)@\1$3\">@" ./"$4"/"$1".xml
echo "Latest version: $2"
- printf "Found package: $3\n"
+ printf "Found package: %s\n" "$3"
}
# Function that gets the latest release of a specific package.
# This function works only with packages stored on github.
getLatestGithubRelease()
{
- greetMsg $2
- URL=`curl -v --silent "https://github.com/$1/releases" 2>&1 | grep 'loading="lazy" src=' | tr '"' '\n' | grep /releases/ -m1`
- URL="https://github.com`curl -v --silent $URL 2>&1 | grep '&1 | grep 'loading="lazy" src=' | tr '"' '\n' | grep /releases/ -m1)
+ URL="https://github.com$(curl -v --silent "$URL" 2>&1 | grep '&1 | grep net.sf.files | tr '"' '\n' | grep http -m1 | rev | cut -c10- | rev`
- VER=`echo $URL | awk -F/ '{ print $NF }'`
+ greetMsg "$2"
+ URL=$(curl -v --silent "https://sourceforge.net/projects/$1/files/$2/" 2>&1 | grep net.sf.files | tr '"' '\n' | grep http -m1 | rev | cut -c10- | rev)
+ VER=$(echo "$URL" | awk -F/ '{ print $NF }')
if [[ $4 ]]; then
- VER=`echo $VER | cut -c$4`
+ VER=$(echo "$VER" | cut -c"$4")
fi
URL=$URL/$2-$VER.tar.gz
- updatePkg $2 $VER $URL $3
+ updatePkg "$2" "$VER" "$URL" "$3"
}
#minidlna
|