Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
84ec22f0bd | ||
|
b97f0337de | ||
|
27ec12f373 | ||
|
6dbb63378e |
95
README
95
README
@ -1,95 +0,0 @@
|
||||
+-----------------+
|
||||
| [*] Glacier [*] |
|
||||
+-----------------+
|
||||
|
||||
Manage packages on an Everest Linux system
|
||||
|
||||
+-----------------------+
|
||||
| [?] About Glacier [?] |
|
||||
+-----------------------+
|
||||
|
||||
Glacier's main goal is to combine the power of
|
||||
source based packaging with the simplicity of
|
||||
binary based packaging.
|
||||
|
||||
Glacier downloads source code from
|
||||
https://git.everestlinux.org/EverestLinux/glacier-pkgs
|
||||
and compiles it locally on your system.
|
||||
|
||||
+----------------------+
|
||||
| [!] Dependencies [!] |
|
||||
+----------------------+
|
||||
|
||||
Glacier requires the following programs to function:
|
||||
|
||||
- sh
|
||||
- wget/curl (any program that can download files)
|
||||
- tar
|
||||
- make
|
||||
- a c compiler (tested with gcc, although others should work)
|
||||
- python (for integrity checking)
|
||||
|
||||
+----------------------------+
|
||||
| [🠗] Installing Glacier [🠗] |
|
||||
+----------------------------+
|
||||
|
||||
Obtain the source code:
|
||||
|
||||
$ git clone https://git.everestlinux.org/EverestLinux/glacier
|
||||
$ cd glacier
|
||||
|
||||
Copy install.conf.def to install.conf
|
||||
|
||||
$ mv install.conf.def install.conf
|
||||
|
||||
Make necessary adjustments to install.conf, then run
|
||||
build.sh as root.
|
||||
|
||||
# ./build.sh install # for first time installations
|
||||
# ./build.sh update # for existing installations
|
||||
|
||||
+-----------------+
|
||||
| [>_] Usage [>_] |
|
||||
+-----------------+
|
||||
|
||||
# glacier install/-f
|
||||
# glacier update/-u
|
||||
# glacier remove/-x
|
||||
$ glacier query/-q
|
||||
# glacier cache/-c
|
||||
# glacier cache-install/-ci
|
||||
# glacier cache-clear/-cc
|
||||
$ glacier --debuginfo
|
||||
$ glacier -h/--help
|
||||
$ glacier -v/--version
|
||||
|
||||
+------+
|
||||
| News |
|
||||
+------+
|
||||
|
||||
- 11/3/22 - Changing how packages are uninstalled
|
||||
In Glacier's current state, it needs to download the package archive in order to remove it.
|
||||
This is highly inefficient and presents its own risks.
|
||||
In an upcoming update, the removal script will be retained on the system.
|
||||
This method will be space efficient because:
|
||||
a) Instruction scripts are mere kilobytes
|
||||
b) For larger scripts, you will have the option of compressing them.
|
||||
This feature is expected around 3.2.0.
|
||||
|
||||
+-----------+
|
||||
| Licensing |
|
||||
+-----------+
|
||||
|
||||
(C) 2021-2022 Everest Developers
|
||||
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/>.
|
3
README.md
Normal file
3
README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# glacier3
|
||||
|
||||
Glacier3 is a testing ground for the upcoming Glacier rewrite
|
6
TODO
Normal file
6
TODO
Normal file
@ -0,0 +1,6 @@
|
||||
### TODO LIST ###
|
||||
|
||||
#- fix messages not printing (ASAP)
|
||||
#- fix archives not downloading
|
||||
# /usr/bin/gscripts: line 37: /nano.tar.gz: No such file or directory
|
||||
#- Colors not printing
|
@ -1,72 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf "must be run as root\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
WORKING_DIR=$(pwd)
|
||||
SRC_DIR=$(pwd)/../src
|
||||
|
||||
printf "parsing install.conf\n"
|
||||
source $WORKING_DIR/install.conf
|
||||
if [ "$?" != 0 ]; then
|
||||
printf "install.conf not found\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case $1 in
|
||||
install)
|
||||
printf "installing executable\n"
|
||||
mv -v $SRC_DIR/glacier $PREFIX/bin
|
||||
if [ "$?" != 0 ]; then
|
||||
mv -v $SRC_DIR/glacier $PREFIX
|
||||
printf "directory $PREFIX/bin does not exist, moving to $PREFIX instead\n"
|
||||
fi
|
||||
$CC $SRC_DIR/int-check/main.c -o glacier-integrity-check
|
||||
mv -v $SRC_DIR/int-check/glacier-integrity-check $PREFIX/bin
|
||||
if [ "$?" != 0 ]; then
|
||||
mv -v $SRC_DIR/int-check/glacier-integrity-check $PREFIX
|
||||
printf "directory $PREFIX/bin does not exist, moving to $PREFIX instead.\n"
|
||||
fi
|
||||
printf "installing configuration files\n"
|
||||
mv -v $SRC_DIR/glacier.conf $CONFDIR
|
||||
if [ "$?" != 0 ]; then
|
||||
printf "$CONFDIR does not exist\n"
|
||||
printf "this can be corrected by running:\n"
|
||||
printf "# mkdir -v -pv $CONFDIR\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -v /opt/glacier
|
||||
mkdir -v /opt/glacier/workspace
|
||||
mkdir -v /var/log/glacier
|
||||
mkdir -v /var/cache/glacier
|
||||
|
||||
mkdir -v /etc/glacier
|
||||
mkdir -v /etc/glacier/pkginfo
|
||||
|
||||
mv -v $SRC_DIR/hooks $CONFDIR/glacier
|
||||
mv -v $SRC_DIR/post-hooks $CONFDIR/glacier
|
||||
mv -v $SRC_DIR/pre-hooks $CONFDIR/glacier
|
||||
mv -v $SRC_DIR/hooks.sh $CONFDIR/glacier
|
||||
mv -v $SRC_DIR/make.conf $CONFDIR
|
||||
mv -v $SRC_DIR/glacier-integrity-check $PREFIX/bin
|
||||
if [ "$?" != "0" ]; then
|
||||
mv -v $SRC_DIR/glacier-integrity-check $PREFIX
|
||||
printf "directory $PREFIX/bin does not exist, moving to $PREFIX instead\n"
|
||||
fi
|
||||
|
||||
printf "finished installation\n"
|
||||
exit 0
|
||||
;;
|
||||
update)
|
||||
printf "updating executable\n"
|
||||
rm -v $PREFIX/bin/glacier || rm -v $PREFIX/glacier
|
||||
rm -v $PREFIX/bin/glacier-integrity-check || rm -v $PREFIX/glacier-integrity-check
|
||||
mv -v $SRC_DIR/glacier $PREFIX/bin || mv -v $SRC_DIR/glacier $PREFIX
|
||||
$CC $SRC_DIR/int-check/main.c -O2 -fstack-protector-strong -o $SRC_DIR/int-check/glacier-integrity-check
|
||||
mv -v $SRC_DIR/int-check/glacier-integrity-check $PREFIX/bin || mv -v $SRC_DIR/int-check/glacier-integrity-check $PREFIX
|
||||
printf "finished updating\n"
|
||||
exit 0
|
||||
esac
|
@ -1,13 +0,0 @@
|
||||
#!/bin/sh
|
||||
# install.conf
|
||||
|
||||
# Installation prefix
|
||||
# On Everest, this should be /usr, because /bin, /sbin, and /lib are all symlinks to /usr
|
||||
PREFIX="/usr"
|
||||
|
||||
# System config directory
|
||||
# On almost all systems, this should be /etc
|
||||
CONFDIR="/etc"
|
||||
|
||||
# C Compiler to use
|
||||
CC="gcc"
|
24
install/install.sh
Executable file
24
install/install.sh
Executable file
@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf " [ * ] Installation Script must be run as root.\n"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Create directories
|
||||
mkdir /etc/glacier
|
||||
mkdir /etc/glacier/pkginfo
|
||||
mkdir /var/log/glacier
|
||||
mkdir /var/cache/glacier
|
||||
|
||||
# Install Scripts
|
||||
cd ../src
|
||||
chmod +x *
|
||||
cp glacier /usr/bin/glacier
|
||||
cp glacier.conf /etc/glacier.conf
|
||||
cp glacier_release /etc/glacier/glacier_release
|
||||
cp gscripts /usr/bin/gscripts
|
||||
cp messages /etc/glacier/messages
|
||||
cp hooks /etc/glacier/hooks
|
||||
|
||||
printf "done\n"
|
9
src/INSTALL_LOCATIONS
Normal file
9
src/INSTALL_LOCATIONS
Normal file
@ -0,0 +1,9 @@
|
||||
=== Executables ===
|
||||
/usr/bin/glacier
|
||||
/usr/bin/gscripts
|
||||
|
||||
=== Settings/Other files ===
|
||||
/etc/glacier/glacier_release
|
||||
/etc/glacier/hooks
|
||||
/etc/glacier.conf
|
||||
/etc/make.conf
|
647
src/glacier
647
src/glacier
@ -1,151 +1,259 @@
|
||||
#!/bin/sh
|
||||
# Glacier - manage installed packages on a Linux system
|
||||
# Glacier - A simple package management system written in POSIX sh
|
||||
# Copyright (C) 2022 Everest Linux Development Group
|
||||
#
|
||||
# This file is part of Glacier.
|
||||
# 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.
|
||||
#
|
||||
# Glacier 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.
|
||||
#
|
||||
# Glacier is distributed in the hope that it will be useful,
|
||||
# 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.
|
||||
|
||||
# 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 Glacier. If not, see <https://www.gnu.org/licenses/>.
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
. /etc/glacier/hooks
|
||||
# Preloading
|
||||
/usr/bin/gscripts preload
|
||||
source $(pwd)/messages # this is here for the sole purpose of testing
|
||||
source /etc/glacier/messages
|
||||
input = ${2}
|
||||
|
||||
get_pkg() {
|
||||
printf "$blue[ i ]$reset Downloading archive for package '$2'...\n"
|
||||
for r in ${ALLOWED_REPOS[@]}; do
|
||||
$GLACIER_DOWNLOAD_BACKEND $GREPO/${r}/$2.tar.gz
|
||||
done
|
||||
find $2.tar.gz
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Package '$2' not found.\n"
|
||||
# Main Script
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
printf "$blue [ * ] Glacier - Manage packages on the system [ * ] $reset\n"
|
||||
printf "$blue=== Information ====================================================================================$reset\n"
|
||||
printf "$ glacier {-h --help} show this message and exit\n"
|
||||
printf "$ glacier {--version} display the current Glacier version and exit\n"
|
||||
printf "$blue=== Package Operations =============================================================================$reset\n"
|
||||
printf "# glacier {install -f} install a package to the system\n"
|
||||
printf "# glacier {update -u} update an installed package\n"
|
||||
printf "# glacier {remove -x} remove an installed package\n"
|
||||
printf "$ glacier {query -q} query the information of an installed package\n"
|
||||
printf "# glacier {cache -c} cache a package from the repositories\n"
|
||||
printf "# glacier {cache-install -ci} install a cached package\n"
|
||||
printf "# glacier {cache-clear -cc} clear the package cache\n"
|
||||
printf "$blue=== Debugging ======================================================================================$reset\n"
|
||||
printf "$ glacier {--showDebugInfo} show debugging info\n"
|
||||
printf "$blue=== Licensing ======================================================================================$reset\n"
|
||||
printf "This program is freely distributable under the terms of the\n"
|
||||
printf "GNU General Public License version 3 or later.\n"
|
||||
printf "You should have recieved a copy of the GNU General Public License\n"
|
||||
printf "along with this program. If not, see <https://www.gnu.org/licenses/>.\n"
|
||||
printf "$blue======================================================================================================\n"
|
||||
exit 0
|
||||
;;
|
||||
--version)
|
||||
printf "$blue Glacier v$GLACIER_RELEASE $reset\n"
|
||||
exit 0
|
||||
;;
|
||||
install|-f)
|
||||
# Require script to be run as root
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
echo $GLACIER_ERROR_NO_ROOT
|
||||
exit 1
|
||||
fi
|
||||
printf "$blue[ i ]$reset Downloading checksum for package '$2'...\n"
|
||||
for r in ${ALLOWED_REPOS[@]}; do
|
||||
$GLACIER_DOWNLOAD_BACKEND $GREPO/${r}/$2.checksum
|
||||
done
|
||||
find $2.checksum
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Package checksum not found.\n"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
int_check() {
|
||||
if [ "$GLACIER_DO_INT_CHECK" = "true" ]; then
|
||||
printf "$blue[ i ]$reset Checking package integrity...\n"
|
||||
mv *.checksum local_sum
|
||||
sha256sum *.tar.gz > pkg_sum
|
||||
/usr/bin/glacier-integrity-check local_sum pkg_sum
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Integrity check failed.\n"
|
||||
exit 1
|
||||
fi
|
||||
printf "$green[ $check ]$reset Integrity check passed.\n"
|
||||
else
|
||||
printf "$yellow[ ! ]$reset Skipping integrity check...\n"
|
||||
fi
|
||||
}
|
||||
|
||||
unpack_pkg() {
|
||||
printf "$blue[ i ]$reset Unpacking $2.tar.gz...\n"
|
||||
echo $GLACIER_STATUS_INSTALLING
|
||||
/usr/bin/gscripts download
|
||||
if [ "$?" != "0" ]; then
|
||||
echo $GLACIER_ERROR_DOES_NOT_EXIST
|
||||
exit 1
|
||||
fi
|
||||
echo $GLACIER_STATUS_INTEGRITY_CHECK
|
||||
mkdir $2 && mv $2.tar.gz $2 && cd $2
|
||||
pv $2.tar.gz | tar -xz
|
||||
/usr/bin/gscripts integrity-check
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Could not unpack $2.tar.gz.\n"
|
||||
cd .. && rm -rf $2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
installpkg() {
|
||||
printf "$blue[ i ]$reset Installing $2...\n"
|
||||
sleep 1
|
||||
chmod +x *
|
||||
echo $GLACIER_STATUS_UNPACKING
|
||||
tar -xvf $2.tar.gz
|
||||
if [ "$?" != "0" ]; then
|
||||
echo $GLACIER_ERROR_CANNOT_UNPACK
|
||||
exit 1
|
||||
fi
|
||||
chmod +x INSTALL.sh
|
||||
chmod +x $2.ts.sh
|
||||
echo $GLACIER_STATUS_EXECUTING
|
||||
./INSTALL.sh
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Failed to update $2.\n"
|
||||
cd .. && rm -rf $2
|
||||
echo $GLACIER_ERROR_INSTRUCTIONS_CANNOT_EXECUTE
|
||||
exit 1
|
||||
fi
|
||||
./$2.ts.sh
|
||||
mv $2-pkginfo.json /etc/glacier/pkginfo
|
||||
}
|
||||
/usr/bin/gscripts post-install
|
||||
echo $GLACIER_SUCCESS
|
||||
exit 0
|
||||
;;
|
||||
update|-u)
|
||||
# Require script to be run as root
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
echo $GLACIER_ERROR_NO_ROOT
|
||||
exit 1
|
||||
fi
|
||||
|
||||
updatepkg() {
|
||||
printf "$blue[ i ]$reset Updating $2...\n"
|
||||
sleep 1
|
||||
chmod +x *
|
||||
echo $GLACIER_STATUS_UPDATING
|
||||
/usr/bin/gscripts download
|
||||
if [ "$?" != "0" ]; then
|
||||
echo $GLACIER_ERROR_DOES_NOT_EXIST
|
||||
exit 1
|
||||
fi
|
||||
echo $GLACIER_STATUS_INTEGRITY_CHECK
|
||||
mkdir $2 && mv $2.tar.gz $2 && cd $2
|
||||
/usr/bin/gscripts integrity-check
|
||||
if [ "$?" != "0" ]; then
|
||||
exit 1
|
||||
fi
|
||||
echo $GLACIER_STATUS_UNPACKING
|
||||
tar -xvf $2.tar.gz
|
||||
if [ "$?" != "0" ]; then
|
||||
echo $GLACIER_ERROR_CANNOT_UNPACK
|
||||
exit 1
|
||||
fi
|
||||
chmod +x UPDATE.sh
|
||||
chmod +x $2.ts.sh
|
||||
echo $GLACIER_STATUS_EXECUTING
|
||||
./UPDATE.sh
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Failed to update $2.\n"
|
||||
cd .. && rm -rf $2
|
||||
echo $GLACIER_ERROR_INSTRUCTIONS_CANNOT_EXECUTE
|
||||
exit 1
|
||||
fi
|
||||
./$2.ts.sh
|
||||
}
|
||||
|
||||
removepkg() {
|
||||
printf "$blue[ i ]$reset Removing $2...\n"
|
||||
sleep 1
|
||||
chmod +x *
|
||||
/etc/glacier/pkginfo/$2.remove
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Failed to remove $2.\n"
|
||||
cd .. && rm -rf $2
|
||||
/usr/bin/gscripts post-install
|
||||
echo $GLACIER_SUCCESS
|
||||
exit 0
|
||||
;;
|
||||
remove|-x)
|
||||
# Require script to be run as root
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
echo $GLACIER_ERROR_NO_ROOT
|
||||
exit 1
|
||||
fi
|
||||
rm /var/log/glacier/$2.timestamp
|
||||
rm /etc/glacier/pkginfo/$2-pkginfo.json
|
||||
}
|
||||
|
||||
installpkg_from_cache() {
|
||||
printf "$blue[ i ]$reset Installing $2 from cache...\n"
|
||||
sleep 1
|
||||
echo $GLACIER_STATUS_REMOVING
|
||||
/usr/bin/gscripts download
|
||||
if [ "$?" != "0" ]; then
|
||||
echo $GLACIER_ERROR_DOES_NOT_EXIST
|
||||
exit 1
|
||||
fi
|
||||
echo $GLACIER_STATUS_INTEGRITY_CHECK
|
||||
mkdir $2 && mv $2.tar.gz $2 && cd $2
|
||||
/usr/bin/gscripts integrity-check
|
||||
if [ "$?" != "0" ]; then
|
||||
exit 1
|
||||
fi
|
||||
echo $GLACIER_STATUS_UNPACKING
|
||||
tar -xvf $2.tar.gz
|
||||
if [ "$?" != "0" ]; then
|
||||
echo $GLACIER_ERROR_CANNOT_UNPACK
|
||||
exit 1
|
||||
fi
|
||||
chmod +x REMOVE.sh
|
||||
chmod +x $2.ts.sh
|
||||
echo $GLACIER_STATUS_EXECUTING
|
||||
./REMOVE.sh
|
||||
if [ "$?" != "0" ]; then
|
||||
echo $GLACIER_ERROR_INSTRUCTIONS_CANNOT_EXECUTE
|
||||
exit 1
|
||||
fi
|
||||
./$2.ts.sh
|
||||
/usr/bin/gscripts post-install
|
||||
echo $GLACIER_SUCCESS
|
||||
exit 0
|
||||
;;
|
||||
query|-q)
|
||||
cat /etc/glacier/pkginfo/$2-pkginfo.json
|
||||
cat /var/log/glacier/$2.timestamp
|
||||
if [ "$?" != "0" ]; then
|
||||
echo $GLACIER_ERROR_NOT_INSTALLED
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
;;
|
||||
cache|-c)
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
echo $GLACIER_ERROR_NO_ROOT
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo $GLACIER_STATUS_CACHING
|
||||
/usr/bin/gscripts download
|
||||
if [ "$?" != "0" ]; then
|
||||
echo $GLACIER_ERROR_DOES_NOT_EXIST
|
||||
exit 1
|
||||
fi
|
||||
echo $GLACIER_STATUS_INTEGRITY_CHECK
|
||||
mv $2.tar.gz /var/cache/glacier && cd /var/cache/glacier
|
||||
/usr/bin/gscripts integrity-check
|
||||
if [ "$?" != "0" ]; then
|
||||
exit 1
|
||||
fi
|
||||
echo $GLACIER_SUCCESS
|
||||
exit 0
|
||||
;;
|
||||
cache-install|-ci)
|
||||
if [[ $(usr/bin/id -u) -ne 0 ]]; then
|
||||
echo $GLACIER_ERROR_NO_ROOT
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo $GLACIER_STATUS_INSTALLING
|
||||
cd /var/cache/glacier && cp $2.tar.gz /tmp && cd /tmp
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Package does not exist in cache.\n"
|
||||
echo $GLACIER_ERROR_NOT_IN_CACHE
|
||||
exit 1
|
||||
fi
|
||||
unpack_pkg
|
||||
install_pkg
|
||||
}
|
||||
|
||||
clear_cache() {
|
||||
printf "$blue[ i ]$reset Clearing cache...\n"
|
||||
sleep 1
|
||||
cd /var/cache/glacier && rm -rvf *
|
||||
echo $GLACIER_STATUS_UNPACKING
|
||||
mkdir $2 && mv $2.tar.gz $2 && cd $2
|
||||
tar -xvf $2.tar.gz
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Some items could not be cleared.\n"
|
||||
echo $GLACIER_ERROR_CANNOT_UNPACK
|
||||
exit 1
|
||||
fi
|
||||
echo $GLACIER_STATUS_EXECUTING
|
||||
chmod +x INSTALL.sh
|
||||
chmod +x $2.ts.sh
|
||||
./INSTALL.sh
|
||||
if [ "$!" != "0" ]; then
|
||||
echo $GLACIER_ERROR_INSTRUCTIONS_CANNOT_EXECUTE
|
||||
exit 1
|
||||
fi
|
||||
./$2.ts.sh
|
||||
/usr/bin/gscripts post-install
|
||||
echo $GLACIER_SUCCESS
|
||||
exit 0
|
||||
;;
|
||||
cache-clear|-cc)
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
echo $GLACIER_ERROR_NO_ROOT
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# Show Glacier debugging info
|
||||
#
|
||||
|
||||
debug_info() {
|
||||
printf "$blue>> Glacier v3.3.0$reset\n"
|
||||
printf ">> Checking for valid download backend...\n"
|
||||
echo $GLACIER_STATUS_CLEARING
|
||||
cd /var/cache/glacier && rm -rf *
|
||||
echo $GLACIER_SUCCESS
|
||||
exit 0
|
||||
;;
|
||||
--showDebugInfo)
|
||||
printf "$blue Glacier v$GLACIER_RELEASE $reset\n"
|
||||
printf ">> Checking for a viable download backend...\n"
|
||||
whereis wget
|
||||
whereis curl
|
||||
whereis aria2c
|
||||
printf ">> Checking which download backend is in use...\n"
|
||||
echo $GLACIER_DOWNLOAD_BACKEND
|
||||
printf ">> Checking if all Glacier files are present...\n"
|
||||
whereis glacier glacier.conf make.conf
|
||||
ls /var/log | grep glacier
|
||||
ls /var/cache | grep glacier
|
||||
printf ">> If any files are missing, Glacier will not behave properly.\n"
|
||||
printf ">> Checking if terminal can output unicode symbols...\n"
|
||||
printf ">> Checking if all Glacier directories and files are present...\n"
|
||||
ls /etc | grep glacier
|
||||
ls /etc/glacier
|
||||
whereis make.conf
|
||||
printf ">> If any files are missing, especially make.conf, Glacier will behave abnormally.\n"
|
||||
printf ">> Checking if unicode symbols and colors display properly...\n"
|
||||
printf "(NOTE): If you use a custom colorscheme, colors may vary.\n"
|
||||
printf " For instance, the Dracula colorscheme turns blue into purple.\n"
|
||||
printf "$check\n"
|
||||
printf "$error\n"
|
||||
printf "$warning\n"
|
||||
@ -154,8 +262,7 @@ debug_info() {
|
||||
printf "$green Green.$reset\n"
|
||||
printf "$yellow Yellow.$reset\n"
|
||||
printf "$blue Blue.$reset\n"
|
||||
printf "NOTE: If you use a custom colorscheme, colors will not match.\n"
|
||||
printf ">> Checking if repositories are valid...\n"
|
||||
printf ">> Checking repositories...\n"
|
||||
echo $GREPO1
|
||||
echo $GREPO2
|
||||
echo $GREPO3
|
||||
@ -164,327 +271,19 @@ debug_info() {
|
||||
echo $GREPO6
|
||||
echo $GREPO7
|
||||
echo $GREPO8
|
||||
printf ">> Checking which shell is in use...\n"
|
||||
which $SHELL
|
||||
printf "NOTE: If you use zsh, a percentage symbol may appear after some lines.\n"
|
||||
printf ">> Gathered debug information.\n"
|
||||
printf ">> To save this information to a file, run:\n"
|
||||
printf ">> $ glacier --debuginfo > glacier.debug\n"
|
||||
}
|
||||
|
||||
#
|
||||
# Parses JSON from pkginfo files and outputs it
|
||||
#
|
||||
|
||||
query() {
|
||||
printf "$blue[ i ]$reset Showing information for package '$2'.\n"
|
||||
printf "$blue>> Package name:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .package_name
|
||||
printf "$blue>> Package version:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .package_version
|
||||
printf "$blue>> Package description:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .package_description
|
||||
printf "$blue>> Source tree size:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .src_tree_size
|
||||
printf "$blue>> Size of installed files:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .exec_size
|
||||
printf "$blue>> License:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .license
|
||||
printf "$blue>> Installation date:$reset " && cat /var/log/glacier/$2.timestamp
|
||||
}
|
||||
|
||||
#
|
||||
# Will either keep removal script, update it with a new one, or delete it alltogether
|
||||
#
|
||||
|
||||
cleanup_keep_rm () {
|
||||
printf "$blue[ i ]$reset Cleaning up...\n"
|
||||
mv REMOVE.sh /etc/glacier/pkginfo/$2.remove
|
||||
cd .. && rm -rf *.checksum *.tar.* $2
|
||||
}
|
||||
|
||||
cleanup_update_rm () {
|
||||
printf "$blue[ i ]$reset Cleaning up...\n"
|
||||
rm /etc/glacier/pkginfo/$2.remove
|
||||
mv REMOVE.sh /etc/glacier/pkginfo/$2.remove
|
||||
cd .. && rm -rf *.checksum *.tar.* $2
|
||||
}
|
||||
|
||||
cleanup_del_rm () {
|
||||
printf "$blue[ i ]$reset Cleaning up...\n"
|
||||
rm /etc/glacier/pkginfo/$2.remove
|
||||
cd .. && rm -rf *.checksum *.tar.* $2
|
||||
}
|
||||
|
||||
#
|
||||
# Execute pre and posr hooks from files
|
||||
#
|
||||
|
||||
pre_hooks() {
|
||||
source /etc/glacier/hooks
|
||||
}
|
||||
|
||||
pre_op_hooks() {
|
||||
printf "$blue[ i ]$reset Executing pre-operation hooks...\n"
|
||||
/etc/glacier/pre-hooks
|
||||
}
|
||||
|
||||
post_hooks() {
|
||||
printf "$blue[ i ]$reset Executing post-operation hooks...\n"
|
||||
/etc/glacier/post-hooks
|
||||
}
|
||||
|
||||
search_for_local_pkg() {
|
||||
printf "$blue[ i ]$reset Searching working directory for package $2...\n"
|
||||
find $2.tar.gz
|
||||
if [ "$?" != 0 ]; then
|
||||
printf "$red[ $error ]$reset Package $2 not found.\n"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
case $1 in
|
||||
-h|--help)
|
||||
printf "$blue[ * ] Glacier - Manage installed packages on the system$reset\n"
|
||||
printf "usage: glacier [-f] [-u] [-x] [-q] [-c] [-ci] [-cc] [-li] [--debuginfo]\n"
|
||||
printf "\n"
|
||||
printf "$blue=== Information ===$reset\n"
|
||||
printf "glacier {-h/--help} - Show this message and exit\n"
|
||||
printf "glacier {-v/--version} - Show the version and exit\n"
|
||||
printf "\n"
|
||||
printf "$blue=== Operations ===$reset\n"
|
||||
printf "glacier {-f/install} - Install a new package\n"
|
||||
printf "glacier {-u/update} - Update an installed package\n"
|
||||
printf "glacier {-x/remove} - Remove an installed package\n"
|
||||
printf "glacier {-q/query} - Query an installed package\n"
|
||||
printf "glacier {-c/cache} - Download a package to the cache\n"
|
||||
printf "glacier {-ci/cache-install} - Install a package from the cache\n"
|
||||
printf "glacier {-cc/cache-clear} - Clear the cache\n"
|
||||
printf "glacier {-li/local-install} - Install a package from a local directory\n"
|
||||
printf "\n"
|
||||
printf "$blue=== Debugging ===$reset\n"
|
||||
printf "glacier {--debuginfo} - Show debugging information\n"
|
||||
printf "\n"
|
||||
printf "$blue=== Licensing ===$reset\n"
|
||||
printf "This program is free software: you can redistribute it and/or modify it\n"
|
||||
printf "under the terms of the GNU General Public License as published by the\n"
|
||||
printf "Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n"
|
||||
exit 0
|
||||
;;
|
||||
-v|--version)
|
||||
printf "${blue}Glacier v3.3.0${reset}\n"
|
||||
exit 0
|
||||
;;
|
||||
-f|install)
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$2" == "" ]; then
|
||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf "$blue[ i ]$reset Installing package '$2'.\n"
|
||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
cd /opt/glacier/workspace
|
||||
printf "\n"
|
||||
pre_hooks "$@"
|
||||
get_pkg "$@"
|
||||
int_check "$@"
|
||||
unpack_pkg "$@"
|
||||
pre_op_hooks "$@"
|
||||
installpkg "$@"
|
||||
post_hooks "$@"
|
||||
cleanup_keep_rm "$@"
|
||||
printf "$green[ $check ]$reset Operation completed.\n"
|
||||
exit 0
|
||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
||||
printf "\n"
|
||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
-u|update)
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$2" == "" ]; then
|
||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf "$blue[ i ]$reset Updating package '$2'.\n"
|
||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
cd /opt/glacier/workspace
|
||||
printf "\n"
|
||||
pre_hooks "$@"
|
||||
get_pkg "$@"
|
||||
int_check "$@"
|
||||
unpack_pkg "$@"
|
||||
pre_op_hooks "$@"
|
||||
updatepkg "$@"
|
||||
post_hooks "$@"
|
||||
cleanup_update_rm "$@"
|
||||
printf "$green[ $check ]$reset Operation completed.\n"
|
||||
exit 0
|
||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
||||
printf "\n"
|
||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
-x|remove)
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$2" == "" ]; then
|
||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf "$blue[ i ]$reset Removing package '$2'.\n"
|
||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
cd /opt/glacier/workspace
|
||||
printf "\n"
|
||||
pre_hooks "$@"
|
||||
removepkg "$@"
|
||||
post_hooks "$@"
|
||||
cleanup_del_rm "$@"
|
||||
printf "$green[ $check ]$reset Operation completed.\n"
|
||||
exit 0
|
||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
||||
printf "\n"
|
||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
-q|query)
|
||||
if [ "$2" == "" ]; then
|
||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
query "$@"
|
||||
exit 0
|
||||
;;
|
||||
-c|cache)
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$2" == "" ]; then
|
||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf "$blue[ i ]$reset Caching package '$2'.\n"
|
||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
cd /var/cache/glacier
|
||||
printf "\n"
|
||||
get_pkg "$@"
|
||||
int_check "$@"
|
||||
printf "$green[ $check ]$reset Operation completed.\n"
|
||||
exit 0
|
||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
||||
printf "\n"
|
||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
-ci|cache-install)
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$2" == "" ]; then
|
||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf "$blue[ i ]$reset Installing package '$2' from cache.\n"
|
||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
cd /var/cache/glacier
|
||||
mv $2.tar.gz /opt/glacier/workspace
|
||||
cd /opt/glacier/workspace
|
||||
printf "\n"
|
||||
pre_hooks "$@"
|
||||
unpack_pkg "$@"
|
||||
pre_op_hooks "$@"
|
||||
installpkg "$@"
|
||||
post_hooks "$@"
|
||||
cleanup_keep_rm "$@"
|
||||
printf "$green[ $check ]$reset Operation completed.\n"
|
||||
exit 0
|
||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
||||
printf "\n"
|
||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
-cc|cache-clear)
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
clear_cache "$@"
|
||||
printf "$green[ $check ]$reset Operation completed.\n"
|
||||
exit 0
|
||||
;;
|
||||
-li|local-install)
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$2" == "" ]; then
|
||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
search_for_local_pkg "$@"
|
||||
|
||||
printf "$blue[ i ]$reset Installing package '$2' from local file.\n"
|
||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
cp $2.tar.gz /opt/glacier/workspace
|
||||
cd /opt/glacier/workspace
|
||||
printf "\n"
|
||||
pre_hooks "$@"
|
||||
unpack_pkg "$@"
|
||||
pre_op_hooks "$@"
|
||||
installpkg "$@"
|
||||
post_hooks "$@"
|
||||
cleanup_keep_rm "$@"
|
||||
printf "$green[ $check ]$reset Operation completed.\n"
|
||||
exit 0
|
||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
||||
printf "\n"
|
||||
printf "$red[ $error ]$reset Aborting.\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
--debuginfo)
|
||||
debug_info "$@"
|
||||
printf ">> Debug information has been gathered.\n"
|
||||
printf ">> Run 'glacier --showDebugInfo > glacier.debug' to save this information to a file.\n"
|
||||
exit 0
|
||||
;;
|
||||
-*|--*)
|
||||
printf "$red[ $error ]$reset Unknown option, see 'glacier -h' for usage.\n"
|
||||
echo $GLACIER_ERROR_NO_SUCH_OPTION
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
printf "$red[ $error ]$reset Unknown option, see 'glacier -h' for usage.\n"
|
||||
echo $GLACIER_ERROR_NO_SUCH_OPTION
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
printf "$red[ $error ]$reset Unknown option, see 'glacier -h' for usage.\n"
|
||||
esac
|
||||
done
|
||||
echo $GLACIER_ERROR_NO_SUCH_OPTION
|
||||
exit 1
|
||||
|
@ -1,185 +0,0 @@
|
||||
#!/bin/sh
|
||||
# glacier-mkimg - Generate a root filesystem image
|
||||
#
|
||||
# This file is part of Glacier.
|
||||
#
|
||||
# Glacier 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.
|
||||
#
|
||||
# Glacier 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 Glacier. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
am_i_root() {
|
||||
printf ">> Checking if user is root...\n"
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf ">> glacier-mkimg must be run as root.\n"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
info() {
|
||||
printf ">> Building root filesystem image with the following settings:\n"
|
||||
printf "Image build location: /opt/everest\n"
|
||||
printf "Packages to be installed:\n"
|
||||
printf " - system-toolchain-bin\n"
|
||||
printf " - busybox-base-bin\n"
|
||||
printf " - glacier-base-bin\n"
|
||||
printf " - make-base-bin\n"
|
||||
}
|
||||
|
||||
init-env() {
|
||||
mkdir -v /opt/everest
|
||||
mkdir -v /opt/everest/{sources,toolchain,targetfs}
|
||||
cd /opt/everest
|
||||
}
|
||||
|
||||
get_skel() {
|
||||
printf ">> Creating directory layout in /opt/everest...\n"
|
||||
ROOT=/opt/everest/targetfs
|
||||
|
||||
mkdir -v $ROOT/{boot,dev,etc,home,mnt,opt,proc,root,srv,sys,tmp,var}
|
||||
mkdir -v $ROOT/usr
|
||||
mkdir -v $ROOT/usr/{bin,sbin,include,lib,lib64,libexec,local,sbin,share,src}
|
||||
mkdir -v $ROOT/var/{cache,lib,local,lock,log,opt,run,spool,tmp,www}
|
||||
mkdir -v $ROOT/var/cache/glacier
|
||||
mkdir -v $ROOT/var/log/glacier
|
||||
mkdir -v $ROOT/etc/glacier
|
||||
mkdir -v $ROOT/etc/glacier/pkginfo
|
||||
ln -sv $ROOT/usr/bin $ROOT/bin
|
||||
ln -sv $ROOT/usr/lib $ROOT/lib
|
||||
lv -sv $ROOT/usr/sbin $ROOT/sbin
|
||||
ln -sv $ROOT/usr/lib64 $ROOT/lib64
|
||||
printf ">> Finished.\n"
|
||||
exit 0
|
||||
}
|
||||
|
||||
prepare_for_pkg() {
|
||||
printf ">> Preparing for package installation...\n"
|
||||
glacier -c system-toolchain-bin
|
||||
glacier -c busybox-base-bin
|
||||
glacier -c glacier-base-bin
|
||||
glacier -c make-base-bin
|
||||
printf ">> Done.\n"
|
||||
exit 0
|
||||
}
|
||||
|
||||
install_pkg() {
|
||||
printf ">> Installing packages...\n"
|
||||
glacier -ci system-toolchain-bin
|
||||
if [ "$?" != "0" ]; then
|
||||
exit 1
|
||||
fi
|
||||
glacier -ci busybox-base-bin
|
||||
if [ "$?" != "0" ]; then
|
||||
exit 1
|
||||
fi
|
||||
glacier -ci glacier-base-bin
|
||||
if [ "$?" != "0" ]; then
|
||||
exit 1
|
||||
fi
|
||||
glacier -ci make-base-bin
|
||||
if [ "$?" != "0" ]; then
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
warn_about_cache() {
|
||||
printf ">> WARNING: The cache was used for installing packages to the target.\n"
|
||||
printf ">> It is recommended to run the following command to clean the cache:\n"
|
||||
printf ">> glacier -cc\n"
|
||||
exit 0
|
||||
}
|
||||
|
||||
change_ownership() {
|
||||
printf ">> Ensuring file ownership is correct...\n"
|
||||
chown -Rv root:root /opt/everest/targetfs
|
||||
chgrp -v 13 /opt/everest/targetfs/var/log/lastlog
|
||||
printf ">> Done.\n"
|
||||
}
|
||||
|
||||
create_img() {
|
||||
printf ">> Creating filesystem image...\n"
|
||||
install -dv /opt/everest/build
|
||||
cd /opt/everest/targetfs
|
||||
tar -cvf /opt/everest/build/everestlinux-RELEASE-img.tar *
|
||||
zstd /opt/everest/build/everestlinux-RELEASE-img.tar
|
||||
rm /opt/everest/build/everestlinux-${EVEREST_RELEASE}-img.tar
|
||||
printf ">> Done.\n"
|
||||
}
|
||||
|
||||
finish() {
|
||||
printf ">> Build has finished.\n"
|
||||
printf ">> Filesystem image is located in the following directory:\n"
|
||||
printf ">> /opt/everest/build\n"
|
||||
}
|
||||
|
||||
showhelp_big() {
|
||||
printf "glacier-mkimg - easily compile an Everest Linux image\n"
|
||||
printf "usage - glacier-mkimg [-h] [init] [-t] [-s] [-p] [-o] [-i]\n"
|
||||
printf "\n"
|
||||
printf "glacier-mkimg {init} initialize the environment\n"
|
||||
printf "glacier-mkimg {-s} only download filesystem skeleton\n"
|
||||
printf "glacier-mkimg {-p} only install packages to /opt/everest\n"
|
||||
printf "glacier-mkimg {-o} only change ownership of /opt/everest\n"
|
||||
printf "glacier-mkimg {-i} only create image\n"
|
||||
printf "\n"
|
||||
printf "If no option is passed, glacier-mkimg will perform all tasks\n"
|
||||
printf "glacier-mkimg init must be run before anything else is done\n"
|
||||
printf "\n"
|
||||
printf "This program is free software.\n"
|
||||
printf "See the GNU GPL version 3 for details.\n"
|
||||
exit 0
|
||||
}
|
||||
|
||||
case $1 in
|
||||
-h|--help)
|
||||
showhelp_big
|
||||
;;
|
||||
init)
|
||||
am_i_root "$@"
|
||||
init_env "$@"
|
||||
exit 0
|
||||
;;
|
||||
-s)
|
||||
get_skel "$@"
|
||||
exit 0
|
||||
;;
|
||||
-p)
|
||||
prepare_for_pkg "$@"
|
||||
install_pkg "$@"
|
||||
warn_about_cache "$@"
|
||||
exit 0
|
||||
;;
|
||||
-o)
|
||||
change_ownership "$@"
|
||||
exit 0
|
||||
;;
|
||||
-i)
|
||||
create_img "$@"
|
||||
exit 0
|
||||
;;
|
||||
-*)
|
||||
printf "usage: glacier-mkimg [-h] [init] [-s] [-p] [-o] [-i]\n"
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
get_skel "$@"
|
||||
prepare_for_pkg "$@"
|
||||
install_pkg "$@"
|
||||
warn_about_cache "$@"
|
||||
change_ownership "$@"
|
||||
create_img "$@"
|
||||
finish
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
printf "usage: glacier-mkimg [-h] [init] [-s] [-p] [-o] [-i]\n"
|
||||
exit 1
|
@ -1,12 +1,45 @@
|
||||
#
|
||||
# /etc/glacier.conf
|
||||
# The settings stored in this file will be loaded when Glacier is called
|
||||
# For more information on each of these options, see https://git.everest
|
||||
#
|
||||
|
||||
# Repository Glacier will download programs from
|
||||
# Repositories Glacier will use
|
||||
|
||||
export GREPO="https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main"
|
||||
export ALLOWED_REPOS=("world" "galaxy" "universe" "multiverse")
|
||||
#[world]
|
||||
export GREPO1="https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/world" # System Software
|
||||
|
||||
#[galaxy]
|
||||
export GREPO2="https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/galaxy" # GPL Only Software
|
||||
|
||||
#[universe]
|
||||
export GREPO3="https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/universe" # All Open Source Software
|
||||
|
||||
#[multiverse]
|
||||
#export GREPO4=https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/multiverse # Proprietary Software
|
||||
|
||||
#[world-testing]
|
||||
#export GREPO5=https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/world-testing
|
||||
|
||||
#[galaxy-testing]
|
||||
#export GREPO6=https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/galaxy-testing
|
||||
|
||||
#[universe-testing]
|
||||
#export GREPO7=https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/universe-testing
|
||||
|
||||
#[multiverse-testing]
|
||||
#export GREPO8=https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/multiverse-testing
|
||||
|
||||
# Checksum locations
|
||||
|
||||
export WORLD_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/world"
|
||||
export GALAXY_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/galaxy"
|
||||
export UNIEVRSE_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/universe"
|
||||
export MULTIVERSE_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/multiverse"
|
||||
export WORLD_TESTING_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/world-testing"
|
||||
export GALAXY_TESTING_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/galaxy-testing"
|
||||
export UNIVERSE_TESTING_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/universe-testing"
|
||||
export MULTIVERSE_TESTING_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/multiverse-testing"
|
||||
|
||||
# Define colors and unicode symbols to be used
|
||||
export red="\033[1;31m"
|
||||
@ -22,16 +55,9 @@
|
||||
# Which backend Glacier will use to download files
|
||||
# Selecting more than one backend will cause breakage
|
||||
export GLACIER_DOWNLOAD_BACKEND="wget --quiet --show-progress"
|
||||
#export GLACIER_DOWNLOAD_BACKEND="curl --output $2.tar.gz"
|
||||
#export GLACIER_DOWNLOAD_BACKEND="curl --output $input.tar.gz"
|
||||
#export GLACIER_DOWNLOAD_BACKEND="aria2c"
|
||||
|
||||
# Enable/disable package integrity checking
|
||||
# WARNING: Keeping this enabled is strongly recommended.
|
||||
# This option ensures all packages from the repositories are genuine.
|
||||
|
||||
export GLACIER_DO_INT_CHECK="true"
|
||||
|
||||
#
|
||||
# end /etc/glacier.conf
|
||||
#
|
||||
|
||||
|
430
src/glacier.test
430
src/glacier.test
@ -1,430 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Glacier - manage installed packages on a Linux system
|
||||
# This program is free software - you can distribute it
|
||||
# under the terms of the GNU General Public License v3.0,
|
||||
# or at your option, any later version.
|
||||
|
||||
# A copy of the GNU General Public License should have been
|
||||
# recieved along with this program. If not, see
|
||||
# <https://www.gnu.org/licenses>
|
||||
|
||||
source $(pwd)/glacier.conf
|
||||
|
||||
get_pkg() {
|
||||
printf "$blue[ i ]$reset Downloading archive for package '$2'...\n"
|
||||
$GLACIER_DOWNLOAD_BACKEND $GREPO1/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO2/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO3/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO4/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO5/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO6/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO7/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO8/$2.tar.gz
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Package '$2' not found.\n"
|
||||
exit 1
|
||||
fi
|
||||
$GLACIER_DOWNLOAD_BACKEND $GREPO1/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO2/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO3/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO4/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO5/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO6/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO7/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO8/$2.tar.gz
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Package checksum not found.\n"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
int_check() {
|
||||
if [ "$GLACIER_DO_INT_CHECK" = "true" ]; then
|
||||
printf "$blue[ i ]$reset Checking package integrity...\n"
|
||||
/usr/bin/glacier-integrity-check
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Integrity check failed.\n"
|
||||
exit 1
|
||||
fi
|
||||
printf "$green[ $check ]$reset Integrity check passed.\n"
|
||||
else
|
||||
printf "$yellow[ ! ]$reset Skipping integrity check...\n"
|
||||
fi
|
||||
}
|
||||
|
||||
unpack_pkg() {
|
||||
printf "$blue[ i ]$reset Unpacking $2.tar.gz...\n"
|
||||
mkdir $2 && mv $2.tar.gz $2 && cd $2
|
||||
tar -xf $2.tar.gz
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Could not unpack $2.tar.gz.\n"
|
||||
cd .. && rm -rf $2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
installpkg() {
|
||||
printf "$blue[ i ]$reset Installing $2...\n"
|
||||
sleep 1
|
||||
chmod +x *
|
||||
./INSTALL.sh
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Failed to update $2.\n"
|
||||
cd .. && rm -rf $2
|
||||
exit 1
|
||||
fi
|
||||
./$2.ts.sh
|
||||
mv $2-pkginfo.json /etc/glacier/pkginfo
|
||||
}
|
||||
|
||||
updatepkg() {
|
||||
printf "$blue[ i ]$reset Updating $2...\n"
|
||||
sleep 1
|
||||
chmod +x *
|
||||
./UPDATE.sh
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Failed to update $2.\n"
|
||||
cd .. && rm -rf $2
|
||||
exit 1
|
||||
fi
|
||||
./$2.ts.sh
|
||||
}
|
||||
|
||||
removepkg() {
|
||||
printf "$blue[ i ]$reset Removing $2...\n"
|
||||
sleep 1
|
||||
chmod +x *
|
||||
/etc/glacier/pkginfo/$2.remove
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Failed to remove $2.\n"
|
||||
cd .. && rm -rf $2
|
||||
exit 1
|
||||
fi
|
||||
rm /var/log/glacier/$2.timestamp
|
||||
rm /etc/glacier/pkginfo/$2-pkginfo.json
|
||||
}
|
||||
|
||||
installpkg_from_cache() {
|
||||
printf "$blue[ i ]$reset Installing $2 from cache...\n"
|
||||
sleep 1
|
||||
cd /var/cache/glacier && cp $2.tar.gz /tmp && cd /tmp
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Package does not exist in cache.\n"
|
||||
exit 1
|
||||
fi
|
||||
unpack_pkg
|
||||
install_pkg
|
||||
}
|
||||
|
||||
clear_cache() {
|
||||
printf "$blue[ i ]$reset Clearing cache...\n"
|
||||
sleep 1
|
||||
cd /var/cache/glacier && rm -rvf *
|
||||
if [ "$?" != "0" ]; then
|
||||
printf "$red[ $error ]$reset Some items could not be cleared.\n"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# Show Glacier debugging info
|
||||
#
|
||||
|
||||
debug_info() {
|
||||
printf "$blue>> Glacier v3.2.0$reset\n"
|
||||
printf ">> Checking for valid download backend...\n"
|
||||
whereis wget
|
||||
whereis curl
|
||||
whereis aria2c
|
||||
printf ">> Checking which download backend is in use...\n"
|
||||
echo $GLACIER_DOWNLOAD_BACKEND
|
||||
printf ">> Checking if all Glacier files are present...\n"
|
||||
whereis glacier glacier.conf make.conf
|
||||
ls /var/log | grep glacier
|
||||
ls /var/cache | grep glacier
|
||||
printf ">> If any files are missing, Glacier will not behave properly.\n"
|
||||
printf ">> Checking if terminal can output unicode symbols...\n"
|
||||
printf "$check\n"
|
||||
printf "$error\n"
|
||||
printf "$warning\n"
|
||||
printf "$question\n"
|
||||
printf "$red Red.$reset\n"
|
||||
printf "$green Green.$reset\n"
|
||||
printf "$yellow Yellow.$reset\n"
|
||||
printf "$blue Blue.$reset\n"
|
||||
printf "NOTE: If you use a custom colorscheme, colors will not match.\n"
|
||||
printf ">> Checking if repositories are valid...\n"
|
||||
echo $GREPO1
|
||||
echo $GREPO2
|
||||
echo $GREPO3
|
||||
echo $GREPO4
|
||||
echo $GREPO5
|
||||
echo $GREPO6
|
||||
echo $GREPO7
|
||||
echo $GREPO8
|
||||
printf ">> Checking which shell is in use...\n"
|
||||
which $SHELL
|
||||
printf "NOTE: If you use zsh, a percentage symbol may appear after some lines.\n"
|
||||
printf ">> Gathered debug information.\n"
|
||||
printf ">> To save this information to a file, run:\n"
|
||||
printf ">> $ glacier --debuginfo > glacier.debug\n"
|
||||
}
|
||||
|
||||
#
|
||||
# Parses JSON from pkginfo files and outputs it
|
||||
#
|
||||
|
||||
query() {
|
||||
printf "$blue[ i ]$reset Showing information for package '$2'.\n"
|
||||
printf "$blue>> Package name:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .package_name
|
||||
printf "$blue>> Package version:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .package_version
|
||||
printf "$blue>> Package description:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .package_description
|
||||
printf "$blue>> Source tree size:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .src_tree_size
|
||||
printf "$blue>> Size of installed files:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .exec_size
|
||||
printf "$blue>> License:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .license
|
||||
printf "$blue>> Installation date:$reset " && cat /var/log/glacier/$2.timestamp
|
||||
}
|
||||
|
||||
#
|
||||
# Will either keep removal script, update it with a new one, or delete it alltogether
|
||||
#
|
||||
|
||||
cleanup_keep_rm () {
|
||||
printf "$blue[ i ]$reset Cleaning up...\n"
|
||||
mv REMOVE.sh /etc/glacier/pkginfo/$2.remove
|
||||
cd .. && rm -rf *.checksum *.tar.* $2
|
||||
}
|
||||
|
||||
cleanup_update_rm () {
|
||||
printf "$blue[ i ]$reset Cleaning up...\n"
|
||||
rm /etc/glacier/pkginfo/$2.remove
|
||||
mv REMOVE.sh /etc/glacier/pkginfo/$2.remove
|
||||
cd .. && rm -rf *.checksum *.tar.* $2
|
||||
}
|
||||
|
||||
cleanup_del_rm () {
|
||||
printf "$blue[ i ]$reset Cleaning up...\n"
|
||||
rm /etc/glacier/pkginfo/$2.remove
|
||||
cd .. && rm -rf *.checksum *.tar.* $2
|
||||
}
|
||||
|
||||
#
|
||||
# Execute pre and posr hooks from files
|
||||
#
|
||||
|
||||
pre_hooks() {
|
||||
source /etc/glacier/hooks
|
||||
}
|
||||
|
||||
pre_op_hooks() {
|
||||
printf "$blue[ i ]$reset Executing pre-operation hooks...\n"
|
||||
/etc/glacier/pre-hooks
|
||||
}
|
||||
|
||||
post_hooks () {
|
||||
printf "$blue[ i ]$reset Executing post-operation hooks...\n"
|
||||
/etc/glacier/post-hooks
|
||||
}
|
||||
|
||||
case $1 in
|
||||
-h|--help)
|
||||
printf "$blue[ * ] Glacier - Manage installed packages on the system$reset\n"
|
||||
printf "usage: glacier [-f] [-u] [-x] [-q] [-c] [-ci] [-cc] [--debuginfo]\n"
|
||||
printf "\n"
|
||||
printf "$blue=== Information ===$reset\n"
|
||||
printf "glacier {-h/--help} - Show this message and exit\n"
|
||||
printf "glacier {-v/--version} - Show the version and exit\n"
|
||||
printf "\n"
|
||||
printf "$blue=== Operations ===$reset\n"
|
||||
printf "glacier {-f/install} - Install a new package\n"
|
||||
printf "glacier {-u/update} - Update an installed package\n"
|
||||
printf "glacier {-x/remove} - Remove an installed package\n"
|
||||
printf "glacier {-q/query} - Query an installed package\n"
|
||||
printf "glacier {-c/cache} - Download a package to the cache\n"
|
||||
printf "glacier {-ci/cache-install} - Install a package from the cache\n"
|
||||
printf "glacier {-cc/cache-clear} - Clear the cache\n"
|
||||
printf "\n"
|
||||
printf "$blue=== Debugging ===$reset\n"
|
||||
printf "glacier {--debuginfo} - Show debugging information\n"
|
||||
printf "\n"
|
||||
printf "$blue=== Licensing ===$reset\n"
|
||||
printf "This program is free software: you can redistribute it and/or modify it\n"
|
||||
printf "under the terms of the GNU General Public License as published by the\n"
|
||||
printf "Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n"
|
||||
exit 0
|
||||
;;
|
||||
-v|--version)
|
||||
printf "${blue}Glacier v3.2.0${reset}\n"
|
||||
exit 0
|
||||
;;
|
||||
-f|install)
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf "$red[ $error ]$reset Please run Glacier as root.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$2" == "" ]; then
|
||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf "$blue[ i ]$reset Installing package '$2'.\n"
|
||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
cd /opt/glacier/workspace
|
||||
printf "\n"
|
||||
pre_hooks "$@"
|
||||
get_pkg "$@"
|
||||
int_check "$@"
|
||||
unpack_pkg "$@"
|
||||
pre_op_hooks "$@"
|
||||
installpkg "$@"
|
||||
post_hooks "$@"
|
||||
cleanup_keep_rm "$@"
|
||||
printf "$green[ $check ]$reset Operation completed.\n"
|
||||
exit 0
|
||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
||||
printf "\n"
|
||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
-u|update)
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf "$red[ $error ]$reset Please run Glacier as root.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$2" == "" ]; then
|
||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf "$blue[ i ]$reset Updating package '$2'.\n"
|
||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
cd /opt/glacier/workspace
|
||||
printf "\n"
|
||||
pre_hooks "$@"
|
||||
get_pkg "$@"
|
||||
int_check "$@"
|
||||
unpack_pkg "$@"
|
||||
pre_op_hooks "$@"
|
||||
updatepkg "$@"
|
||||
post_hooks "$@"
|
||||
cleanup_update_rm "$@"
|
||||
printf "$green[ $check ]$reset Operation completed.\n"
|
||||
exit 0
|
||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
||||
printf "\n"
|
||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
-x|remove)
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf "$red[ $error ]$reset Please run Glacier as root.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$2" == "" ]; then
|
||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf "$blue[ i ]$reset Removing package '$2'.\n"
|
||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
cd /opt/glacier/workspace
|
||||
printf "\n"
|
||||
pre_hooks "$@"
|
||||
removepkg "$@"
|
||||
post_hooks "$@"
|
||||
cleanup_del_rm "$@"
|
||||
printf "$green[ $check ]$reset Operation completed.\n"
|
||||
exit 0
|
||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
||||
printf "\n"
|
||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
-q|query)
|
||||
if [ "$2" == "" ]; then
|
||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
query "$@"
|
||||
exit 0
|
||||
;;
|
||||
-c|cache)
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf "$red[ $error ]$reset Please run Glacier as root.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$2" == "" ]; then
|
||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf "$blue[ i ]$reset Caching package '$2'.\n"
|
||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
cd /var/cache/glacier
|
||||
printf "\n"
|
||||
get_pkg "$@"
|
||||
int_check "$@"
|
||||
printf "$green[ $check ]$reset Operation completed.\n"
|
||||
exit 0
|
||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
||||
printf "\n"
|
||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
-ci|cache-install)
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf "$red[ $error ]$reset Please run Glacier as root.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$2" == "" ]; then
|
||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf "$blue[ i ]$reset Installing package '$2' from cache.\n"
|
||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
cd /var/cache/glacier
|
||||
mv $2.tar.gz /opt/glacier/workspace
|
||||
cd /opt/glacier/workspace
|
||||
printf "\n"
|
||||
pre_hooks "$@"
|
||||
unpack_pkg "$@"
|
||||
pre_op_hooks "$@"
|
||||
installpkg "$@"
|
||||
post_hooks "$@"
|
||||
cleanup_keep_rm "$@"
|
||||
printf "$green[ $check ]$reset Operation completed.\n"
|
||||
exit 0
|
||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
||||
printf "\n"
|
||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
-cc|cache-clear)
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
printf "$red[ $error ]$reset Please run Glacier as root.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
clear_cache "$@"
|
||||
printf "$green[ $check ]$reset Operation completed.\n"
|
||||
exit 0
|
||||
;;
|
||||
--debuginfo)
|
||||
debug_info "$@"
|
||||
exit 0
|
||||
;;
|
||||
-*|--*)
|
||||
printf "$red[ $error ]$reset Unknown option, see 'glacier -h' for usage.\n"
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
printf "$red[ $error ]$reset Unknown option, see 'glacier -h' for usage.\n"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
printf "$red[ $error ]$reset Unknown option, see 'glacier -h' for usage.\n"
|
||||
exit 1
|
3
src/glacier_release
Executable file
3
src/glacier_release
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
export GLACIER_RELEASE="3.0.0 "
|
58
src/gscripts
Executable file
58
src/gscripts
Executable file
@ -0,0 +1,58 @@
|
||||
#!/bin/sh
|
||||
# gscripts - Scripts for Glacier operations
|
||||
|
||||
source /etc/glacier.conf
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
help)
|
||||
printf "gscripts - backend for many Glacier functionalities since v3\n"
|
||||
printf "gscripts {help} show this message\n"
|
||||
printf "gscripts {integrity-check} verify package integrity\n"
|
||||
printf "gscripts {download} download a package\n"
|
||||
printf "gscripts {post-install} run post installation cleanup hooks\n"
|
||||
printf "\n"
|
||||
printf "this program can be distributed under the terms of the GNU General\n"
|
||||
printf "Public License version 3 or higher\n"
|
||||
exit 0
|
||||
;;
|
||||
preload)
|
||||
/etc/glacier/hooks
|
||||
if [ "$?" != "0" ]; then
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
;;
|
||||
integrity-check)
|
||||
$GLACIER_DOWNLOAD_BACKEND $WORLD_SUM/$input.checksum || $GLACIER_DOWNLOAD_BACKEND $GALAXY_SUM/$input.checksum || $GLACIER_DOWNLOAD_BACKEND $UNIVERSE_SUM/$input.checksum || $GLACIER_DOWNLOAD_BACKEND $MULTIVERSE_SUM/$input.checksum || $GLACIER_DOWNLOAD_BACKEND $WORLD_TESTING_SUM/$input.checksum || $GLACIER_DOWNLOAD_BACKEND $GALAXY_TESTING_SUM/$input.checksum || $GLACIER_DOWNLOAD_BACKEND $UNIVERSE_TESTING_SUM/$input.checksum || $GLACIER_DOWNLOAD_BACKEND $MULTIVERSE_TESTING_SUM/$input.checksum
|
||||
exit 0
|
||||
|
||||
LOCAL_SUM=$(sha256sum $input.tar.gz)
|
||||
|
||||
if [ $input.checksum = $LOCAL_SUM ]; then
|
||||
printf "$green [ $check ]$reset Integrity check passed.\n"
|
||||
rm $input.checksum
|
||||
exit 0
|
||||
else
|
||||
printf "$red [ $error ]$reset Integrity check failed.\n"
|
||||
rm $input.checksum
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
download)
|
||||
$GLACIER_DOWNLOAD_BACKEND $GREPO1/$input.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO2/$input.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO3/$input.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO4/$input.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO5/$input.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO6/$input.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO7/$input.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO8/$input.tar.gz
|
||||
exit 0
|
||||
;;
|
||||
post-install)
|
||||
mv -vf -- $input-pkginfo.json /etc/glacier/pkginfo || printf "error in subprocess /usr/bin/gscripts: could not stat $input-pkginfo.json\n" && exit 1
|
||||
cd ..
|
||||
rm -rf $input || printf "error in subprocess /usr/bin/gscripts: could not remove package source\n" && exit 1
|
||||
;;
|
||||
-*|--*)
|
||||
printf "gscripts - no valid option was passed, see 'help' for details\n"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
printf "gscripts - no option was passed, see 'help' for details\n"
|
@ -3,3 +3,4 @@
|
||||
|
||||
source /etc/make.conf
|
||||
source /etc/glacier.conf
|
||||
source /etc/glacier/glacier_release
|
||||
|
@ -2,9 +2,7 @@
|
||||
# This file is meant to maintain legacy support.
|
||||
|
||||
printf "This package uses the legacy hooks file (/etc/glacier/hooks.sh).\n"
|
||||
printf ">>> This is not an error. <<<\n"
|
||||
printf "If you are not the maintainer of this package, there is no manual intervention required.\n"
|
||||
printf ">>> This is not an error. <<< There is no manual intervention needed.\n"
|
||||
printf "If you are the maintainer of this package, please update your usrbuild.sh, usrupdate.sh, and usrremove.sh accordingly.\n"
|
||||
|
||||
source /etc/glacier/hooks && /etc/glacier/hooks
|
||||
|
||||
|
@ -1,72 +0,0 @@
|
||||
/* Copyright (C) 2022-2023 Everest Linux Developers
|
||||
|
||||
This file is part Glacier.
|
||||
|
||||
Glacier 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.
|
||||
|
||||
Glacier 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 Glacier. If not, see <https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <stdio.h>
|
||||
#include<string.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
FILE *fp1;
|
||||
FILE *fp2;
|
||||
|
||||
int cnt1 = 0;
|
||||
int cnt2 = 0;
|
||||
int flg = 0;
|
||||
|
||||
if (argc < 3) {
|
||||
printf("not enough arguments\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
fp1 = fopen(argv[1],"r");
|
||||
if (fp1 == NULL) {
|
||||
printf("\n%s cannot open file \n",argv[1]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
fseek(fp1,0,SEEK_END);
|
||||
cnt1 = ftell(fp1);
|
||||
|
||||
fp2 = fopen(argv[2],"r");
|
||||
if (fp2 == NULL) {
|
||||
printf("\n%s cannot open file \n",argv[2]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
fseek(fp2,0,SEEK_END);
|
||||
cnt2 = ftell(fp2);
|
||||
|
||||
fseek(fp1,0,SEEK_SET);
|
||||
fseek(fp2,0,SEEK_SET);
|
||||
|
||||
if (cnt1 != cnt2) {
|
||||
return 1;
|
||||
} else {
|
||||
while ( ! feof(fp1)) {
|
||||
if (fgetc(fp1) != fgetc(fp2)) {
|
||||
flg = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (flg) return 1;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
fclose(fp1);
|
||||
fclose(fp2);
|
||||
|
||||
return 0;
|
||||
}
|
0
src/make.conf
Executable file → Normal file
0
src/make.conf
Executable file → Normal file
24
src/messages
Executable file
24
src/messages
Executable file
@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
# Glacier messages storage
|
||||
|
||||
source /etc/glacier.conf
|
||||
|
||||
# Errors
|
||||
export GLACIER_ERROR_NO_ROOT=$(printf "$red [ $error ]$reset Please run Glacier as root.\n")
|
||||
export GLACIER_ERROR_DOES_NOT_EXIST=$(printf "$red [ $error ]$reset Package $input either does not exist, or is in a repository that is not enabled.\n")
|
||||
export GLACIER_ERROR_CANNOT_UNPACK=$(printf "$red [ $error ]$reset Package archive cannot be unpacked.\n")
|
||||
export GLACIER_ERROR_INSTRUCTIONS_CANNOT_EXECUTE=$(printf "$red [ $error ]$reset Instructions were either unable to execute, or encountered an error while executing.\n")
|
||||
export GLACIER_ERROR_NO_SUCH_OPTION=$(printf "$red [ $error ]$reset Unknown option, see 'glacier -h' for usage.\n")
|
||||
|
||||
# Status
|
||||
export GLACIER_STATUS_INSTALLING=$(printf "$blue [ i ]$reset Installing $input...\n")
|
||||
export GLACIER_STATUS_UPDATING=$(printf "$blue [ i ]$reset Updating $input...\n")
|
||||
export GLACIER_STATUS_REMOVING=$(printf "$blue [ i ]$reset Removing $input...\n")
|
||||
export GLACIER_STATUS_CACHING=$(printf "$blue [ i ]$reset Caching $input...\n")
|
||||
export GLACIER_STATUS_UNPACKING=$(printf "$blue [ i ]$reset Unpacking $input.tar.gz...\n")
|
||||
export GLACIER_STATUS_INTEGRITY_CHECK=$(printf "$blue [ i ]$reset Verifying integrity of package...\n")
|
||||
export GLACIER_STATUS_EXECUTING=$(printf "$blue [ i ]$reset Executing instructions...\n")
|
||||
export GLACIER_WHICH_PKG=$(printf "$blue [ $question ]$reset Enter package name: ")
|
||||
|
||||
# Success
|
||||
export GLACIER_SUCCESS=$(printf "$green [ $check ]$reset Operation finished successfully.\n")
|
@ -1,5 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Glacier post-operation hooks
|
||||
|
||||
printf "No hooks to be executed.\n"
|
||||
exit 1
|
@ -1,5 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Hooks to be executed before performing an operation on a package
|
||||
|
||||
printf "No hooks to be executed.\n"
|
||||
exit 0
|
Loading…
Reference in New Issue
Block a user