]> gitweb.fluxo.info Git - simplepkg.git/commitdiff
attempting to fix #40 and #84
authorrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>
Fri, 6 Mar 2009 00:44:42 +0000 (00:44 +0000)
committerrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>
Fri, 6 Mar 2009 00:44:42 +0000 (00:44 +0000)
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@794 04377dda-e619-0410-9926-eae83683ac58

trunk/mkbuild/generic.mkSlackBuild
trunk/mkbuild/kde4.mkSlackBuild
trunk/mkbuild/perl.mkSlackBuild
trunk/src/createpkg

index 7b31e5cad5643a4b87817ed5d9bbe4c1c6aff375..56af369b84fb02901d720a31da7c36ea65d22b10 100644 (file)
@@ -51,6 +51,7 @@ SRC_DIR=${SRC_DIR:=$CWD}/$PKG_NAME
 TMP=${TMP:=/tmp}
 PKG=${PKG:=$TMP/package-$PKG_NAME}
 REPOS=${REPOS:=$TMP}
+SLACKBUILD_PATH=${SLACKBUILD_PATH:="[[SLACKBUILD PATH]]"}
 PREFIX=${PREFIX:=[[PREFIX]]}
 PKG_WORK="$TMP/$SRC_NAME"
 CONF_OPTIONS=${CONF_OPTIONS:="[[OTHER CONFIGURE ARGS]]"}
@@ -514,7 +515,8 @@ fi
 <build_package> off
 # Build the package
 cd "$PKG"
-makepkg -l y -c n "$REPOS/$PKG_NAME-$PKG_VERSION-$ARCH-$BUILD.tgz" || exit $ERROR_MKPKG
+mkdir -p $REPOS/$SLACKBUILD_PATH
+$MAKEPKG -l y -c n "$REPOS/$SLACKBUILD_PATH/$PKG_NAME-$PKG_VERSION-$ARCH-$BUILD.tgz" || exit $ERROR_MKPKG
 </build_package>
 
 <clean_builds> off
index 867dcd4398152bb88e9e3e5e6c413408da89f865..12033178adab0034d3c3978882b4537eaf2be405 100644 (file)
@@ -50,6 +50,7 @@ SRC_DIR=${SRC_DIR:=$CWD}/$PKG_NAME
 TMP=${TMP:=/tmp}
 PKG=${PKG:=$TMP/package-$PKG_NAME}
 REPOS=${REPOS:=$TMP}
+SLACKBUILD_PATH=${SLACKBUILD_PATH:="[[SLACKBUILD PATH]]"}
 PREFIX=${PREFIX:=[[PREFIX]]}
 PKG_WORK="$TMP/$SRC_NAME"
 CONF_OPTIONS=${CONF_OPTIONS:="[[OTHER CONFIGURE ARGS]]"}
@@ -508,7 +509,8 @@ fi
 <build_package> off
 # Build the package
 cd "$PKG"
-makepkg -l y -c n "$REPOS/$PKG_NAME-$PKG_VERSION-$ARCH-$BUILD.tgz" || exit $ERROR_MKPKG
+mkdir -p $REPOS/$SLACKBUILD_PATH
+$MAKEPKG -l y -c n "$REPOS/$SLACKBUILD_PATH/$PKG_NAME-$PKG_VERSION-$ARCH-$BUILD.tgz" || exit $ERROR_MKPKG
 </build_package>
 
 <clean_builds> off
index 8b78f02d4a49af2519826caafc6b1ce17d489292..a2ccb7e34f635acbdd6816c24eb1254bee76fdc6 100644 (file)
@@ -52,6 +52,7 @@ SRC_DIR=${SRC_DIR:=$CWD}/$PKG_NAME
 TMP=${TMP:=/tmp}
 PKG=${PKG:=$TMP/package-$PKG_NAME}
 REPOS=${REPOS:=$TMP}
+SLACKBUILD_PATH=${SLACKBUILD_PATH:="[[SLACKBUILD PATH]]"}
 PREFIX=${PREFIX:=[[PREFIX]]}
 PKG_WORK="$TMP/$SRC_NAME"
 CONF_OPTIONS=${CONF_OPTIONS:="[[OTHER CONFIGURE ARGS]]"}
@@ -431,7 +432,8 @@ fi
 <build_package> off
 # Build the package
 cd "$PKG"
-makepkg -l y -c n "$REPOS/$PKG_NAME-$PKG_VERSION-$ARCH-$BUILD.tgz" || exit $ERROR_MKPKG
+mkdir -p $REPOS/$SLACKBUILD_PATH
+$MAKEPKG -l y -c n "$REPOS/$SLACKBUILD_PATH/$PKG_NAME-$PKG_VERSION-$ARCH-$BUILD.tgz" || exit $ERROR_MKPKG
 </build_package>
 
 <clean_builds> off
index c83b6733bf722852868ef39db3cda533a50e047d..5ac4ac245d45670a250f3633ac9a696b744f9b56 100644 (file)
@@ -49,6 +49,12 @@ ${red}DESCRIPTION${normal}
                 show description and dependences of the program
             ${red}-l${normal}, ${red}--list${normal}
                 list all the SlackBuilds
+            ${red}--list-packages ${green}[repository]${normal}
+                list all packages in binary repositories
+            ${red}--sign${green}<package_name>${normal}
+                sign a binary package
+            ${red}--remove${green}<package_name>${normal}
+                remove a binary package
             ${red}--sync${normal}
                 synchronize SlackBuilds repository
             ${red}--update${normal}
@@ -468,6 +474,7 @@ function update_metadata {
 
   cd $makepkg_repos
 
+  get_sign_user
   repo_gpg_key $makepkg_repos
   gen_meta $SUBFOLDER/$PKG_NAME
   gen_filelist
@@ -494,22 +501,109 @@ function update_metadata {
 
 function list_packages {
 
-  # TODO
-  true
+  # list packages in repositories
+  # usage: list_packages [repository_list]
+
+  local repository repositories="$*"
+
+  if [ -z "$repositories" ]; then
+    repositories="$PACKAGES_DIR $NOARCH_DIR"
+  fi
+
+  for repository in $repositories; do
+    echo "Packages from $repository..."
+    find $repository -name '*.tgz'
+  done
 
 }
 
-function delete_packages {
+function remove_package {
+
+  # delete a package from repositories
+  # usage: remove_packages <package> [repository_list]
+
+  local package="$1" repository repositories="$2"
+
+  if [ -z "$package" ]; then
+    return 1
+  fi
+
+  if [ -z "$repositories" ]; then
+    repositories="$PACKAGES_DIR $NOARCH_DIR"
+  fi
+
+  for repository in $repositories; do
+
+      (
 
-  # TODO
-  true
+      cd $repository
+
+      for file in `find . -name "$package-*-*-*.tgz" -o -name "$package-*-*-*.meta" -o -name "$package-*-*-*.tgz.asc"`; do
+        svn_del $file
+        if [ -e "CHECKSUMS.md5" ] && echo $file | grep -q -e ".tgz$"; then
+          # remove md5 information
+          sed -i "/ \.*\/*$(regexp_slash $file)$/d" CHECKSUMS.md5
+          cat CHECKSUMS.md5 | gzip -9 -c - > CHECKSUMS.md5.gz
+        fi
+      done
+
+      for file in `find $repository -name "$package.slack-required"`; do
+        svn_del $file
+      done
+
+      )
+
+      update_metadata $repository
+  done
 
 }
 
 function sign_package {
 
-  # TODO
-  true
+  # sign a package from repositories
+  # usage: sign_package <package> [repository_list]
+
+  local package="$1" repository repositories="$2"
+
+  if [ -z "$package" ]; then
+    return 1
+  fi
+
+  if [ -z "$repositories" ]; then
+    repositories="$PACKAGES_DIR $NOARCH_DIR"
+  fi
+
+  for repository in $repositories; do
+
+    (
+
+    cd $repository
+
+    for file in `find . -name "$package-*-*-*.tgz"`; do
+
+      echo "Signing package..."
+
+      get_sign_user
+
+      if [ ! -z "$SIGN_PACKAGES_USER" ] && [ "`whoami`" != "$SIGN_PACKAGES_USER" ]; then
+        tmp_sign_folder="`mktemp -d $TMP/createpkg_sign.XXXXXX`"
+        chown $SIGN_PACKAGES_USER $tmp_sign_folder
+        su $SIGN_PACKAGES_USER -c "gpg $GPG_AGENT_OPTION --armor -sb -u $SIGN_KEYID -o $tmp_sign_folder/`basename $file`.asc $repository/$file"
+        cp $tmp_sign_folder/`basename $file`.asc $repository/$file.asc
+        rm -rf $tmp_sign_folder
+      else
+        tmp_sign_folder="`mktemp -d $TMP/createpkg_sign.XXXXXX`"
+        gpg $GPG_AGENT_OPTION --armor -sb -u $SIGN_KEYID -o $tmp_sign_folder/`basename $file`.asc $repository/$file
+        cp $tmp_sign_folder/`basename $file`.asc $repository/$file.asc
+        rm -rf $tmp_sign_folder
+      fi
+
+    done
+
+    )
+
+    update_metadata $repository
+  done
 
 }
 
@@ -636,6 +730,7 @@ function create_package {
     COLOR=${COLOR:=$COLOR_MODE} \
     REPOS=${REPOS:=$PACKAGES_DIR} \
     CLEANUP=${CLEANUP:=$CREATEPKG_CLEANUP} \
+    SLACKBUILD_PATH="" \
     INTERACT=no $FAKEROOT sh $SHELL_FLAG ./$SCRIPT_NAME
   )
   
@@ -688,7 +783,10 @@ function create_package {
       cp $tmp_sign_folder/$PKG_NAME.asc $PACKAGES_DIR/$PKG_NAME.asc
       rm -rf $tmp_sign_folder
     else
-      gpg $GPG_AGENT_OPTION --armor -sb -u $SIGN_KEYID $PACKAGES_DIR/$PKG_NAME
+      tmp_sign_folder="`mktemp -d $TMP/createpkg_sign.XXXXXX`"
+      gpg $GPG_AGENT_OPTION --armor -sb -u $SIGN_KEYID -o $tmp_sign_folder/$PKG_NAME.asc $PACKAGES_DIR/$PKG_NAME
+      cp $tmp_sign_folder/$PKG_NAME.asc $PACKAGES_DIR/$PKG_NAME.asc
+      rm -rf $tmp_sign_folder
     fi
   
   fi
@@ -947,6 +1045,21 @@ case $1 in
     fi
     exit $EXIT_CODE
   ;;
+  '--list-packages')
+    shift
+    list_packages $*
+    exit $EXIT_CODE
+  ;;
+  '--sign')
+    shift
+    sign_package $*
+    exit $EXIT_CODE
+  ;;
+  '--remove')
+    shift
+    remove_package $*
+    exit $EXIT_CODE
+  ;;
   *)
     if [ "${1:0:1}" != "-" ]; then
       build_queue $*