mirror of
https://github.com/outbackdingo/scratchpkg.git
synced 2026-03-19 20:13:36 +00:00
updated
This commit is contained in:
145
buildpkg
145
buildpkg
@@ -191,10 +191,6 @@ loadspkgbuild() {
|
||||
|
||||
if [ -f $BUILD_SCRIPT ]; then
|
||||
getpkginfo
|
||||
if [ "${#options[@]}" -gt 0 ]; then
|
||||
OPTIONS=($(echo ${options[@]}))
|
||||
getoptions
|
||||
fi
|
||||
else
|
||||
msgerr "No $BUILD_SCRIPT found."
|
||||
exitscript1
|
||||
@@ -235,37 +231,30 @@ packaging() {
|
||||
|
||||
pushd $PKG
|
||||
|
||||
#if [ -f usr/share/info/dir ]; then
|
||||
#rm usr/share/info/dir
|
||||
#fi
|
||||
|
||||
if [ "$REMOVE_EMPTYDIRS" ]; then
|
||||
removeemptydirs
|
||||
fi
|
||||
|
||||
if [ "$REMOVE_DOCS" ]; then
|
||||
removedocs
|
||||
fi
|
||||
|
||||
if [ "$PURGE_FILES" ]; then
|
||||
if check_options purge y; then
|
||||
purgefiles
|
||||
fi
|
||||
|
||||
if [ "$REMOVE_LIBTOOL" ]; then
|
||||
if check_options !emptydirs y; then
|
||||
removeemptydirs
|
||||
fi
|
||||
|
||||
if check_options !docs y && [[ -n ${DOC_DIRS[*]} ]]; then
|
||||
removedocs
|
||||
fi
|
||||
|
||||
if check_options !libtool y; then
|
||||
removelibtool
|
||||
fi
|
||||
|
||||
if [ "$STRIP_PKG" ]; then
|
||||
if check_options strip y; then
|
||||
strip_files
|
||||
fi
|
||||
|
||||
if [ "$COMPRESS_MAN" ]; then
|
||||
if check_options zipman y && [[ -n ${MAN_DIRS[*]} ]]; then
|
||||
compressinfomanpages
|
||||
fi
|
||||
|
||||
#compressinfomanpages
|
||||
#purgefiles
|
||||
|
||||
echo "# Generated by buildpkg" > .pkginfo
|
||||
echo "# `date`" >> .pkginfo
|
||||
echo "name = $name" >> .pkginfo
|
||||
@@ -308,64 +297,6 @@ packaging() {
|
||||
|
||||
}
|
||||
|
||||
removeemptydirs() {
|
||||
|
||||
msg2 "Removing empty directories..."
|
||||
find . -type d -empty -delete
|
||||
|
||||
}
|
||||
|
||||
removedocs() {
|
||||
|
||||
msg2 "Removing docs..."
|
||||
for dir in ${DOC_DIRS[@]}; do
|
||||
[ -d $dir ] && rm -fr $dir
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
removelibtool() {
|
||||
|
||||
msg2 "Removing libtool files..."
|
||||
find . -name "*.la" -delete
|
||||
|
||||
}
|
||||
|
||||
purgefiles() {
|
||||
|
||||
for option in ${PURGE_FILES[@]}; do
|
||||
if [ -e $option ]; then
|
||||
msg2 "Purging $option..."
|
||||
rm -fr $option
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
strip_files() {
|
||||
|
||||
msg2 "Stripping binaries & libraries..."
|
||||
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
|
||||
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
|
||||
|
||||
}
|
||||
|
||||
compressinfomanpages() {
|
||||
|
||||
msg2 "Compressing man & info pages..."
|
||||
if [ -d usr/share/man ]; then
|
||||
( cd usr/share/man
|
||||
find . -type f ! -name "*.gz" -exec gzip -9 -f {} \;
|
||||
for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
|
||||
)
|
||||
fi
|
||||
|
||||
if [ -d usr/share/info ]; then
|
||||
( cd usr/share/info
|
||||
find . -name "*.info*" -exec gzip -9 {} \;
|
||||
)
|
||||
fi
|
||||
}
|
||||
|
||||
buildpkg() {
|
||||
|
||||
getsource
|
||||
@@ -386,6 +317,14 @@ buildpkg() {
|
||||
NO_PREINSTALL=yes
|
||||
fi
|
||||
|
||||
if check_options makeflags n; then
|
||||
unset MAKEFLAGS
|
||||
fi
|
||||
|
||||
if check_options buildflags n; then
|
||||
unset CFLAGS CXXFLAGS
|
||||
fi
|
||||
|
||||
buildpackage
|
||||
|
||||
if [ "$FORCE_REBUILD" ]; then
|
||||
@@ -519,43 +458,6 @@ removemakedepends() {
|
||||
[ "$ORPHAN" = "yes" ] && [ -d $INDEX_DIR/$1 ] && saferemove+=($1)
|
||||
}
|
||||
|
||||
getoptions() {
|
||||
|
||||
for opt in ${OPTIONS[@]}; do
|
||||
case $opt in
|
||||
libtool)
|
||||
REMOVE_LIBTOOL="" ;;
|
||||
!libtool)
|
||||
REMOVE_LIBTOOL=yes ;;
|
||||
emptydirs)
|
||||
REMOVE_EMPTYDIRS="" ;;
|
||||
!emptydirs)
|
||||
REMOVE_EMPTYDIRS=yes ;;
|
||||
strip)
|
||||
STRIP_PKG=yes ;;
|
||||
!strip)
|
||||
STRIP_PKG="" ;;
|
||||
docs)
|
||||
REMOVE_DOCS="" ;;
|
||||
!docs)
|
||||
REMOVE_DOCS=yes ;;
|
||||
zipman)
|
||||
COMPRESS_MAN=yes ;;
|
||||
!zipman)
|
||||
COMPRESS_MAN="" ;;
|
||||
purge)
|
||||
PURGE_FILES=yes ;;
|
||||
!purge)
|
||||
PURGE_FILES="" ;;
|
||||
!buildflags)
|
||||
CFLAGS=""; CXXFLAGS="" ;;
|
||||
!makeflags)
|
||||
MAKEFLAGS=""
|
||||
esac
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
clearworkdir() {
|
||||
|
||||
if [ ! "$KEEP_WORK" ]; then
|
||||
@@ -665,9 +567,6 @@ parse_options() {
|
||||
-kw|--keep-work)
|
||||
KEEP_WORK=yes
|
||||
;;
|
||||
-ns|--no-strip)
|
||||
NO_STRIP=yes
|
||||
;;
|
||||
-rd|--redownload)
|
||||
REDOWNLOAD_SOURCE=yes
|
||||
;;
|
||||
@@ -707,10 +606,6 @@ main() {
|
||||
|
||||
. /usr/share/scratchpkg/functions || exit 1
|
||||
|
||||
loadconfigfile
|
||||
|
||||
getoptions
|
||||
|
||||
parse_options "$@"
|
||||
|
||||
### DISABLE COLOR ###
|
||||
|
||||
38
functions/color
Normal file
38
functions/color
Normal file
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
|
||||
### SET COLOUR CODE ###
|
||||
color_red='\e[0;31m' #Red
|
||||
color_green='\e[0;32m' #Green
|
||||
color_yellow='\e[0;33m' #Yellow
|
||||
color_blue='\e[0;34m' #Blue
|
||||
color_purple='\e[0;35m' #Purple
|
||||
color_cyan='\e[0;36m' #Cyan
|
||||
color_gray='\e[0;37m' #Gray
|
||||
color_bred='\e[1;31m' #Bold red
|
||||
color_bgreen='\e[1;32m' #Bold green
|
||||
color_byellow='\e[1;33m' #Bold yellow
|
||||
color_bblue='\e[1;34m' #Bold blue
|
||||
color_bpurple='\e[1;35m' #Bold purple
|
||||
color_bcyan='\e[1;36m' #Bold cyan
|
||||
color_bgray='\e[1;37m' #Bold gray
|
||||
color_reset='\e[0m' #Reset color
|
||||
|
||||
nocolor() {
|
||||
|
||||
color_red=''
|
||||
color_green=''
|
||||
color_yellow=''
|
||||
color_blue=''
|
||||
color_purple=''
|
||||
color_cyan=''
|
||||
color_gray=''
|
||||
color_bred=''
|
||||
color_bgreen=''
|
||||
color_byellow=''
|
||||
color_bblue=''
|
||||
color_bpurple=''
|
||||
color_bcyan=''
|
||||
color_bgray=''
|
||||
color_reset=''
|
||||
|
||||
}
|
||||
@@ -1,22 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
### SET COLOUR CODE ###
|
||||
color_red='\e[0;31m' #Red
|
||||
color_green='\e[0;32m' #Green
|
||||
color_yellow='\e[0;33m' #Yellow
|
||||
color_blue='\e[0;34m' #Blue
|
||||
color_purple='\e[0;35m' #Purple
|
||||
color_cyan='\e[0;36m' #Cyan
|
||||
color_gray='\e[0;37m' #Gray
|
||||
color_bred='\e[1;31m' #Bold red
|
||||
color_bgreen='\e[1;32m' #Bold green
|
||||
color_byellow='\e[1;33m' #Bold yellow
|
||||
color_bblue='\e[1;34m' #Bold blue
|
||||
color_bpurple='\e[1;35m' #Bold purple
|
||||
color_bcyan='\e[1;36m' #Bold cyan
|
||||
color_bgray='\e[1;37m' #Bold gray
|
||||
color_reset='\e[0m' #Reset color
|
||||
|
||||
### SET SOME VALUE ###
|
||||
CONF_FILE="/etc/scratchpkg.conf"
|
||||
BUILD_SCRIPT="spkgbuild"
|
||||
@@ -26,6 +9,18 @@ INDEX_DIR=/var/spkg/index
|
||||
BACKUP_DIR=/var/spkg/backup
|
||||
REJECTED_DIR=/var/spkg/rejected
|
||||
|
||||
if [ -f $CONF_FILE ]; then
|
||||
. $CONF_FILE
|
||||
else
|
||||
msgerr "Configuration file not found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
FUNCTIONS=${FUNCTIONS:-'/usr/share/scratchpkg'}
|
||||
|
||||
source "$FUNCTIONS/options"
|
||||
source "$FUNCTIONS/color"
|
||||
|
||||
### SET BSDTAR FOR EXTRACT PROGRAM IF LIBARCHIVE IS INSTALLED ###
|
||||
if [ -d $INDEX_DIR/libarchive ]; then
|
||||
EXTPROG=bsdtar
|
||||
@@ -79,26 +74,6 @@ rm_silent() {
|
||||
command rm "$@" 2> /dev/null
|
||||
}
|
||||
|
||||
nocolor() {
|
||||
|
||||
color_red=''
|
||||
color_green=''
|
||||
color_yellow=''
|
||||
color_blue=''
|
||||
color_purple=''
|
||||
color_cyan=''
|
||||
color_gray=''
|
||||
color_bred=''
|
||||
color_bgreen=''
|
||||
color_byellow=''
|
||||
color_bblue=''
|
||||
color_bpurple=''
|
||||
color_bcyan=''
|
||||
color_bgray=''
|
||||
color_reset=''
|
||||
|
||||
}
|
||||
|
||||
updatesystemdb() {
|
||||
|
||||
# update desktop database
|
||||
@@ -170,17 +145,6 @@ getpkginfofrompkg() {
|
||||
|
||||
}
|
||||
|
||||
loadconfigfile() {
|
||||
|
||||
if [ -f $CONF_FILE ]; then
|
||||
. $CONF_FILE
|
||||
else
|
||||
msgerr "Configuration file not found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
createtemplate() {
|
||||
|
||||
if [ -d $TEMPLATE_NAME ]; then
|
||||
@@ -198,6 +162,7 @@ createtemplate() {
|
||||
name=$TEMPLATE_NAME
|
||||
version=
|
||||
release=1
|
||||
options=()
|
||||
source=()
|
||||
|
||||
build() {
|
||||
121
functions/options
Normal file
121
functions/options
Normal file
@@ -0,0 +1,121 @@
|
||||
#!/bin/bash
|
||||
|
||||
opt_array() {
|
||||
|
||||
if [[ -n "${options[@]}" ]]; then
|
||||
for num in $(seq 0 $((${#options[@]} - 1))); do
|
||||
opt=${options[num]}
|
||||
if [ "$opt" = "$1" ]; then
|
||||
return 0
|
||||
elif [ "$opt" = "!$1" ]; then
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
fi
|
||||
if [[ -n "${OPTIONS[@]}" ]]; then
|
||||
for num in $(seq 0 $((${#OPTIONS[@]} - 1))); do
|
||||
opt=${OPTIONS[num]}
|
||||
if [ "$opt" = "$1" ]; then
|
||||
return 0
|
||||
elif [ "$opt" = "!$1" ]; then
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
fi
|
||||
return 100
|
||||
|
||||
}
|
||||
|
||||
check_options() {
|
||||
|
||||
opt_array $1
|
||||
|
||||
case $? in
|
||||
0)
|
||||
[ "$2" = "y" ]
|
||||
return ;;
|
||||
1)
|
||||
[ "$2" = "n" ]
|
||||
return
|
||||
esac
|
||||
|
||||
return 100
|
||||
}
|
||||
|
||||
removedocs() {
|
||||
|
||||
msg2 "Removing docs..."
|
||||
for dir in ${DOC_DIRS[@]}; do
|
||||
[ -d $dir ] && rm -fr $dir
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
removeemptydirs() {
|
||||
|
||||
msg2 "Removing empty directories..."
|
||||
find . -type d -empty -delete
|
||||
|
||||
}
|
||||
|
||||
removelibtool() {
|
||||
|
||||
msg2 "Removing libtool files..."
|
||||
find . ! -type d -name "*.la" -delete
|
||||
|
||||
}
|
||||
|
||||
purgefiles() {
|
||||
|
||||
msg2 "Purging unwanted files..."
|
||||
for option in ${PURGE_FILES[@]}; do
|
||||
if [ -e $option ]; then
|
||||
rm -fr $option
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
strip_files() {
|
||||
|
||||
msg2 "Stripping binaries & libraries..."
|
||||
find . -type f 2>/dev/null | while read -r binary ; do
|
||||
case "$(file -bi "$binary")" in
|
||||
*application/x-sharedlib*) # Libraries (.so)
|
||||
strip --strip-unneeded "$binary" ;;
|
||||
*application/x-archive*) # Libraries (.a)
|
||||
strip --strip-debug "$binary" ;;
|
||||
*application/x-object*)
|
||||
case "$binary" in
|
||||
*.ko) # Kernel module
|
||||
strip --strip-unneeded "$binary" ;;
|
||||
*)
|
||||
continue;;
|
||||
esac;;
|
||||
*application/x-executable*) # Binaries
|
||||
strip --strip-all "$binary" ;;
|
||||
*)
|
||||
continue ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
compressinfomanpages() {
|
||||
|
||||
msg2 "Compressing man & info pages..."
|
||||
for mandir in ${MAN_DIRS[@]}; do
|
||||
if [ -d $mandir ]; then
|
||||
(cd $mandir
|
||||
find . -type f ! -name "*.gz" -exec gzip -9 -f {} \; 2>/dev/null
|
||||
for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
|
||||
)
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -d usr/share/info ]; then
|
||||
(cd usr/share/info
|
||||
find usr/share/info -name "*.info*" -exec gzip -9 {} \;
|
||||
)
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
68
installpkg
68
installpkg
@@ -80,37 +80,7 @@ installpkg() {
|
||||
fi
|
||||
|
||||
if [ "$UPGRADE_PKG" ] || [ "$REINSTALL_PKG" ]; then
|
||||
|
||||
TMP_TARLIST="/tmp/$name.tarlist.spkg"
|
||||
tar -tf "$PKGNAME" --exclude=.pkginfo --exclude=.pkginstall --exclude=.pkgreadme ${excludefile[@]} > $TMP_TARLIST
|
||||
|
||||
msg2 "Removing old files..."
|
||||
grep -v '/$' $INDEX_DIR/$name/.files | while read line; do
|
||||
if [ ! "$(grep -Fx "$line" $TMP_TARLIST)" ]; then
|
||||
pushd $ROOT_DIR
|
||||
if [ "$VERBOSE_INSTALL" = "yes" ]; then
|
||||
rm_silent "$line" && echo "$line" && OLDFILEREMOVE=yes || msgwarn "Failed remove $line"
|
||||
else
|
||||
rm_silent "$line" && OLDFILEREMOVE=yes || msgwarn "Failed remove $line"
|
||||
fi
|
||||
popd
|
||||
fi
|
||||
done
|
||||
|
||||
msg2 "Removing old dirs..."
|
||||
while IFS=' ' read -r line; do
|
||||
if [ ! "$(tac $TMP_TARLIST | grep -x "$line")" ] && [ ! "$(grep -Rx --exclude-dir="$name" -w "$line" "$INDEX_DIR")" ]; then
|
||||
pushd $ROOT_DIR
|
||||
if [ "$VERBOSE_INSTALL" = "yes" ]; then
|
||||
rmdir_silent "$line" && echo "$line" || msgwarn "Failed remove $line"
|
||||
else
|
||||
rmdir_silent "$line" || msgwarn "Failed remove $line"
|
||||
fi
|
||||
popd
|
||||
fi
|
||||
done < <(tac $INDEX_DIR/$name/.files | grep '/$')
|
||||
|
||||
rm $TMP_TARLIST
|
||||
removeoldfiles
|
||||
fi
|
||||
|
||||
registerpkg
|
||||
@@ -153,6 +123,40 @@ installpkg() {
|
||||
spkglock
|
||||
}
|
||||
|
||||
removeoldfiles() {
|
||||
|
||||
TMP_TARLIST="/tmp/$name.tarlist.spkg"
|
||||
tar -tf "$PKGNAME" --exclude=.pkginfo --exclude=.pkginstall --exclude=.pkgreadme ${excludefile[@]} > $TMP_TARLIST
|
||||
|
||||
msg2 "Removing old files & dirs..."
|
||||
grep -v '/$' $INDEX_DIR/$name/.files | while read line; do
|
||||
if [ ! "$(grep -Fx "$line" $TMP_TARLIST)" ]; then
|
||||
pushd $ROOT_DIR
|
||||
if [ "$VERBOSE_INSTALL" = "yes" ]; then
|
||||
rm_silent "$line" && echo "$line" && OLDFILEREMOVE=yes || msgwarn "Failed remove $line"
|
||||
else
|
||||
rm_silent "$line" && OLDFILEREMOVE=yes || msgwarn "Failed remove $line"
|
||||
fi
|
||||
popd
|
||||
fi
|
||||
done
|
||||
|
||||
while IFS=' ' read -r line; do
|
||||
if [ ! "$(tac $TMP_TARLIST | grep -x "$line")" ] && [ ! "$(grep -Rx --exclude-dir="$name" -w "$line" "$INDEX_DIR")" ]; then
|
||||
pushd $ROOT_DIR
|
||||
if [ "$VERBOSE_INSTALL" = "yes" ]; then
|
||||
rmdir_silent "$line" && echo "$line" || msgwarn "Failed remove $line"
|
||||
else
|
||||
rmdir_silent "$line" || msgwarn "Failed remove $line"
|
||||
fi
|
||||
popd
|
||||
fi
|
||||
done < <(tac $INDEX_DIR/$name/.files | grep '/$')
|
||||
|
||||
rm $TMP_TARLIST
|
||||
|
||||
}
|
||||
|
||||
registerpkg() {
|
||||
|
||||
[ ! -d $INDEX_DIR/$name ] && mkdir $INDEX_DIR/$name
|
||||
@@ -483,8 +487,6 @@ main() {
|
||||
nocolor
|
||||
fi
|
||||
|
||||
loadconfigfile
|
||||
|
||||
### SHOW HELP ###
|
||||
if [ "$SHOW_HELP" ]; then
|
||||
help
|
||||
|
||||
@@ -251,8 +251,6 @@ main() {
|
||||
nocolor
|
||||
fi
|
||||
|
||||
loadconfigfile
|
||||
|
||||
if [ -z $RMNAME ]; then
|
||||
msgerr "Please state package name for remove."
|
||||
exit 1
|
||||
|
||||
2
scratch
2
scratch
@@ -643,8 +643,6 @@ main() {
|
||||
nocolor
|
||||
fi
|
||||
|
||||
loadconfigfile
|
||||
|
||||
### LIST PACKAGES & SOURCE CACHE ###
|
||||
if [ $PKG_CACHE ]; then
|
||||
pkgcache
|
||||
|
||||
@@ -11,12 +11,11 @@ WORK_DIR="/tmp"
|
||||
PORT_REPO=(/usr/ports/base
|
||||
/usr/ports/blfs
|
||||
/usr/ports/xorg
|
||||
/usr/ports/extra)
|
||||
/usr/ports/extra
|
||||
/home/emmett/github/scratchpkgscripts/lfs-8.1/ports/wip)
|
||||
|
||||
NO_EXTRACT=(usr/share/locale)
|
||||
|
||||
OPTIONS=(!libtool emptydirs strip docs purge zipman buildflags makeflags)
|
||||
|
||||
PURGE_FILES=(usr/share/info/dir usr/info/dir)
|
||||
OPTIONS=(libtool emptydirs strip docs purge zipman buildflags makeflags)
|
||||
PURGE_FILES=(usr/{,share/}info/dir)
|
||||
DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc})
|
||||
MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info})
|
||||
MAN_DIRS=({usr{,/local}{,/share},opt/*}/man)
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
name=
|
||||
version=
|
||||
release=1
|
||||
options=()
|
||||
source=()
|
||||
|
||||
build() {
|
||||
|
||||
Reference in New Issue
Block a user