diff --git a/scripts/reverse_dependency.sh b/scripts/reverse_dependency.sh new file mode 100755 index 0000000000000000000000000000000000000000..b2be150309245be72e0859552b5427e4b7d3c63e --- /dev/null +++ b/scripts/reverse_dependency.sh @@ -0,0 +1,226 @@ +#!/bin/bash + +set -e + +RDEP_FILE=".rdepends_ci/rdepends_ci.yml" + +#########Function definitions +generate_project_line () { + local PROJECT_STRING=" project: " + #Check that the library is passed as argument + if [ $# -eq 0 ] + then + echo "Generate project line Error: no library specified." + exit 1 + else + if [ $# -gt 1 ] + then + echo "WARNING: Using first argument as library." + fi + fi + + #Get project path and generate string + local PROJ=( $(apt-cache show $1 | grep Homepage) ) && + { + declare -a PROJ + } || { + echo "${1} not found as package" + exit 1 + } + + if [ ${#PROJ[@]} -eq 2 ] + then + tmp=${PROJ[1]#https://gitlab.iri.upc.edu/} + PROJECT_STRING="${PROJECT_STRING}${tmp}" + else + echo "No homepage found for ${1}" + exit 1 + fi + + echo "${PROJECT_STRING}" >> ${RDEP_FILE} +} + +generate_branch_line () { + local BRANCH_STRING=" branch: \"" + + if [ $# -eq 0 ] + then + echo "Generate branch line Error: no library specified." + exit 1 + else + if [ $# -gt 1 ] + then + echo "WARNING: Using first argument as library." + fi + fi + + # Get version and generate string + local VER=( $(apt-cache show $1 | grep Version) ) && + { + declare -a VER + } || { + echo "${1} not found as package" + exit 1 + } + + if [ ${#VER[@]} -eq 2 ] + then + BRANCH_STRING="${BRANCH_STRING}${VER[1]}\"" + else + echo "No version found for ${1}" + exit 1 + fi + + echo "${BRANCH_STRING}" >> ${RDEP_FILE} + +} + +generate_deps_line () { + local DEP_STRING=" needs: [" + + #Check that the library is passed as argument + if [ $# -eq 0 ] + then + echo "Generate deps line Error: no library specified." + exit 1 + else + if [ $# -gt 1 ] + then + echo "WARNING: Using first argument as library." + fi + fi + + # Get dependencies list and generate string + local DEP=( $(apt-cache depends $1 | grep -P 'iri-.+-dev') ) && + { + declare -a DEP + } || { + echo "${1} not found as package" + exit 1 + } + + local LAST_DEP_INDEX=$((${#DEP[@]}-1)) + + #echo "Last dep index ${LAST_DEP_INDEX}" + local FIRST=1 + for ((j=2;j<${#DEP[@]};j+=2)) + do + for ((k=1;k<${#RDEP[@]};k++)) + do + if [ ${DEP[${j}]} == ${RDEP[${k}]} ] + then + if [ ${FIRST} -eq 1 ] + then + DEP_STRING="${DEP_STRING}${DEP[${j}]}" + FIRST=0 + else + DEP_STRING="${DEP_STRING}, ${DEP[${j}]}" + fi + fi + done + #echo "Updating dependency $[ ${j}/2] ${DEP[${j}]}" + done + + DEP_STRING="${DEP_STRING}]" + + echo "${DEP_STRING}" >> ${RDEP_FILE} + +} + +generate_version_var_line () { + local VERSION_VAR_STRING=" TAG_VERSION: \"" + + if [ $# -eq 0 ] + then + echo "Generate version variable line Error: no library specified." + exit 1 + else + if [ $# -gt 1 ] + then + echo "WARNING: Using first argument as library." + fi + fi + + # Get version and generate string + local VER=( $(apt-cache show $1 | grep Version) ) && + { + declare -a VER + } || { + echo "${1} not found as package" + exit 1 + } + + if [ ${#VER[@]} -eq 2 ] + then + local tmp=${VER[1]%.*} + local MAJOR=${tmp%.*} + tmp=${VER[1]#*.} + local MINOR=${tmp%.*} + local REV=${tmp#*.} + local NEW_REV=$((${REV}+1)) + local NEW_VER="${MAJOR}.${MINOR}.${NEW_REV}" + VERSION_VAR_STRING="${VERSION_VAR_STRING}${NEW_VER}\"" + else + echo "No version found for ${1}" + exit 1 + fi + + echo "${VERSION_VAR_STRING}" >> ${RDEP_FILE} +} +################ + + +#Check that the library is passed as argument +if [ $# -eq 0 ] +then + echo "Reverse dependency Error: no library specified." + exit 1 +else + if [ $# -gt 1 ] + then + echo "WARNING: Using first argument as library." + fi +fi + +#Get reverse dependencies list +RDEP=( $(apt-cache rdepends iri-$1-dev | grep -P 'iri-.+-dev') ) && +{ + declare -a RDEP +} || { + echo "iri-${1}-dev not found as package" + exit 0 +} + +# Generate rdependes_ci.yml header +mkdir -pv .rdepends_ci +echo " image: docker.io/labrobotica/labrobotica:latest" > ${RDEP_FILE} +echo "" >> ${RDEP_FILE} +echo " stages:" >> ${RDEP_FILE} +echo " - rdepends" >> ${RDEP_FILE} +echo "" >> ${RDEP_FILE} +echo " dummy_job:" >> ${RDEP_FILE} +echo " stage: rdepends" >> ${RDEP_FILE} +echo " script:" >> ${RDEP_FILE} +echo " - echo \"Dummy job done.\"" >> ${RDEP_FILE} +echo "" >> ${RDEP_FILE} + +#Loop for each dependency +for ((i=1;i<${#RDEP[@]};i++)) +do + echo "Generating job for dependency ${i} ${RDEP[${i}]}..." + echo " ${RDEP[${i}]}:" >> ${RDEP_FILE} + echo " stage: rdepends" >> ${RDEP_FILE} + echo " variables:" >> ${RDEP_FILE} + echo " FROM_RDEPENDS_CI: \"true\"" >> ${RDEP_FILE} + generate_version_var_line ${RDEP[${i}]} + echo " trigger:" >> ${RDEP_FILE} + echo " strategy: depend" >> ${RDEP_FILE} + generate_project_line ${RDEP[${i}]} + generate_branch_line ${RDEP[${i}]} + generate_deps_line ${RDEP[${i}]} + echo "" >> ${RDEP_FILE} +done + +echo "Number of reverse dependencies $[ ${#RDEP[@]} - 1]" + +exit 0 diff --git a/scripts/update_repo.sh b/scripts/update_repo.sh new file mode 100755 index 0000000000000000000000000000000000000000..360bb1f4f1bfdf8e9cf5b4ae5ba6d797628fd746 --- /dev/null +++ b/scripts/update_repo.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -e + +ls ~/packages + +for ((i=1;i<10;i++)) +do + reprepro -Vb /var/www/html/packages includedeb $2 ~/packages/*$1*.deb && + { + echo "Updated ... ${i}" + reprepro -b /var/www/html/packages list $2 + rm -r ~/packages/*$1*.deb + exit 0 + } || { + echo "Try another time ... ${i}" + sleep 5 + } + +done + +exit 1 +