On Monday, 29 June 2020 13.46.02 WEST Iñaki Ucar wrote: > But the mass rebuild process is very different, because releng doesn't > follow any particular order (they don't need to, because nothing > really changed). > > The question is whether there is any tool to resolve dependencies and > generate a list of builds, as I do with the CRAN database, for an > arbitrary list of RPMs. That would be perfect. In theory, this should > be possible with dnf, but when I tried, I failed (or my script would > theoretically work, but it would take ages to complete). I also took a > look at releng's repos on Pagure, but I didn't find any tool to do > this either. > > We should bring this to devel, maybe ask Miro and other Python folks > who may have The Method(TM), as they are rebuilding stuff on a daily > basis.
I think that I meant the way that the python packages are rebuilt for each new python version. I should have said Python mass rebuild. I took your work as the basis, together with Tom's help and I used dnf to get a list of R packages (assuming that their name starts with R- ). The advantage of this approach is that it works for CRAN and Bioconductor. $ dnf list available --disablerepo=\* --enablerepo=rawhide-source R-* | tail - n +3 | awk -e '{print $1};' | sed -e 's/\.src$//' > r-packages.txt That gave the list of the (source) packages to rebuild. In order to get the list of dependencies I used a similar strategy: $ (for p in $(cat r-packages.txt); do echo -n $p, ; dnf -q repoquery -- disablerepo=\* --enablerepo=rawhide-source --requires $p | sed ':a;N;$!ba;s/ \n/,/g'; done) > r-packages-dependencies.csv The resulting file is a csv file with the first column as the package and the remaining columns as the dependencies. Now the idea was to process this file using a python script to create a direct graph of dependencies (using networkx). In the process non R packages are removed and some dependencies are cleaned (e.g. -devel packages direct to the source package). The advantage of this is that it allows to identify cycles. My only surprise in this process was to find that several packages require R- rpm-macros. That causes some dependency cycles because R-rpm-macros also requires R-rprintf,R-devel,R-knitr,R-stringi,R-testthat. Since R-rpm-macros is used for Fedora and epel 8 I suggest to remove the dependency. Do you agree? -- José Abílio _______________________________________________ R-SIG-Fedora mailing list R-SIG-Fedora@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-fedora