diff --git a/configs/dist-git/dist-git.conf b/configs/dist-git/dist-git.conf index c5282ab..a6b6aae 100644 --- a/configs/dist-git/dist-git.conf +++ b/configs/dist-git/dist-git.conf @@ -10,3 +10,5 @@ grok = True fedmsgs = True old_paths = True nomd5 = True + +default_namespace = rpms diff --git a/scripts/dist-git/mkbranch b/scripts/dist-git/mkbranch index e7267a9..574a85b 100755 --- a/scripts/dist-git/mkbranch +++ b/scripts/dist-git/mkbranch @@ -92,6 +92,18 @@ if [ -z "$BRANCH" -o -z "$PACKAGES" ] ; then exit -1 fi +# prefix default namespace if set +NEWP= +for PACKAGE in $PACKAGES ; do + PACKAGE=`echo $PACKAGE | sed -e "s+^/*\([^/]*\)/*$+\1+"` + parts=($(echo $PACKAGE | tr "/" " ")) + parts_len=${#parts[@]} + if [ -n "$default_namespace" ] && [ $parts_len -le 1 ]; then + PACKAGE=$default_namespace/$PACKAGE + fi + NEWP="$NEWP $PACKAGE" +done +PACKAGES="$(echo $NEWP)" # Sanity checks before we start doing damage NEWP= @@ -108,6 +120,7 @@ for p in $PACKAGES ; do NEWP="$NEWP $p" done PACKAGES="$(echo $NEWP)" + if [ -z "$PACKAGES" ] ; then echo "NOOP: no valid packages found to process" exit -1 diff --git a/scripts/dist-git/mkbranch_branching b/scripts/dist-git/mkbranch_branching index dafe271..deb4256 100755 --- a/scripts/dist-git/mkbranch_branching +++ b/scripts/dist-git/mkbranch_branching @@ -92,6 +92,18 @@ if [ -z "$BRANCH" -o -z "$PACKAGES" ] ; then exit -1 fi +# prefix default namespace if set +NEWP= +for PACKAGE in $PACKAGES ; do + PACKAGE=`echo $PACKAGE | sed -e "s+^/*\([^/]*\)/*$+\1+"` + parts=($(echo $PACKAGE | tr "/" " ")) + parts_len=${#parts[@]} + if [ -n "$default_namespace" ] && [ $parts_len -le 1 ]; then + PACKAGE=$default_namespace/$PACKAGE + fi + NEWP="$NEWP $PACKAGE" +done +PACKAGES="$(echo $NEWP)" # Sanity checks before we start doing damage NEWP= @@ -108,6 +120,7 @@ for p in $PACKAGES ; do NEWP="$NEWP $p" done PACKAGES="$(echo $NEWP)" + if [ -z "$PACKAGES" ] ; then echo "NOOP: no valid packages found to process" exit -1 diff --git a/scripts/dist-git/setup_git_package b/scripts/dist-git/setup_git_package index 29f7514..4a63204 100755 --- a/scripts/dist-git/setup_git_package +++ b/scripts/dist-git/setup_git_package @@ -58,6 +58,13 @@ if [ -z "$PACKAGE" ] ; then exit -1 fi +PACKAGE=`echo $PACKAGE | sed -e "s+^/*\([^/]*\)/*$+\1+"` +parts=($(echo $PACKAGE | tr "/" " ")) +parts_len=${#parts[@]} +if [ -n "$default_namespace" ] && [ $parts_len -le 1 ]; then + PACKAGE=$default_namespace/$PACKAGE +fi + # Sanity checks before we start doing damage [ $VERBOSE -gt 1 ] && echo "Checking package $PACKAGE..." if [ -f $REPODIR/$PACKAGE.git/refs/heads/master ] ; then diff --git a/scripts/httpd/upload.cgi b/scripts/httpd/upload.cgi index b53a51e..b5a4095 100644 --- a/scripts/httpd/upload.cgi +++ b/scripts/httpd/upload.cgi @@ -91,6 +91,17 @@ def makedirs(dir_, username, mode=02755): send_error(str(e)) +def ensure_namespaced(name, namespace): + if not namespace: + return name + + name_parts = name.split('/') + if len(name_parts) == 1: + return os.path.join(namespace, name) + + return name + + def main(): config = ConfigParser() config.read('/etc/dist-git/dist-git.conf') @@ -112,7 +123,7 @@ def main(): assert os.environ['REQUEST_URI'].split('/')[1] == 'repo' form = cgi.FieldStorage() - name = check_form(form, 'name') + name = check_form(form, 'name').strip('/') # Search for the file hash, start with stronger hash functions if 'sha512sum' in form: @@ -164,6 +175,10 @@ def main(): hash_dir = os.path.join(module_dir, filename, hash_type, checksum) msgpath = os.path.join(name, filename, hash_type, checksum, filename) + # prefix name by default namespace if configured + if config['dist-git'].get('default_namespace'): + name = ensure_namespaced(name, config['dist-git'].get('default_namespace')).strip('/') + # first test if the module really exists git_dir = os.path.join(config['dist-git']['gitroot_dir'], '%s.git' % name) if not os.path.isdir(git_dir):