New README and devtools created

This commit is contained in:
Liam Waldron 2023-01-08 12:30:30 -05:00
parent 43219e7ed0
commit 216969eebc
4 changed files with 183 additions and 31 deletions

78
README Normal file
View File

@ -0,0 +1,78 @@
+--------------------------------------+
| Welcome to the Glacier package index |
+--------------------------------------+
This is the official package repository for Glacier.
+---------------------+
| Submitting Packages |
+---------------------+
Submitting packages is limited to trusted users only.
Additionally, these steps assume you have access to gpc.
A copy is available in glacier-pkgs/devtools
1) Clone this repository. This will take a while.
2) Ensure your trusted user key is valid.
3) Create a package archive. This needs to include the following:
- The package's source tree
- INSTALL.sh
- UPDATE.sh
- REMOVE.sh
- package_name-pkginfo.json, containing the following:
{
"package_name": "",
"package_version": "",
"package_description": "",
"src_tree_size": "",
"exec_size": "",
"license": ""
}
- package_name.ts.sh, containing the following:
#!/bin/sh
touch /var/log/glacier/package_name.timestamp
date >> /var/log/glacier/package_name.timestamp
As well as submitting the package itself, a separate file, package_name.checksum
needs to be submitted as well.
Licenses need to follow this naming scheme:
- GPL V3, GPL V2
- MIT, BSD, Apache
For all other licenses, use the license name.
Once all of these files are in a directory, run:
(user)$ gpc check package_dir
# If any errors are detected by gpc, recheck everything
(user)$ gpc mkpkg package_dir
(user)$ mv package_dir/package_name.tar.gz package_dir/package_name.checksum .
4) Create a new branch from main. Name it the following:
maintainer_name-date
5) Submit the package, ensuring it is in the correct directory within this repository:
- world-testing, for system software
- galaxy-testing, for GPL software ONLY
- universe-testing, for other open source licensed software
- multiverse-testing, for proprietary, EULA, and binary-redistributable software
6) Merge your branch with main.
7) Test your package. 1 other trusted user must test the package
and ensure it works correctly.
After the package has been verified, repeat step 4, and move your package out
of testing and into stable.
+------------------------------+
| Reporting License Violations |
+------------------------------+
If your software is included in Glacier's package index, and we
are violating your license, reach out to any developer and we
will be happy to resolve the issue with you.

View File

@ -1,31 +0,0 @@
# glacier-pkgs
Collection of packages used by the Glacier package manager.
There are 2 different packaging methods.
The first, which is used if your program is relatively simple (only one or 2 executables installed), is relatively simple.
The second, which is used for more complex programs (a lot of executables installed and a lot of programs made), compiles said programs from source.
Regardless of which method you choose, all archives must have the following files:
- An information file named "{package_name}-pkginfo.json", which must contain the package's name, version, description, source tree size, executable size, and any dependencies that Glacier will install, and the name of the license (if it utilizes a license that is not GPL 3.0)
- A script named INSTALL.sh describing what steps must be taken to install the package
- A script named UPDATE.sh describing what steps must be taken to update the package
- A script named REMOVE.sh describing what steps must be taken to remove the package
- The executable (or the source tree if the program will be compiled from source)
- (optional) a copy of the license (if it utilizes a license that is not GPL 3.0)
- A separate file in the repositories named (package_name).signature (this can be done by running `shasum (package).tar.gz`)
In the world repository, there should only be system software
In the galaxy repository, there should be GPL only software
In the universe repository, there can only be open source software (any license)
In the multiverse repository, there should only be proprietary software
**NOTICES**
Soon we will begin migrating packages to their correct repositories.

98
devtools/gpc Executable file
View File

@ -0,0 +1,98 @@
#!/bin/sh
# Glacier package checker
INSCRIPT=INSTALL.sh
UPSCRIPT=UPDATE.sh
RMSCRIPT=REMOVE.sh
PKGINFO=*-pkginfo.json
TIMESTAMP=*.ts.sh
check_dir() {
printf "Searching for package directory...\n"
if [ -d "$2" ]; then
printf "${green}$2 exists.${reset}\n"
else
printf "${red}$2 does not exist.${reset}\n"
exit 1
fi
cd $2
printf "Searching for instruction scripts...\n"
if [ -f $INSCRIPT -a -f $UPSCRIPT -a -f $RMSCRIPT ]; then
printf "${green}Instruction scripts exist.${reset}\n"
else
printf "${red}Instruction scripts do not exist.${reset}\n"
exit 1
fi
printf "Searching for miscellaneous files...\n"
if [ -f $PKGINFO -a -f $TIMESTAMP ]; then
printf "${green}$2-pkginfo.json and $2.ts.sh exist.${reset}\n"
else
printf "${red}$2-pkginfo.json and $2.ts.sh do not exist.${reset}\n"
exit 1
fi
}
mkpkg() {
printf "${blue} Making package...${reset}\n"
cd $2
tar -czvf $2.tar.gz *
printf "${blue}Generating package checksum...${reset}\n"
cd ..
sha256sum $2/$2.tar.gz >> $2.checksum
printf "${green}Finished making package${reset}\n"
exit 0
}
helpmsg() {
printf "gpc - test and create Glacier compatible packages\n"
printf "usage: gpc [check] [mkpkg] [-h/--help] [-v/--version] pkg-dir\n"
printf "\n"
printf "gpc {-h|--help} show this message and exit\n"
printf "gpc {-v|--version} show the version and exit\n"
printf "gpc {check} check a package directory for compliance\n"
printf "gpc {mkpkg} create a package from a directory\n"
printf "\n"
printf "This program is free software.\n"
printf "See the GNU GPL version 3 for details.\n"
exit 0
}
helpmsg_small() {
printf "usage: gpc [check] [mkpkg] [-h/--help] [-v/--version] pkg-dir\n"
exit 1
}
printver() {
printf "gpc v2.0.0\n"
exit 0
}
preload() {
. $(pwd)/gpc.conf
if [ "$?" != "0" ]; then
printf "error while parsing gpc config file\n"
exit 1
fi
}
case $1 in
-h|--help)
helpmsg "$@"
;;
-v|--version)
printver "$@"
;;
check)
check_dir "$@"
;;
mkpkg)
mkpkg "$@"
;;
*)
helpmsg_small "$@"
;;
esac

7
devtools/gpc.conf Executable file
View File

@ -0,0 +1,7 @@
# $(pwd)/gpc.conf
# Colors and unicode symbols to be used
export red="\033[1;31m"
export green="\033[1;32m"
export blue="\033[1;34m"
export reset="\033[m"