From fc2d7e79157dfe73f0c4d8efc4554e18aab67dd7 Mon Sep 17 00:00:00 2001 From: TolaMironcenko Date: Mon, 20 Jan 2025 18:45:13 +0700 Subject: [PATCH 1/4] added pmbuild --- Makefile | 4 ++-- PMBUILD | 11 ++++++++++ src/pm | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 73 insertions(+), 7 deletions(-) create mode 100644 PMBUILD diff --git a/Makefile b/Makefile index 3ded585..4816a5e 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ DESTDIR=/ install: if [ ! -d ${DESTDIR}/etc/pm ]; then \ mkdir -pv ${DESTDIR}/etc/pm; \ - touch ${DESTDIR}/etc/pm/repo; \ + # touch ${DESTDIR}/etc/pm/repo; \ fi if [ ! -d ${DESTDIR}/tmp ]; then \ mkdir -pv ${DESTDIR}/tmp; \ @@ -14,7 +14,7 @@ install: fi if [ ! -d ${DESTDIR}/usr/share/pm ]; then \ mkdir -pv ${DESTDIR}/usr/share/pm/{packages,repos}; \ - touch ${DESTDIR}/usr/share/pm/query; \ + # touch ${DESTDIR}/usr/share/pm/query; \ fi if [ ! -d ${DESTDIR}/var/cache/pm/pkg ]; then \ mkdir -pv ${DESTDIR}/var/cache/pm/pkg; \ diff --git a/PMBUILD b/PMBUILD new file mode 100644 index 0000000..41d9061 --- /dev/null +++ b/PMBUILD @@ -0,0 +1,11 @@ +pkgname=pm +pkgver=1.1 +pkgrel=1 +# srcdir=/home/tola/Documents/linux/pm +gitsource="https://gitea.home.com:3000/TolaMironcenko/pm.git" +deps="busybox" + +package() { + cd $srcdir + make install DESTDIR=$pkgdir +} diff --git a/src/pm b/src/pm index 4cda774..96dfa79 100755 --- a/src/pm +++ b/src/pm @@ -107,6 +107,7 @@ down() { if [[ $j == $1 ]]; then if [ ! -f $cachedpkgdir/$1.pkg.gz ]; then printf "$YELLOW**$RESET Downloading $YELLOW$serverdir: $Bwhite$j\n$RESET" + echo $i/$1.pkg.gz wget $i/$1.pkg.gz -P $cachedpkgdir check $? "Download package" # if [[ "$?" == "0" ]]; then @@ -328,22 +329,23 @@ search() { done exit 0 fi - + found=false for i in $servers; do serverdir=$(echo $i | sed -e "/http:\/\//s///") serverdir=$(echo $serverdir | sed -e "/ftp:\/\//s///") repoquery=$(/usr/bin/cat $reposquerydir/$serverdir/query | sed -e '/.pkg.gz/s///') for j in $repoquery; do - if [[ $j == $1 ]]; then + if [[ $j =~ $1 ]]; then printf "$YELLOW$serverdir: $BWHITE$j\n$RESET" - exit 0 + # exit 0 + found=true fi done done - printf "$YELLOW**$RED error:$RESET can't find package ($1)\n" + [ "$found" = "false" ] && printf "$YELLOW**$RED error:$RESET can't find package ($1)\n" } ss() { - search + search $1 } #------------------------------------------------------------------------ @@ -365,6 +367,56 @@ deps() { cat $installedpackagesdir/$1.pkg/deps } +buildpkg() { + if [ ! -f ./PMBUILD ]; then + if [ "$1" != "" ]; then + source $1 + else + printf "$BBLUE**$BWHITE Can't find PMBUILD [$BRED ERROR $BWHITE]\n$RESET" + fi + else + source ./PMBUILD + fi + [ ! -d src ] && mkdir -pv src + [ ! -d pkg/$pkgname-$pkgver-$pkgrel.pkg ] && mkdir -pv pkg/$pkgname-$pkgver-$pkgrel.pkg + export buildroot=$(pwd) + export pkgdir=$buildroot/pkg/$pkgname-$pkgver-$pkgrel.pkg + if [ "$srcdir" = "" ]; then + export srcdir=$buildroot/src/$pkgname + fi + echo $pkgdir + echo $srcdir + if [ "$gitsource" != "" ]; then + echo $gitsource + git clone $gitsource $srcdir + fi + if [[ $(type -t build) = function ]]; then + echo "yes" + else + echo "no" + fi + if [[ $(type -t package) == function ]]; then + echo "yes" + package + else + echo "no" + fi + cd $pkgdir + find -type f > $buildroot/list + sed -i "s/.\///" $buildroot/list + cd $buildroot + mv -v list $pkgdir/list + if [ "$deps" != "" ]; then + for i in $deps; do + echo $i >> $pkgdir/deps + done + fi + cd $pkgdir + tar -czvf $buildroot/$pkgname-$pkgver-$pkgrel.pkg.gz .. + cd $buildroot + unset pkgdir srcdir buildroot +} + case "$1" in add|a|del|d) checkroot @@ -374,6 +426,9 @@ case "$1" in checkroot "$1" $2 ;; + build) + buildpkg $2 + ;; *) help ;; From f14d5866f3a2f23685290c6927cfcc8d9ba5f955 Mon Sep 17 00:00:00 2001 From: TolaMironcenko Date: Mon, 20 Jan 2025 15:58:34 +0700 Subject: [PATCH 2/4] added comments --- .gitignore | 3 ++- src/pm | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 65b2753..89f96aa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ pm.pkg pm.pkg.gz -rootfs \ No newline at end of file +rootfs +package \ No newline at end of file diff --git a/src/pm b/src/pm index 96dfa79..d13dc18 100755 --- a/src/pm +++ b/src/pm @@ -355,6 +355,7 @@ clear() { } #------------------------------------------------------------------------ +#--- show package dependencies function --- deps() { if [ "$1" = "" ]; then help @@ -366,7 +367,9 @@ deps() { fi cat $installedpackagesdir/$1.pkg/deps } +#------------------------------------------ +#--- build package uses PMBUILD file function --- buildpkg() { if [ ! -f ./PMBUILD ]; then if [ "$1" != "" ]; then @@ -389,6 +392,7 @@ buildpkg() { if [ "$gitsource" != "" ]; then echo $gitsource git clone $gitsource $srcdir + check $? "Download sources" fi if [[ $(type -t build) = function ]]; then echo "yes" @@ -398,6 +402,7 @@ buildpkg() { if [[ $(type -t package) == function ]]; then echo "yes" package + check $? "Package" else echo "no" fi @@ -413,10 +418,13 @@ buildpkg() { fi cd $pkgdir tar -czvf $buildroot/$pkgname-$pkgver-$pkgrel.pkg.gz .. + check $? "Archive package" cd $buildroot unset pkgdir srcdir buildroot } +#----------------------------------------------------- +#--- main --- case "$1" in add|a|del|d) checkroot @@ -433,3 +441,4 @@ case "$1" in help ;; esac +#------------ From 26b9d8118e35f0fdedec00a77052a08b50868556 Mon Sep 17 00:00:00 2001 From: TolaMironcenko Date: Mon, 20 Jan 2025 20:13:05 +0700 Subject: [PATCH 3/4] updated colors in pm query --- src/pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pm b/src/pm index d13dc18..9e58a8a 100755 --- a/src/pm +++ b/src/pm @@ -259,7 +259,9 @@ query() { printf "$YELLOW**$BWHITE No installed packages\n$RESET" exit 0 fi - printf "$packagesquery\n" + for i in $packagesquery; do + printf "$BWHITE$i\n$RESET" + done } q() { query From 20ca8e49ee2e2764237de011a0634912cfeb1349 Mon Sep 17 00:00:00 2001 From: TolaMironcenko Date: Thu, 23 Jan 2025 15:12:28 +0700 Subject: [PATCH 4/4] updated buildpkg function and hide all in Makefile and buildpkg functions --- Makefile | 62 ++++++++++++++++++++++++++++---------------------------- src/pm | 42 +++++++++++++++++++++++++------------- 2 files changed, 59 insertions(+), 45 deletions(-) diff --git a/Makefile b/Makefile index 4816a5e..20e8116 100644 --- a/Makefile +++ b/Makefile @@ -2,53 +2,53 @@ DESTDIR=/ install: - if [ ! -d ${DESTDIR}/etc/pm ]; then \ - mkdir -pv ${DESTDIR}/etc/pm; \ + @if [ ! -d ${DESTDIR}/etc/pm ]; then \ + mkdir -p ${DESTDIR}/etc/pm; \ # touch ${DESTDIR}/etc/pm/repo; \ fi - if [ ! -d ${DESTDIR}/tmp ]; then \ - mkdir -pv ${DESTDIR}/tmp; \ + @if [ ! -d ${DESTDIR}/tmp ]; then \ + mkdir -p ${DESTDIR}/tmp; \ fi - if [ ! -d ${DESTDIR}/usr/bin ]; then \ - mkdir -pv ${DESTDIR}/usr/bin; \ + @if [ ! -d ${DESTDIR}/usr/bin ]; then \ + mkdir -p ${DESTDIR}/usr/bin; \ fi - if [ ! -d ${DESTDIR}/usr/share/pm ]; then \ - mkdir -pv ${DESTDIR}/usr/share/pm/{packages,repos}; \ + @if [ ! -d ${DESTDIR}/usr/share/pm ]; then \ + mkdir -p ${DESTDIR}/usr/share/pm/{packages,repos}; \ # touch ${DESTDIR}/usr/share/pm/query; \ fi - if [ ! -d ${DESTDIR}/var/cache/pm/pkg ]; then \ - mkdir -pv ${DESTDIR}/var/cache/pm/pkg; \ + @if [ ! -d ${DESTDIR}/var/cache/pm/pkg ]; then \ + mkdir -p ${DESTDIR}/var/cache/pm/pkg; \ fi - cp -v src/pm ${DESTDIR}/usr/bin/pm; + @cp src/pm ${DESTDIR}/usr/bin/pm; uninstall: - if [ -d ${DESTDIR}/etc/pm ]; then \ - rm -rv ${DESTDIR}/etc/pm; \ + @if [ -d ${DESTDIR}/etc/pm ]; then \ + rm -r ${DESTDIR}/etc/pm; \ fi - if [ -d ${DESTDIR}/usr/share/pm ]; then \ - rm -rv ${DESTDIR}/usr/share/pm; \ + @if [ -d ${DESTDIR}/usr/share/pm ]; then \ + rm -r ${DESTDIR}/usr/share/pm; \ fi - if [ -d ${DESTDIR}/var/cache/pm ]; then \ - rm -rv ${DESTDIR}/var/cache/pm; \ + @if [ -d ${DESTDIR}/var/cache/pm ]; then \ + rm -r ${DESTDIR}/var/cache/pm; \ fi - if [ -f ${DESTDIR}/usr/bin/pm ]; then \ - rm -v ${DESTDIR}/usr/bin/pm; \ + @if [ -f ${DESTDIR}/usr/bin/pm ]; then \ + rm ${DESTDIR}/usr/bin/pm; \ fi package: - mkdir -pv pm.pkg/usr/bin - mkdir -pv pm.pkg/etc/pm - mkdir -pv pm.pkg/var/cache/pm/pkg - mkdir -pv pm.pkg/usr/share/pm/{repos,packages} - echo usr/bin/pm > pm.pkg/list - echo busybox > pm.pkg/deps - cp -v src/pm pm.pkg/usr/bin/pm - tar -czvf pm.pkg.gz pm.pkg + @mkdir -p pm.pkg/usr/bin + @mkdir -p pm.pkg/etc/pm + @mkdir -p pm.pkg/var/cache/pm/pkg + @mkdir -p pm.pkg/usr/share/pm/{repos,packages} + @echo usr/bin/pm > pm.pkg/list + @echo busybox > pm.pkg/deps + @cp src/pm pm.pkg/usr/bin/pm + @tar -czf pm.pkg.gz pm.pkg clean: - if [ -d pm.pkg ]; then \ - rm -rv pm.pkg; \ + @if [ -d pm.pkg ]; then \ + rm -r pm.pkg; \ fi - if [ -f pm.pkg.gz ]; then \ - rm -v pm.pkg.gz; \ + @if [ -f pm.pkg.gz ]; then \ + rm pm.pkg.gz; \ fi \ No newline at end of file diff --git a/src/pm b/src/pm index 9e58a8a..858b3db 100755 --- a/src/pm +++ b/src/pm @@ -304,7 +304,6 @@ sync() { servers=$(/usr/bin/cat $repofile) for i in $servers; do printf "$YELLOW**$GREEN Sync $BWHITE$i\n$RESET" - # echo "$i" serverdir=$(echo $i | sed -e "/http:\//s///") serverdir=$(echo $serverdir | sed -e "/ftp:\//s///") mkdir -p $reposquerydir/$serverdir &> /dev/null @@ -339,7 +338,6 @@ search() { for j in $repoquery; do if [[ $j =~ $1 ]]; then printf "$YELLOW$serverdir: $BWHITE$j\n$RESET" - # exit 0 found=true fi done @@ -382,44 +380,60 @@ buildpkg() { else source ./PMBUILD fi - [ ! -d src ] && mkdir -pv src - [ ! -d pkg/$pkgname-$pkgver-$pkgrel.pkg ] && mkdir -pv pkg/$pkgname-$pkgver-$pkgrel.pkg - export buildroot=$(pwd) + export buildroot=$(pwd) + if [ -f $buildroot/$pkgname-$pkgver-$pkgrel.pkg.gz ]; then + if [ "$1" != "-r" ]; then + printf "$BBLUE**$BWHITE $pkgname-$pkgver-$pkgrel.pkg.gz already exists please use -r to rebuild [$YELLOW WARNING $BWHITE]\n$RESET" + exit 0 + else + [ -d pkg ] && rm -r pkg + [ -d src ] && rm -r src + [ -f $pkgname-$pkgver-$pkgrel.pkg.gz ] && rm -r $pkgname-$pkgver-$pkgrel.pkg.gz + fi + fi + [ ! -d src ] && mkdir -p src + [ ! -d pkg/$pkgname-$pkgver-$pkgrel.pkg ] && mkdir -p pkg/$pkgname-$pkgver-$pkgrel.pkg export pkgdir=$buildroot/pkg/$pkgname-$pkgver-$pkgrel.pkg if [ "$srcdir" = "" ]; then export srcdir=$buildroot/src/$pkgname fi - echo $pkgdir - echo $srcdir if [ "$gitsource" != "" ]; then - echo $gitsource + printf "$BBLUE**$BWHITE Downloading sources\n$RESET" git clone $gitsource $srcdir check $? "Download sources" fi if [[ $(type -t build) = function ]]; then - echo "yes" + printf "$BBLUE**$BWHITE Building package\n$RESET" + build + check $? "Build" else - echo "no" + echo "no build" fi if [[ $(type -t package) == function ]]; then - echo "yes" + printf "$BBLUE**$BWHITE Packaging package\n$RESET" package check $? "Package" else - echo "no" + echo "no package" fi + printf "$BBLUE**$BWHITE Stripping unneded symbols\n$RESET" + for execfile in $(find $pkgdir -executable -type f); do + strip $execfile + done + printf "$BBLUE**$BWHITE Strip unneded symbols [$BGREEN SUCCESS $BWHITE]\n$RESET" cd $pkgdir find -type f > $buildroot/list sed -i "s/.\///" $buildroot/list cd $buildroot - mv -v list $pkgdir/list + mv list $pkgdir/list if [ "$deps" != "" ]; then for i in $deps; do echo $i >> $pkgdir/deps done fi cd $pkgdir - tar -czvf $buildroot/$pkgname-$pkgver-$pkgrel.pkg.gz .. + printf "$BBLUE**$BWHITE Archiving package\n$RESET" + tar -czf $buildroot/$pkgname-$pkgver-$pkgrel.pkg.gz .. &> /dev/null check $? "Archive package" cd $buildroot unset pkgdir srcdir buildroot