Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117755007
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
19 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/osc-info.sh b/osc-info.sh
index e85e7ace..b84821ce 100755
--- a/osc-info.sh
+++ b/osc-info.sh
@@ -1,518 +1,525 @@
#!/bin/bash
mkdir -p osc-cache/
rm -f osc-info.stop
refresh=0
while [ $# -gt 0 ]; do
case $1 in
--refresh)
refresh=1
shift
;;
*)
package_refresh=$1
shift
;;
esac
done
echo -n "Gathering projects ..."
# List the projects and cache them locally.
if [ ! -f "osc_cache/obs_projects.list" -o ${refresh} -eq 1 ]; then
osc ls | grep -vE "^(home|deleted)" > osc-cache/obs_projects.list
# Legacy Kolab releases do not need to be updated
sed -r -i \
-e '/^cyrus-imapd/d' \
-e '/^Kolab:3\.0/d' \
-e '/^Kolab:3\.1/d' \
-e '/^Kolab:3\.2/d' \
-e '/^Kolab:3\.3/d' \
- -e '/^Kolab:13:Updates/d' \
+ -e '/^Kolab:3\.4/d' \
+ -e '/^Kolab:13/d' \
+ -e '/^Kolab:14/d' \
+ -e '/^Kolab:Development/d' \
osc-cache/obs_projects.list
# Legacy target platforms do not need to be updated
sed -r -i \
-e '/^Debian:6\.0/d' \
+ -e '/^Debian:7\.0/d' \
-e '/^Fedora:17/d' \
-e '/^Fedora:18/d' \
-e '/^Fedora:19/d' \
-e '/^Fedora:20/d' \
+ -e '/^Fedora:21/d' \
-e '/^openSUSE:12\.1/d' \
-e '/^openSUSE:12\.2/d' \
- -e '/^RHEL:7/d' \
+ -e '/^openSUSE:12\.3/d' \
+ -e '/^openSUSE:13\.1/d' \
-e '/^UCS:3\.0/d' \
-e '/^UCS:3\.1/d' \
-e '/^UCS:3\.2/d' \
+ -e '/^UCS:4\.0/d' \
-e '/^Kontact/d' \
osc-cache/obs_projects.list
fi
echo " DONE"
obs_projects=$(cat osc-cache/obs_projects.list)
# Placeholder for Kolab projects
declare -a kolab_projects
# Placeholder for target platform repositories
declare -a target_repositories
# First, attempt to discover the maximum width of:
#
# - Either the table column header or any project names, and
# - Either the table column header or any target platform name.
package_column_width=0
project_column_width=0
target_column_width=0
version_column_width=36
for project in ${obs_projects}; do
if [ -z "$(echo ${project} | grep ^Kolab)" ]; then
target_repositories[${#target_repositories[@]}]=$(echo ${project} | sed -e 's/:/_/g')
# Determine if the name of this project is longer than any other project
# name we've seen before
if [ $(echo -n "$(echo ${project} | sed -e 's/:/_/g')" | wc -c) -gt ${target_column_width} ]; then
target_column_width=$(echo -n "$(echo ${project} | sed -e 's/:/_/g')" | wc -c)
fi
else
kolab_projects[${#kolab_projects[@]}]="${project}"
# Determine if the name of this project is longer than any other project
# name we've seen before
if [ $(echo -n "${project}" | wc -c) -gt ${project_column_width} ]; then
project_column_width=$(echo -n "${project}" | wc -c)
fi
fi
done
# Capture all names being shorter than the header.
if [ $(echo -n "Kolab Version(s)" | wc -c) -gt ${project_column_width} ]; then
project_column_width=$(echo -n "Kolab Version(s)" | wc -c)
fi
if [ $(echo -n "Platform(s)" | wc -c) -gt ${target_column_width} ]; then
target_column_width=$(echo -n "Platform(s)" | wc -c)
fi
# List all packages in all projects
current=0
cur_percentage=0
total=${#kolab_projects[@]}
while [ ${current} -lt ${#kolab_projects[@]} ]; do
project=${kolab_projects[${current}]}
if [ ! -f "osc-cache/${project}_packages.list" -o ${refresh} -eq 1 ]; then
osc ls ${project} > osc-cache/${project}_packages.list
fi
if [ $(( ${current} * 100 / ${total} )) -ne ${cur_percentage} ]; then
echo -en "Listing packages for projects: $(printf %3d $(( ${current} * 100 / ${total} )))%\r"
export cur_percentage=$(( ${current} * 100 / ${total} ))
fi
export cur_percentage=$(( ${current} * 100 / ${total} ))
let current++
done
echo -en "Listing packages for projects: $(printf %3d $(( ${current} * 100 / ${total} )))%\r"
# Remove the exceptions to the rule
sed -r -i \
-e '/^roundcubemail-skin-contargo$/d' \
osc-cache/*_packages.list
cat osc-cache/*_packages.list | sort -u > osc-cache/packages.list
for package in $(cat osc-cache/packages.list); do
if [ $(echo -n "${package}" | wc -c) -gt ${package_column_width} ]; then
package_column_width=$(echo -n "${package}" | wc -c)
fi
done
package_column_width=$(( ${package_column_width} * 2 + $(echo -n ":ref:\`package-\'" | wc -c) ))
if [ $(echo -n "Package Name(s)" | wc -c) -gt ${package_column_width} ]; then
package_column_width=$(echo -n "Package Name(s)" | wc -c)
fi
echo ""
# To initialize the tables, first iterate over all unique packages (across all
# projects).
if [ ! -z "${package_refresh}" ]; then
packages=${package_refresh}
else
packages=$(cat osc-cache/*_packages.list | sort -u)
fi
total=$(cat osc-cache/*_packages.list | sort -u | wc -l)
current=1
cur_percentage=0
# Temp
#if [ 0 -eq 1 ]; then
for package in ${packages}; do
target="source/developer-guide/packaging/obs-for-kolab/packages/${package}.txt"
if [ -f "${target}" ]; then
rm -rf ${target}
fi
x=0
while [ ${x} -lt ${#kolab_projects[@]} ]; do
project=${kolab_projects[${x}]}
if [ ! -f "osc-cache/${project}_${package}.meta" -o ${refresh} -eq 1 ]; then
osc meta pkg ${project} ${package} > osc-cache/${project}_${package}.meta 2>/dev/null
fi
let x++
done
echo ".. _package-$(echo ${package} | tr '[:upper:]' '[:lower:]'):" >> ${target}
echo "" >> ${target}
echo "${package}" >> ${target}
echo "${package}" | sed -e 's/./=/g' >> ${target}
echo "" >> ${target}
if [ -f "source/developer-guide/packaging/obs-for-kolab/packages/${package}.rst" ]; then
cat "source/developer-guide/packaging/obs-for-kolab/packages/${package}.rst" >> ${target}
echo "" >> ${target}
fi
echo ".. table:: Version Table for ${package}" >> ${target}
echo "" >> ${target}
printf "%s" " +-" >> ${target}
printf "%*.*s" 0 ${project_column_width} $(printf '%0.1s' "-"{1..60}) >> ${target}
printf "%s" "-+-" >> ${target}
printf "%*.*s" 0 ${target_column_width} $(printf '%0.1s' "-"{1..60}) >> ${target}
printf "%s" "-+-" >> ${target}
printf "%*.*s" 0 ${version_column_width} $(printf '%0.1s' "-"{1..60}) >> ${target}
printf "%s" "-+" >> ${target}
echo "" >> ${target}
printf "%s" " | " >> ${target}
printf "%-${project_column_width}s" "Kolab Version(s)" >> ${target}
printf "%s" " | " >> ${target}
printf "%-${target_column_width}s" "Platform(s)" >> ${target}
printf "%s" " | " >> ${target}
printf "%-${version_column_width}s" "Version" >> ${target}
printf "%s" " |" >> ${target}
echo "" >> ${target}
printf "%s" " +=" >> ${target}
printf "%*.*s" 0 ${project_column_width} $(printf '%0.1s' "="{1..60}) >> ${target}
printf "%s" "=+=" >> ${target}
printf "%*.*s" 0 ${target_column_width} $(printf '%0.1s' "="{1..60}) >> ${target}
printf "%s" "=+=" >> ${target}
printf "%*.*s" 0 ${version_column_width} $(printf '%0.1s' "="{1..60}) >> ${target}
printf "%s" "=+" >> ${target}
echo "" >> ${target}
if [ $(( ${current} * 100 / ${total} )) -ne ${cur_percentage} ]; then
echo -en "Initialize package tables: $(printf %3d $(( ${current} * 100 / ${total} )))%\r"
export cur_percentage=$(( ${current} * 100 / ${total} ))
fi
export cur_percentage=$(( ${current} * 100 / ${total} ))
let current++
done
echo ""
# Loop through our projects,
# then through the packages for that project,
# then see what the packages are configured to build for,
# then see where the package originates from and what version is included, or
# we include.
x=0
while [ ${x} -lt ${#kolab_projects[@]} ]; do
project=${kolab_projects[${x}]}
if [ ! -z "${package_refresh}" ]; then
packages=${package_refresh}
else
packages=$(cat osc-cache/*_packages.list | sort -u)
fi
current=1
cur_percentage=0
total=$(cat osc-cache/*_packages.list | sort -u | wc -l)
for package in ${packages}; do
if [ -f "osc-info.stop" ]; then
echo "Stop issued."
exit 1
fi
enabled_repositories=""
target="source/developer-guide/packaging/obs-for-kolab/packages/${package}.txt"
if [ -s "osc-cache/${project}_${package}.meta" ]; then
disabled_default=$(awk '/<build>/,/<\/build>/' osc-cache/${project}_${package}.meta | grep -E "^\s*<disable/>$")
else
disabled_default="yes"
fi
if [ -z "${disabled_default}" ]; then
disabled_repositories=$(
awk '/<build>/,/<\/build>/' osc-cache/${project}_${package}.meta | \
grep -E "^\s*<disable repository.*" | \
sed -r -e 's/\s*<disable repository="(.*)"\/>/\1/g' | \
sort -u
)
y=0
while [ ${y} -lt ${#target_repositories[@]} ]; do
repo_disabled=0
for disabled_repository in ${disabled_repositories}; do
if [ "${target_repositories[${y}]}" == "${disabled_repository}" ]; then
repo_disabled=1
fi
done
if [ ${repo_disabled} -eq 0 ]; then
enabled_repositories="${enabled_repositories} ${target_repositories[${y}]}"
fi
let y++
done
elif [ "${disabled_default}" == "yes" ]; then
enabled_repositories=""
else
enabled_repositories=$(
awk '/<build>/,/<\/build>/' osc-cache/${project}_${package}.meta | \
grep -E "^\s*<enable repository.*" | \
sed -r -e 's/\s*<enable repository="(.*)"\/>/\1/g' | \
sort -u
)
fi
if [ ! -z "${enabled_repositories}" ]; then
printf " | %-${project_column_width}s |" ${project} >> ${target}
have_had_first=0
for enabled_repository in ${enabled_repositories}; do
# Here be version magic.
# osc buildinfo Kolab:3.1 389-admin Debian_7.0 x86_64 | awk '/<versrel>/,/<\/versrel>/' | sed -e 's/\s*<versrel>//g' -e 's/<\/versrel>//g'
if [ ! -s "osc-cache/${project}_${enabled_repository}_${package}.version" -o ${refresh} -eq 1 ]; then
osc buildinfo ${project} ${package} ${enabled_repository} x86_64 2>/dev/null | awk '/<versrel>/,/<\/versrel>/' | sed -e 's/\s*<versrel>//g' -e 's/<\/versrel>//g' > osc-cache/${project}_${enabled_repository}_${package}.version
fi
version=$(cat osc-cache/${project}_${enabled_repository}_${package}.version)
if [ -z "${version}" ]; then
version="N/A"
fi
if [ ${have_had_first} -eq 0 ]; then
printf " %-${target_column_width}s | %-${version_column_width}s |" ${enabled_repository} ${version} >> ${target}
echo "" >> ${target}
printf "%s" " +-" >> ${target}
printf "%*.*s" 0 ${project_column_width} $(printf '%0.1s' "-"{1..60}) >> ${target}
printf "%s" "-+-" >> ${target}
printf "%*.*s" 0 ${target_column_width} $(printf '%0.1s' "-"{1..60}) >> ${target}
printf "%s" "-+-" >> ${target}
printf "%*.*s" 0 ${version_column_width} $(printf '%0.1s' "-"{1..60}) >> ${target}
printf "%s" "-+" >> ${target}
echo "" >> ${target}
have_had_first=1
else
printf " | %-${project_column_width}s |" >> ${target}
printf " %-${target_column_width}s | %-${version_column_width}s |" ${enabled_repository} ${version} >> ${target}
echo "" >> ${target}
printf "%s" " +-" >> ${target}
printf "%*.*s" 0 ${project_column_width} $(printf '%0.1s' "-"{1..60}) >> ${target}
printf "%s" "-+-" >> ${target}
printf "%*.*s" 0 ${target_column_width} $(printf '%0.1s' "-"{1..60}) >> ${target}
printf "%s" "-+-" >> ${target}
printf "%*.*s" 0 ${version_column_width} $(printf '%0.1s' "-"{1..60}) >> ${target}
printf "%s" "-+" >> ${target}
echo "" >> ${target}
fi
done
fi
if [ $(( ${current} * 100 / ${total} )) -ne ${cur_percentage} ]; then
echo -en "${project}: $(printf %3d $(( ${current} * 100 / ${total} )))%\r"
export cur_percentage=$(( ${current} * 100 / ${total} ))
fi
export cur_percentage=$(( ${current} * 100 / ${total} ))
let current++
done
echo ""
let x++
done
# Temp
#fi
# Projects page
current=0
cur_percentage=0
total=${#kolab_projects[@]}
mkdir -p "source/developer-guide/packaging/obs-for-kolab/product/"
while [ ${current} -lt ${#kolab_projects[@]} ]; do
project=${kolab_projects[${current}]}
project_lc=$(echo ${project} | sed -e 's/:/-/g' | tr '[:upper:]' '[:lower:]')
target="source/developer-guide/packaging/obs-for-kolab/product/${project_lc}.rst"
enabled_repositories=""
if [ -f "${target}" ]; then
rm -rf ${target}
fi
echo ".. _product-${project_lc}:" >> ${target}
echo "" >> ${target}
echo "${project}" >> ${target}
echo "${project}" | sed -r -e 's/./=/g' >> ${target}
echo "" >> ${target}
if [ ! -f "osc-cache/${project}.meta" -o ${refresh} -eq 1 ]; then
osc meta prj ${project} > osc-cache/${project}.meta 2>/dev/null
fi
if [ -s "osc-cache/${project}.meta" ]; then
disabled_default=$(awk '/<build>/,/<\/build>/' osc-cache/${project}.meta | grep -E "^\s*<disable/>$")
else
disabled_default="yes"
fi
if [ -z "${disabled_default}" ]; then
disabled_repositories=$(
awk '/<build>/,/<\/build>/' osc-cache/${project}.meta | \
grep -E "^\s*<disable repository.*" | \
sed -r -e 's/\s*<disable repository="(.*)"\/>/\1/g' | \
sort -u
)
y=0
while [ ${y} -lt ${#target_repositories[@]} ]; do
repo_disabled=0
for disabled_repository in ${disabled_repositories}; do
if [ "${target_repositories[${y}]}" == "${disabled_repository}" ]; then
repo_disabled=1
fi
done
if [ ${repo_disabled} -eq 0 ]; then
enabled_repositories="${enabled_repositories} ${target_repositories[${y}]}"
fi
let y++
done
elif [ "${disabled_default}" == "yes" ]; then
enabled_repositories=""
else
enabled_repositories=$(
awk '/<build>/,/<\/build>/' osc-cache/${project}.meta | \
grep -E "^\s*<enable repository.*" | \
sed -r -e 's/\s*<enable repository="(.*)"\/>/\1/g' | \
sort -u
)
fi
packages=$(cat osc-cache/${project}_packages.list)
if [ ! -z "${enabled_repositories}" ]; then
echo "Version Matrices per Target Platform" >> ${target}
echo "------------------------------------" >> ${target}
echo "" >> ${target}
for enabled_repository in ${enabled_repositories}; do
num_packages=0
for package in ${packages}; do
if [ -s "osc-cache/${project}_${enabled_repository}_${package}.version" ]; then
num_packages=$(( ${num_packages} + 1 ))
fi
done
if [ ${num_packages} -lt 1 ]; then
continue
fi
echo "* :ref:\`product-${project_lc}-$(echo ${enabled_repository} | sed -e 's/:/-/g' | tr '[:upper:]' '[:lower:]')\`" >> ${target}
done
echo "" >> ${target}
fi
for enabled_repository in ${enabled_repositories}; do
num_packages=0
for package in ${packages}; do
if [ -s "osc-cache/${project}_${enabled_repository}_${package}.version" ]; then
num_packages=$(( ${num_packages} + 1 ))
fi
done
if [ ${num_packages} -lt 1 ]; then
continue
fi
echo ".. _product-${project_lc}-$(echo ${enabled_repository} | sed -e 's/:/-/g' | tr '[:upper:]' '[:lower:]'):" >> ${target}
echo "" >> ${target}
echo "${enabled_repository}" >> ${target}
echo "${enabled_repository}" | sed -r -e 's/./^/g' >> ${target}
echo "" >> ${target}
echo ".. table:: Version Matrix for ${enabled_repository} " >> ${target}
echo "" >> ${target}
printf "%s" " +-" >> ${target}
printf "%*.*s" 0 ${package_column_width} $(printf '%0.1s' "-"{1..120}) >> ${target}
printf "%s" "-+-" >> ${target}
printf "%*.*s" 0 ${version_column_width} $(printf '%0.1s' "-"{1..120}) >> ${target}
printf "%s" "-+" >> ${target}
echo "" >> ${target}
printf "%s" " | " >> ${target}
printf "%-${package_column_width}s" "Package Name(s)" >> ${target}
printf "%s" " | " >> ${target}
printf "%-${version_column_width}s" "Version" >> ${target}
printf "%s" " |" >> ${target}
echo "" >> ${target}
printf "%s" " +=" >> ${target}
printf "%*.*s" 0 ${package_column_width} $(printf '%0.1s' "="{1..120}) >> ${target}
printf "%s" "=+=" >> ${target}
printf "%*.*s" 0 ${version_column_width} $(printf '%0.1s' "="{1..120}) >> ${target}
printf "%s" "=+" >> ${target}
echo "" >> ${target}
for package in ${packages}; do
if [ -s "osc-cache/${project}_${enabled_repository}_${package}.version" ]; then
package_version=$(cat "osc-cache/${project}_${enabled_repository}_${package}.version")
printf "%s" " | " >> ${target}
printf "%-${package_column_width}s | %-${version_column_width}s |" ":ref:\`package-$(echo ${package} | tr '[:upper:]' '[:lower:]')\`" ${package_version} >> ${target}
echo "" >> ${target}
printf "%s" " +-" >> ${target}
printf "%*.*s" 0 ${package_column_width} $(printf '%0.1s' "-"{1..120}) >> ${target}
printf "%s" "-+-" >> ${target}
printf "%*.*s" 0 ${version_column_width} $(printf '%0.1s' "-"{1..120}) >> ${target}
printf "%s" "-+" >> ${target}
echo "" >> ${target}
fi
done
echo "" >> ${target}
done
let current++
done
echo ""
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, Apr 4, 7:35 AM (1 w, 5 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18823037
Default Alt Text
(19 KB)
Attached To
Mode
rD docs
Attached
Detach File
Event Timeline