diff options
author | rhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58> | 2008-11-27 02:00:38 +0000 |
---|---|---|
committer | rhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58> | 2008-11-27 02:00:38 +0000 |
commit | 0f63f59fe31ab7f0bf31ba622c6b131921bb596d (patch) | |
tree | a92eb853ccb355edbbc7dae08b0b26b8306778e2 /trunk/src | |
parent | 2b1c9862fefe57ac580cec2db4a76440dd79895e (diff) | |
download | simplepkg-0f63f59fe31ab7f0bf31ba622c6b131921bb596d.tar.gz simplepkg-0f63f59fe31ab7f0bf31ba622c6b131921bb596d.tar.bz2 |
lots of changes, see CHANGELOG for details
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@537 04377dda-e619-0410-9926-eae83683ac58
Diffstat (limited to 'trunk/src')
-rw-r--r-- | trunk/src/createpkg | 164 | ||||
-rwxr-xr-x | trunk/src/simplaret | 15 | ||||
-rwxr-xr-x | trunk/src/templatepkg | 26 |
3 files changed, 165 insertions, 40 deletions
diff --git a/trunk/src/createpkg b/trunk/src/createpkg index cf8e515..84fbb28 100644 --- a/trunk/src/createpkg +++ b/trunk/src/createpkg @@ -19,7 +19,7 @@ # /etc/simplepkg/slackbuildrc parameters: # # SLACKBUILDS_DIR="/folder/to/place/slackbuilds", defaults to /var/slackbuilds -# SVN="svn://repository", defaults do svn://slack.sarava.org/slackbuilds +# SVN="svn://repository", defaults do http://slack.sarava.org/slackbuilds # SYNC="yes|no", whether to always update the repository # @@ -58,6 +58,12 @@ ${red}DESCRIPTION${normal} list all the SlackBuilds ${red}--sync${normal} synchronize SlackBuilds repository + ${red}--update${normal} + synchronize packages repository + ${red}--commit${normal} ${green}["message"]${normal} + commit changes to binary packages' repository + ${red}--status${normal} + check binary packages' svn repository status ${red}-h${normal}, ${red}--help${normal} show this help @@ -101,18 +107,28 @@ function build_all_slackbuild { function check_config { - # check the configuration - TMP=${TMP:=/tmp}; + # Check the configuration + TMP=${TMP:=/tmp} + if [ ! -z "$REPOS" ]; then MAKEPKG_REPOS="$REPOS" else REPOS=$MAKEPKG_REPOS fi + + # Nested folders, if configured + if [ ! -z "$MAKEPKG_REPOS_STYLE" ]; then + MAKEPKG_REPOS_STYLE=$(echo $MAKEPKG_REPOS_STYLE | sed -e "s/none//g" -e "s/distro/`default_distro`/g" \ + -e "s/arch/`default_arch`/g" -e "s/version/`default_version`/g") + MAKEPKG_REPOS="$MAKEPKG_REPOS/$MAKEPKG_REPOS_STYLE" + REPOS="$REPOS/$MAKEPKG_REPOS_STYLE" + fi + # Create $TMP and $REPOS if need [ ! -e $TMP ] && mkdir -p $TMP [ ! -e $MAKEPKG_REPOS ] && mkdir -p $MAKEPKG_REPOS # - SLACKBUILDS_DIR=${SLACKBUILDS_DIR:=/var/slackbuilds} + SLACKBUILDS_DIR=${SLACKBUILDS_DIR:=/var/simplepkg/slackbuilds} # SYNC=${SYNC:=$no} SYNC=`convert_boolean $SYNC` @@ -236,10 +252,11 @@ function list_builds { function load_parameters { # Load Createpkg parameters - MAKEPKG_REPOS="`eval_parameter MAKEPKG_REPOS /var/simplaret/repos`" - SOURCE_DIR="`eval_parameter SOURCE_DIR /var/simplaret/sources`" - SLACKBUILDS_DIR="`eval_parameter SLACKBUILDS_DIR /var/simplaret/slackbuilds`" - SLACKBUILDS_SVN="`eval_parameter SLACKBUILDS_SVN svn://slack.sarava.org/slackbuilds`" + MAKEPKG_REPOS="`eval_parameter MAKEPKG_REPOS /var/simplepkg/repos`" + MAKEPKG_REPOS_STYLE="`eval_parameter MAKEPKG_REPOS_STYLE none`" + SOURCE_DIR="`eval_parameter SOURCE_DIR /var/simplepkg/sources`" + SLACKBUILDS_DIR="`eval_parameter SLACKBUILDS_DIR /var/simplepkg/slackbuilds`" + SLACKBUILDS_SVN="`eval_parameter SLACKBUILDS_SVN http://slack.sarava.org/slackbuilds`" COLOR_MODE="`eval_parameter COLOR_MODE none`" CREATE_ARCH="`eval_parameter CREATE_ARCH $(default_arch)`" @@ -247,6 +264,48 @@ function load_parameters { REMOVE_OLD_PACKAGE="`eval_boolean_parameter REMOVE_OLD_PACKAGE $off`" MOVE_BIN_PACKAGE="`eval_boolean_parameter MOVE_BIN_PACKAGE $off`" + MOVE_SLACK_REQUIRED="`eval_boolean_parameter MOVE_SLACK_REQUIRED $off`" + +} + +function repository_update { + + if [ -d "$MAKEPKG_REPOS/.svn" ]; then + cwd="`pwd`" + cd $MAKEPKG_REPOS && svn update + cd $cwd + fi + + mk_exit 0 + +} + +function repository_status { + + if [ -d "$MAKEPKG_REPOS/.svn" ]; then + cwd="`pwd`" + cd $MAKEPKG_REPOS && svn status + cd $cwd + fi + + mk_exit 0 + +} + +function commit_changes { + + if [ -d "$MAKEPKG_REPOS/.svn" ]; then + cwd="`pwd`" + cd $MAKEPKG_REPOS + if [ ! -z "$1" ]; then + svn commit -m $* + else + svn commit + fi + cd $cwd + fi + + mk_exit 0 } @@ -347,6 +406,19 @@ case $1 in list_builds exit $EXIT_CODE ;; + '--update') + repository_update + exit $EXIT_CODE + ;; + '--commit') + shift + commit_changes $* + exit $EXIT_CODE + ;; + '--status') + repository_status + exit $EXIT_CODE + ;; *) if [ "${1:0:1}" != "-" ]; then PACKAGE="$1" @@ -449,33 +521,81 @@ PKG_NAME="`ls -1 -c $MAKEPKG_REPOS/$PACKAGE-*-*-*.tgz | head -n 1 | xargs basena [ $MOVE_BIN_PACKAGE -eq $on ] && NEW_REPOS=$MAKEPKG_REPOS/$( echo ${SCRIPT_BASE#$SLACKBUILDS_DIR/} ) || NEW_REPOS=$MAKEPKG_REPOS # Create repository directory -# TODO: subversion integration -[ ! -e $NEW_REPOS ] && mkdir -p $NEW_REPOS 2>/dev/null +if [ ! -e $NEW_REPOS ]; then + mkdir -p $NEW_REPOS || mkdir -p $NEW_REPOS + if [ -d "$MAKEPKG_REPOS/.svn" ] && ! svn_check $NEW_REPOS; then + cwd="`pwd`" + cd $MAKEPKG_REPOS + svn add $( echo ${SCRIPT_BASE#$SLACKBUILDS_DIR/} ) + cd $cwd +fi # Remove old packages from repository tree -# TODO: subversion integration -[ $REMOVE_OLD_PACKAGE -eq $on ] && rm $NEW_REPOS/$PACKAGE-*-*-*.tgz 2>/dev/null +if [ $REMOVE_OLD_PACKAGE -eq $on ]; then + + # Using subversion + if [ -d "`basename $NEW_REPOS`/.svn" ]; then + + cwd="`pwd`" + cd `basename $NEW_REPOS` + + PACKAGE_VERSION="`package_version $PKG_NAME`" + PACKAGE_ARCH="`package_arch $PKG_NAME`" + PACKAGE_BUILD="`package_build $PKG_NAME`" + + for file in `ls $PACKAGE-*-*-*.tgz`; do + if svn_check $file; then + # Just deleted packages with different arch, version or build number + if [ "`package_version $file`" != "$PACKAGE_VERSION" ] || \ + [ "`package_arch $file`" != "$PACKAGE_ARCH" ] || \ + [ "`package_build $file`" != "$PACKAGE_BUILD" ]; then + svn del --force $file + fi + fi + done -# Move package and slack-required to SlackBuilds-like tree -# TODO: subversion integration -[ $MOVE_BIN_PACKAGE -eq $on ] && mv $MAKEPKG_REPOS/$PKG_NAME $NEW_REPOS/ -[ ! -z "$SLACK_REQUIRED" ] && cp $SLACK_REQUIRED $NEW_REPOS/$PACKAGE.slack-required + cd $cwd + + else + rm $NEW_REPOS/$PACKAGE-*-*-*.tgz 2>/dev/null + fi +fi + +# Move package to SlackBuilds-like tree +if [ $MOVE_BIN_PACKAGE -eq $on ]; then + mv $MAKEPKG_REPOS/$PKG_NAME $NEW_REPOS/ + if [ -d "`basename $NEW_REPOS`/.svn" ]; then + cwd="`pwd`" + cd `basename $NEW_REPOS` + svn add $PKG_NAME + cd $cwd + fi +fi + +# Move package's slack-required to binary repository +if [ $MOVE_SLACK_REQUIRED -eq $on ]; then + if [ ! -z "$SLACK_REQUIRED" ]; then + cp $SLACK_REQUIRED $NEW_REPOS/$PACKAGE.slack-required + if ! svn_check $NEW_REPOS/$PACKAGE.slack-required; then + cwd="`pwd`" + cd `basename $NEW_REPOS` + svn add $PACKAGE.slack-required + cd $cwd + fi + fi +fi # Install package if [ "$INSTALL" -eq $on ]; then - # as we dont have the full package file name, we'll - # use the newer file name that matches our wildcard: - upgradepkg --install-new $NEW_REPOS/$PKG_NAME fi -# TODO: subversion integration -# generate or update all metadata -# svn commit # Update repository FILELIST.TXT, ... ( cd $MAKEPKG_REPOS gen_filelist + gen_md5_checksums . + gen_patches_filelist patches ) exit $EXIT_CODE diff --git a/trunk/src/simplaret b/trunk/src/simplaret index 66bb1e1..d6555a0 100755 --- a/trunk/src/simplaret +++ b/trunk/src/simplaret @@ -17,7 +17,6 @@ # BASENAME="`basename $0`" -REPOS_CONF="/etc/simplepkg/repos.conf" COMMON="/usr/libexec/simplepkg/common.sh" if [ -f "$COMMON" ]; then @@ -27,6 +26,12 @@ else exit 1 fi +if [ -f "/etc/simplepkg/repos.conf" ]; then + REPOS_CONF="/etc/simplepkg/repos.conf" +else + REPOS_CONF="/etc/simplepkg/default/repos.conf" +fi + function simplaret_usage { echo "usage: [ARCH=otherarch] [VERSION=otherversion] $BASENAME [OPTION] package-name" @@ -713,11 +718,11 @@ function simplaret_search_and_process_patch { # check if the patch was already downloaded if echo "$DOWNLOADED_PATCHES" | grep -q " $ARCH:$VERSION:$sugested_pack "; then - if [ "$IS_UPGRADE" != "1" ]; then - echo Package $sugested_pack already downloaded - # echo "Jail $root needs package $sugested_pack (already downloaded, skipping)" + #if [ "$IS_UPGRADE" != "1" ]; then + #echo Package $sugested_pack already downloaded + #echo "Jail $root needs package $sugested_pack (already downloaded, skipping)" return - fi + #fi fi pack="`echo $sugested_pack | sed -e 's/\+/\\\+/'`" diff --git a/trunk/src/templatepkg b/trunk/src/templatepkg index ad7306f..e1533c7 100755 --- a/trunk/src/templatepkg +++ b/trunk/src/templatepkg @@ -177,7 +177,7 @@ function import_export_templates { if [ "$?" != 0 ]; then usage exit 1 - elif ! use_svn; then + elif ! templates_under_svn; then echo $BASENAME: simplepkg not configured to use svn exit 1 fi @@ -242,7 +242,7 @@ function template_create { echo Creating template `basename $TEMPLATE_BASE`... - if use_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ]; then + if templates_under_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ]; then cd `dirname $TEMPLATE_BASE` svn mkdir `dirname $TEMPLATE_BASE` else @@ -257,7 +257,7 @@ function template_create { touch $TEMPLATE_BASE.perms touch $TEMPLATE_BASE.template - if use_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ]; then + if templates_under_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ]; then cd `dirname $TEMPLATE_BASE` @@ -285,7 +285,7 @@ function template_create { info_commit="yes" fi - elif use_svn && [ -d "$TEMPLATE_FOLDER/.svn" ]; then + elif templates_under_svn && [ -d "$TEMPLATE_FOLDER/.svn" ]; then mkdir $TEMPLATE_BASE.{d,s} cd $TEMPLATE_FOLDER @@ -320,7 +320,7 @@ function template_create { cat $orig_template/$ROOT.template > $TEMPLATE_BASE.template fi - if use_svn && [ -d "$orig_template/.svn" ]; then + if templates_under_svn && [ -d "$orig_template/.svn" ]; then cd `dirname $TEMPLATE_BASE` @@ -448,7 +448,7 @@ function template_add { if [ ! -a "$TEMPLATE_BASE.d/$candidate" ]; then mkdir -p $TEMPLATE_BASE.d/`dirname $candidate` cp -a $jail/$candidate $TEMPLATE_BASE.d/$candidate - if use_svn && [ -d "$TEMPLATE_BASE.d/.svn" ]; then + if templates_under_svn && [ -d "$TEMPLATE_BASE.d/.svn" ]; then cwd="`pwd`" cd $TEMPLATE_BASE.d svn add ./$candidate @@ -477,7 +477,7 @@ function template_add { destination="`echo $TEMPLATE_BASE.d/$file | sed -e 's/\/$//'`" - if use_svn && [ -d "$TEMPLATE_BASE.d/.svn" ]; then + if templates_under_svn && [ -d "$TEMPLATE_BASE.d/.svn" ]; then candidate="./`dirname $file`" mkdir -p $TEMPLATE_BASE.d/$candidate @@ -552,12 +552,12 @@ function check_template_exist { mkdir $TEMPLATE_BASE.$component fi - if use_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ]; then + if templates_under_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ]; then svn add $TEMPLATE_BASE.$component info_commit="yes" fi - elif use_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ] && \ + elif templates_under_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ] && \ ! svn_check $TEMPLATE_BASE.$component; then cd `dirname $TEMPLATE_BASE` @@ -582,7 +582,7 @@ function template_delete { if [ -e "$TEMPLATE_BASE.d/$1" ]; then # first try to remove the file from the template - if use_svn && [ -d "$TEMPLATE_BASE.d/.svn" ]; then + if templates_under_svn && [ -d "$TEMPLATE_BASE.d/.svn" ]; then cd $TEMPLATE_BASE.d svn del --force ./$1 || rm -rf ./$1 if [ -z "$SILENT" ]; then @@ -606,7 +606,7 @@ function template_delete { fi elif [ -e "$TEMPLATE_BASE.s/$1" ]; then - if use_svn && [ -d "$TEMPLATE_BASE.s/.svn" ]; then + if templates_under_svn && [ -d "$TEMPLATE_BASE.s/.svn" ]; then cd $TEMPLATE_BASE.s svn del --force ./$1 || rm -rf ./$1 if [ -z "$SILENT" ]; then @@ -642,7 +642,7 @@ function template_remove { exit 1 fi - if use_svn && [ -d "$basedir/.svn" ]; then + if templates_under_svn && [ -d "$basedir/.svn" ]; then cd $TEMPLATE_FOLDER svn update svn del --force $template @@ -938,7 +938,7 @@ elif [ "$1" == "-d" ] || [ "$1" == "--delete" ]; then elif [ "$1" == "-s" ] || [ "$1" == "--sync" ]; then - if use_svn && [ -d "$TEMPLATE_FOLDER/.svn" ]; then + if templates_under_svn && [ -d "$TEMPLATE_FOLDER/.svn" ]; then ( cd $TEMPLATE_FOLDER && svn update ) true fi |