Sistemas de contrucción de paquetes (Parte 2)

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/autotools_procedure
for i in (find dir -maxdepth 1 -mindepth 1 -type d)
do
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 2>/dev/null
cant_autotools=(($cant_autotools+1))
else
echo "{i##
/}" >> /tmp/autoconf 2>/dev/null
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 2>/dev/null
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 2> /dev/null
fi
fi
fi
find i -name "*.spec" | xargs pcregrep -q -M "%build(.*\n)*(./|%)configure.*\n(.*\n)*make(.*\n)*%install"
if [[ ? -eq 0 ]];then
cant_autotools_build_section=(($cant_autotools_build_section+1))
echo "{i##*/}" >> /tmp/autotools_procedure
fi
done
echo "###Resultados###"
[ -f /tmp/autotools ] && echo -e "There are cant_autotools with autotools:\n\n(sort /tmp/autotools)\n\n"
[ -f /tmp/cmake ] && echo -e "cant_cmake with cmake:\n\n(sort /tmp/cmake)\n\n"
[ -f /tmp/makefile ] && echo -e "cant_makefile with makefile:\n\n(sort /tmp/makefile)\n\n"
[ -f /tmp/autoconf ] && echo -e "cant_autoconf with only autoconf:\n\n(sort /tmp/autoconf)\n\n"
[ -f /tmp/autotools_procedure ] && echo -e "cant_autotools_build_section with only autotools_build_section\n\n(sort /tmp/autotools_procedure)"


En la siguiente parte veremos los resultados….

Comentarios

Comments powered by Disqus