Sistemas de contrucción de paquetes (Parte 2)

  |   Código fuente

El siguiente paso fue descomprimir de manera recursiva los paquetes, para luego poder inspeccionar en ellos. Lo hice con una herramienta poco conocida dtrx. Lo interesante de este script de python es que puede realizar extracciones recursivas y de acuerdo a la extensión del archivo utiliza el software de extracción necesario. Esperemos que pronto esté en los repositorios de Fedora (ver la solicitud en Red Hat Bugzilla).

Una vez descompridos todos los paquetes, se corrió el siguiente script

#! /bin/bash
#Very simple script to get Build System Statistc
dir=$1

rm -f /tmp/ant /tmp/cmake /tmp/autotools /tmp/makefile /tmp/autoconf /tmp/autoconf /tmp/autotools_procedure

for i in $(find $dir -maxdepth 1  -mindepth 1 -type d)
do
#autotools
ls -R1 $i  | grep  -q -P -m1 “^configure\.(ac|in)$”

if [[ $? -eq 0 ]];then
ls -R1 $i | grep -P -q -m1 “^Makefile\.(am|in)$”
if [[ $? -eq 0 ]];then
echo “${i##*/}” >> /tmp/autotools
cant_autotools=$(($cant_autotools+1))
else
echo “${i##*/}” >> /tmp/autoconf
cant_autoconf=$(($cant_autoconf+1))
fi

fi
#cmake
ls -R1 $i | grep -q -m1 CMakeLists.txt

if [[ $? -eq 0 ]];then
cant_cmake=$(($cant_cmake+1))
echo “${i##*/}” >> /tmp/cmake
fi

#Plain makefile
ls -R1 $i | grep  -q -P -m1 “^configure\.(ac|in)$”

if [[ $? -ne 0 ]];then
ls -R1 $i | grep -q -P -m1  “^(Makefile\.(am|in)|CMakeLists.txt)$”
if  [[ $? -ne 0 ]];then
ls -R1 $i | grep -q -P -m1 “^Makefile$”
if [[ $? -eq 0 ]];then
cant_makefile=$((cant_makefile+1))
echo “${i##*/}” >> /tmp/makefile
fi
fi
fi

find $i -name “*.spec” | xargs  pcregrep  -M  “%build(.*\n)*(./|%)configure.*\n(.*\n)*make(.*\n)*%install”
if [[ $? -eq 0 ]];then
echo ${i##*/} con autotools procedure
cant_autotools_build_section=$(($cant_autotools_build_section+1))
echo “${i##*/}” >> /tmp/autotools_procedure
fi

done

echo -e “$cant_autotools with autotools:\n\n$(cat /tmp/autotools)\n\n”
echo -e “$cant_cmake with cmake:\n\n$(cat /tmp/cmake)\n\n”
echo -e “$cant_makefile with makefile:\n\n$(cat /tmp/makefile)\n\n”
echo -e “$cant_autoconf with only  autoconf:\n\n$(cat /tmp/autoconf)\n\n”
echo -e “$cant_autotools_build_section with only autotools_build_section\n\n$(cat /tmp/autotools_procedure)”

En la siguiente parte veremos los resultados….

Comments powered by Disqus