mirror of
https://github.com/EnumeratedDev/bpm-utils.git
synced 2026-09-16 02:56:11 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
66c8dd5f91 | ||
|
|
9372acba3f | ||
|
|
efb904fa37 | ||
|
|
430a233879 | ||
|
|
9ef4699c0d |
@@ -21,7 +21,7 @@ Creating a package for BPM with these utilities is simple
|
|||||||
|
|
||||||
2) Run the following command (You can run the comamnd with no arguments to see available options)
|
2) Run the following command (You can run the comamnd with no arguments to see available options)
|
||||||
```
|
```
|
||||||
bpm-setup -D my_bpm_package -t <binary/source>
|
bpm-setup -D my_package -t <binary/source>
|
||||||
```
|
```
|
||||||
3) This will create a directory named 'my_bpm_package' under the current directory with all the required files for the chosen package type
|
3) This will create a directory named 'my_bpm_package' under the current directory with all the required files for the chosen package type
|
||||||
4) You are able to edit the pkg.info descriptor file inside the newly created directory to your liking. Here's an example of what a descriptor file could look like
|
4) You are able to edit the pkg.info descriptor file inside the newly created directory to your liking. Here's an example of what a descriptor file could look like
|
||||||
@@ -29,12 +29,14 @@ bpm-setup -D my_bpm_package -t <binary/source>
|
|||||||
name: my_package
|
name: my_package
|
||||||
description: My package's description
|
description: My package's description
|
||||||
version: 1.0
|
version: 1.0
|
||||||
|
revision: 2 (Optional)
|
||||||
architecture: x86_64
|
architecture: x86_64
|
||||||
url: https://www.my-website.com/ (Optional)
|
url: https://www.my-website.com/ (Optional)
|
||||||
license: MyLicense (Optional)
|
license: MyLicense (Optional)
|
||||||
type: <binary/source>
|
type: <binary/source>
|
||||||
depends: dependency1,dependency2 (Optional)
|
depends: ["dependency1","dependency2"] (Optional)
|
||||||
make_depends: make_depend1,make_depend2 (Optional)
|
optional_depends: ["optional_depend1","optional_depend2"]
|
||||||
|
make_depends: ["make_depend1","make_depend2"] (Optional)
|
||||||
```
|
```
|
||||||
### Binary Packages
|
### Binary Packages
|
||||||
3) If you are making a binary package, copy all your binaries along with the directories they reside in (i.e files/usr/bin/my_binary)
|
3) If you are making a binary package, copy all your binaries along with the directories they reside in (i.e files/usr/bin/my_binary)
|
||||||
|
|||||||
+41
-1
@@ -6,11 +6,12 @@ fi
|
|||||||
|
|
||||||
echo "$ARCH"
|
echo "$ARCH"
|
||||||
|
|
||||||
while getopts "ksa:" o; do
|
while getopts "ksfa:" o; do
|
||||||
case "${o}" in
|
case "${o}" in
|
||||||
a) ARCH="$OPTARG";;
|
a) ARCH="$OPTARG";;
|
||||||
k) KEEP=true;;
|
k) KEEP=true;;
|
||||||
s) SKIPCHECK=true;;
|
s) SKIPCHECK=true;;
|
||||||
|
f) FORCE=true;;
|
||||||
*) exit 1;;
|
*) exit 1;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -61,6 +62,44 @@ function ReadPkgInfo() {
|
|||||||
}
|
}
|
||||||
ReadPkgInfo
|
ReadPkgInfo
|
||||||
|
|
||||||
|
if [ -z "$FORCE" ] && command -v bpm &> /dev/null && [ -n "$PKGINFO[depends]" ]; then
|
||||||
|
MISSING=()
|
||||||
|
for depend in $(echo "${PKGINFO[depends]}" | tr -d '[]' | tr ',' '\n' ); do
|
||||||
|
if ! bpm info "$depend" &> /dev/null; then
|
||||||
|
MISSING+=("$depend")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ "${#MISSING[@]}" -ne 0 ]; then
|
||||||
|
echo "The following dependencies could not be resolved: ${MISSING[@]}"
|
||||||
|
EXIT=true
|
||||||
|
fi
|
||||||
|
elif ! command -v bpm &> /dev/null; then
|
||||||
|
echo "BPM not in PATH. Skipping dependency resolution"
|
||||||
|
elif [ -n "$FORCE" ]; then
|
||||||
|
echo "Force compilation enabled. Skipping dependency resolution"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$FORCE" ] && command -v bpm &> /dev/null && [ -n "$PKGINFO[make_depends]" ]; then
|
||||||
|
MISSING=()
|
||||||
|
for depend in $(echo "${PKGINFO[make_depends]}" | tr -d '[]' | tr ',' '\n' ); do
|
||||||
|
if ! bpm info "$depend" &> /dev/null; then
|
||||||
|
MISSING+=("$depend")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ "${#MISSING[@]}" -ne 0 ]; then
|
||||||
|
echo "The following make dependencies could not be resolved: ${MISSING[@]}"
|
||||||
|
EXIT=true
|
||||||
|
fi
|
||||||
|
elif ! command -v bpm &> /dev/null; then
|
||||||
|
echo "BPM not in PATH. Skipping make dependency resolution"
|
||||||
|
elif [ -n "$FORCE" ]; then
|
||||||
|
echo "Force compilation enabled. Skipping make dependency resolution"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$EXIT" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Creating temporary compilation directory structure
|
# Creating temporary compilation directory structure
|
||||||
TEMPDIR="/var/tmp/bpm_source_${PKGINFO[name]}"
|
TEMPDIR="/var/tmp/bpm_source_${PKGINFO[name]}"
|
||||||
if [ -d "$TEMPDIR" ] && [ -z "$KEEP" ]; then
|
if [ -d "$TEMPDIR" ] && [ -z "$KEEP" ]; then
|
||||||
@@ -68,6 +107,7 @@ if [ -d "$TEMPDIR" ] && [ -z "$KEEP" ]; then
|
|||||||
fi
|
fi
|
||||||
mkdir -p "$TEMPDIR"
|
mkdir -p "$TEMPDIR"
|
||||||
mkdir -p "$TEMPDIR"/source
|
mkdir -p "$TEMPDIR"/source
|
||||||
|
[ -d "$TEMPDIR"/output ] && rm -rf "$TEMPDIR"/output
|
||||||
mkdir -p "$TEMPDIR"/output
|
mkdir -p "$TEMPDIR"/output
|
||||||
tar -xf "$PACKAGE" -C "$TEMPDIR" source.sh
|
tar -xf "$PACKAGE" -C "$TEMPDIR" source.sh
|
||||||
if tar -xf "$PACKAGE" -C "$TEMPDIR" source-files &> /dev/null; then
|
if tar -xf "$PACKAGE" -C "$TEMPDIR" source-files &> /dev/null; then
|
||||||
|
|||||||
+25
-25
@@ -1,27 +1,33 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
if [ $# -eq 0 ]
|
|
||||||
then
|
|
||||||
echo "No output package name given!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f .compilation-options ]; then
|
if [ -f .compilation-options ]; then
|
||||||
source ./.compilation-options
|
source ./.compilation-options
|
||||||
fi
|
fi
|
||||||
|
|
||||||
while getopts "cska:" flag; do
|
while getopts "cskfa:" flag; do
|
||||||
case "$flag" in
|
case "$flag" in
|
||||||
c) CONVERT=true;;
|
c) CONVERT=true;;
|
||||||
k) KEEP=true;;
|
k) KEEP=true;;
|
||||||
s) SKIPCHECK=true;;
|
s) SKIPCHECK=true;;
|
||||||
|
f) FORCE=true;;
|
||||||
a) ARCH="${OPTARG}";;
|
a) ARCH="${OPTARG}";;
|
||||||
*) exit 1;;
|
*) exit 1;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
output="${@:$OPTIND:1}"
|
if [ -f pkg.info ]; then
|
||||||
|
echo "pkg.info file found"
|
||||||
|
else
|
||||||
|
echo "pkg.info file not found in $PWD"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ ! "$output" =~ ^[a-z.A-Z0-9_-]{1,}$ ]]; then
|
output="${@:$OPTIND:1}"
|
||||||
|
if [ -z "$output" ]; then
|
||||||
|
pkgname=$(grep "^name: " pkg.info)
|
||||||
|
output=$(echo "$pkgname" | cut -d' ' -f2)"-src.bpm"
|
||||||
|
fi
|
||||||
|
if [ -z "$output" ] || [[ ! "$output" =~ ^[a-z.A-Z0-9_-]{1,}$ ]]; then
|
||||||
echo "Invalid output name! The name must only contain letters, numbers, hyphens or underscores!"
|
echo "Invalid output name! The name must only contain letters, numbers, hyphens or underscores!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -55,10 +61,14 @@ else
|
|||||||
echo "post_install.sh file found"
|
echo "post_install.sh file found"
|
||||||
toCompress+=("post_install.sh")
|
toCompress+=("post_install.sh")
|
||||||
fi
|
fi
|
||||||
|
if [ -f pre_remove.sh ]; then
|
||||||
|
echo "pre_remove.sh file found"
|
||||||
|
toCompress+=("pre_remove.sh")
|
||||||
|
fi
|
||||||
if [ -f post_remove.sh ]; then
|
if [ -f post_remove.sh ]; then
|
||||||
echo "post_remove.sh file found"
|
echo "post_remove.sh file found"
|
||||||
toCompress+=("post_remove.sh")
|
toCompress+=("post_remove.sh")
|
||||||
fi
|
fi
|
||||||
if [ -d source-files ]; then
|
if [ -d source-files ]; then
|
||||||
if [ ! -z "$(ls -A source-files)" ]; then
|
if [ ! -z "$(ls -A source-files)" ]; then
|
||||||
echo "source-files/ directory found"
|
echo "source-files/ directory found"
|
||||||
@@ -71,13 +81,6 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f pkg.info ]; then
|
|
||||||
echo "pkg.info file found"
|
|
||||||
else
|
|
||||||
echo "pkg.info file not found in $PWD"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
for pkginfo in ./pkg.inf*; do
|
for pkginfo in ./pkg.inf*; do
|
||||||
pkginfo=$(basename "$pkginfo")
|
pkginfo=$(basename "$pkginfo")
|
||||||
echo "${pkginfo} file found"
|
echo "${pkginfo} file found"
|
||||||
@@ -89,11 +92,8 @@ tar -c --owner=0 --group=0 --no-same-owner -zf "$output" "${toCompress[@]}"
|
|||||||
|
|
||||||
if [ ! -z "$CONVERT" ] && "$CONVERT" && [[ "$type" == "source" ]]; then
|
if [ ! -z "$CONVERT" ] && "$CONVERT" && [[ "$type" == "source" ]]; then
|
||||||
args=()
|
args=()
|
||||||
if ! [ -z "$KEEP" ]; then
|
[ -n "$KEEP" ] && args+=("-k")
|
||||||
args+=("-a" "$ARCH")
|
[ -n "$SKIPCHECK" ] && args+=("-s")
|
||||||
fi
|
[ -n "$FORCE" ] && args+=("-f")
|
||||||
if ! [ -z "$SKIPCHECK" ]; then
|
bpm-convert "${args[@]}" -a "$ARCH" "$output"
|
||||||
args+=("-s")
|
|
||||||
fi
|
|
||||||
bpm-convert "${args[@]}" -a "$ARCH" "$output"
|
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ if [ $# -eq 0 ]; then
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
NAME="package-name"
|
|
||||||
DESCRIPTION="Default package description"
|
DESCRIPTION="Default package description"
|
||||||
VERSION="1.0"
|
VERSION="1.0"
|
||||||
#URL="https://my.project.url/ (Optional)"
|
#URL="https://my.project.url/ (Optional)"
|
||||||
@@ -79,6 +78,10 @@ if [ -z "${DIRECTORY}" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -z "${NAME}" ]; then
|
||||||
|
NAME="${DIRECTORY}"
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ ! "${DIRECTORY}" == "/"* ]]; then
|
if [[ ! "${DIRECTORY}" == "/"* ]]; then
|
||||||
DIRECTORY="${PWD}/${DIRECTORY}"
|
DIRECTORY="${PWD}/${DIRECTORY}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user