From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: guix refresh -l Date: Sat, 21 Nov 2015 16:38:21 +0100 Message-ID: <87a8q7bbwy.fsf_-_@gnu.org> References: <87h9koyfkr.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:33065) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a0AFD-00076p-LV for guix-devel@gnu.org; Sat, 21 Nov 2015 10:38:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a0AFB-0006f1-Pm for guix-devel@gnu.org; Sat, 21 Nov 2015 10:38:31 -0500 In-Reply-To: ("Jan \=\?utf-8\?B\?U3luw6HEjWVrIidz\?\= message of "Fri, 20 Nov 2015 14:44:09 +0100") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Jan =?utf-8?B?U3luw6HEjWVr?= Cc: guix-devel , Eric Bavier Jan Syn=C3=A1=C4=8Dek skribis: > I debugged this and the upstream patch > https://github.com/libarchive/libarchive/commit/b539b2e597b566fe3c4b49cb6= 1c9eef83e5e052d > fixes the problem. You will probably want to add it to the build process. To determine how to handle the mass rebuild, I wanted to see how many packages depend on libarchive. However, =E2=80=98guix refresh -l=E2=80=99 = would underestimate that number because it ignores implicit dependencies, and it turns out that libarchive is a dependency of CMake, which in turn is an implicit dependency of many things. So I thought (guix scripts graph) has the necessary infrastructure to manipulate these graphs, including using the =E2=80=9Cbag=E2=80=9D represen= tation, so why not use it. Hence, commit 8fb5837 adds a generic (guix graph), 923d846 adds a couple of helper procedures, and a51cbec rewrites =E2=80=98guix refresh -l=E2=80= =99 in terms of (guix graph). Before the change: --8<---------------cut here---------------start------------->8--- $ time guix refresh -l libarchive Building the following 11 packages would ensure 18 dependent packages are r= ebuilt: ath9k-htc-firmware-1.4.0 totem-3.16.1 rhythmbox-3.2.1 diffoscope-34= rdup-1.1.14 nestopia-ue-1.46.2 file-roller-3.10.0 gvfs-1.24.1 claws-mail-3= .13.0 zathura-cb-0.1.4 python-libarchive-c-2.1 real 0m13.443s user 0m14.556s sys 0m0.064s --8<---------------cut here---------------end--------------->8--- After: --8<---------------cut here---------------start------------->8--- $ time ./pre-inst-env guix refresh -l libarchive Building the following 279 packages would ensure 620 dependent packages are= rebuilt: python-libarchive-c-2.1 i3status-2.9 libwebsockets-1.3 vtk-6.1.0 = taskwarrior-2.4.3 synergy-1.7.4 guile-ssh-0.8.0 diffoscope-34 python-tlsh-3= .4.1 libpano13-2.9.19 slepc-complex-3.6.2 slepc-3.6.2 plink-1.07 apl-1.5 mu= mps-5.0.1 mumps-metis-5.0.1 gmsh-2.8.4 dealii-8.2.1 julia-0.3.10 c-reduce-2= .3.0 gcc-4.9.3 clang-3.5.0 unionfs-fuse-0.26 unionfs-fuse-static-0.26 pflas= k-0.2 avrdude-6.1 flashrom-0.9.7 oxygen-icons-4.14.2 r-servr-0.2 r-data.tab= le-1.9.6 r-htmlwidgets-0.5 r-dplyr-0.4.3 r-devtools-1.9.1 python2-rpy2-2.6.= 0 python-rpy2-2.6.0 rsem-1.2.20 r-qtl-1.37-11 slepc-complex-openmpi-3.6.2 m= umps-openmpi-5.0.1 superlu-dist-3.3 dealii-openmpi-8.2.1 bless-1p02 fftw-op= enmpi-3.3.4 guile-charting-0.2.0 accountsservice-0.6.40 zynaddsubfx-2.5.2 n= on-sequencer-1.9.5-1d9bd576 emacs-pdf-tools-0.60 mupdf-1.6 openimageio-1.5.= 18 ctl-1.5.2 slim-1.3.6 python2-scikit-image-0.11.3 raincat-1.1.1.3 guile-s= ly-0.1 mesa-utils-8.2.0 i3-wm-4.10.3 xnee-3.19 racket-6.2.1 sawfish-1.11 lx= appearance-0.6.1 lxtask-0.1.6 pcmanfm-1.2.3 lxrandr-0.3.0 sra-tools-2.5.4 h= tsjdk-1.129 ruby-atoulme-antwrap-0.7.5 pspp-0.8.5 arandr-0.1.8 wicd-1.7.3 g= ourmet-0.17.4 gajim-0.16.3 patchage-1.0.0 gpscorrelate-1.6.1.365f6e1b3f pin= entry-0.9.5 xournal-0.4.8 glade-3.8.4 lxterminal-0.2.0 gkrellm-2.3.5 geeqie= -1.1 geda-gaf-1.8.2 dvdisaster-0.72.6 azr3-1.2.3 calf-0.0.60 ir-1.3.2 gnubi= k-2.4.2 pcb-20140316 gst-plugins-ugly-1.6.1 guix-0.9.0.5c36edc skribilo-0.9= .2 a2ps-4.14 emacs-w3m-1.4.483+0.20120614 orpheus-1.6 ripperx-2.8.0 emms-4.= 0 abcde-2.7 mpd-mpc-0.27 mpdscribble-0.22 ncmpcpp-0.6.7 ncmpc-0.24 pidgin-o= tr-4.0.1 libstdc++-doc-5.2.0 libstdc++-doc-4.9.3 manaplus-1.5.10.24 wayland= -1.9.0 fish-2.2.0 openbox-3.5.2 guile-present-0.3.0 amule-2.3.1 gmtp-1.3.9 = tuxguitar-1.2 conkeror-1.0pre1.20150730 lablgtk-2.18.3 gnubg-1.02 inklingre= ader-0.8 gxmessage-3.4.3 pavucontrol-3.0 zathura-cb-0.1.4 zathura-ps-0.2.2 = zathura-pdf-poppler-0.2.5 zathura-djvu-0.2.4 vte-0.36.5 tilda-1.3.0 gnome-k= eyring-3.16.0 gsegrafix-1.0.6 d-feet-0.3.10 seahorse-3.16.0 gnome-terminal-= 3.16.0 gedit-3.18.1 gjs-1.44.0 xfce-4.12.0 devhelp-3.16.1 yelp-3.16.1 shotw= ell-0.22.0 hexchat-2.10.1 claws-mail-3.13.0 ibus-libpinyin-1.7.2 network-ma= nager-applet-1.0.6 file-roller-3.10.0 gnome-session-3.18.1.2 epiphany-3.16.= 3 nestopia-ue-1.46.2 gamine-1.4 sfxr-1.2.1 transmission-2.84 gnome-mines-3.= 16.0 aisleriot-3.16.1 gnucash-2.6.9 key-mon-1.17 eog-3.16.2 gnome-themes-st= andard-3.18.0 gnome-klotski-3.16.1 gnome-settings-daemon-3.16.0 gnumeric-1.= 12.17 xboard-4.8.0 fvwm-2.6.5 hop-2.4.0 patches-0.0.26d7dbc magit-svn-2.1.1= emacs-typo-1.1 emacs-flycheck-0.23 emacs-butler-0.2.4 emacs-auctex-11.88.6= emacs-debbugs-0.7 emacs-ob-ipython-20150704.8807064693 bigloo-really-sucks= -4.2a.20141017 guile-emacs-20150512.41120e0 emacs-no-x-toolkit-24.5 abiword= -2.8.6 emacs-foo-bar-patched-42 evince-3.18.1 rhythmbox-3.2.1 caribou-0.4.1= 9 totem-3.16.1 libchamplain-0.12.10 mutter-3.18.1 gimp-2.8.14 wesnoth-1.12.= 4 gvfs-1.24.1 python2-ipython-3.2.1 python-numexpr-2.4.4 python-h5py-2.4.0 = python-biopython-1.65 python-statsmodels-0.6.1 python-scikit-image-0.11.3 p= ython-scikit-learn-0.16.1 python-seaborn-0.5.1 idr-2.0.0 python-ipython-3.2= .1 python2-numexpr-2.4.4 macs-2.1.0.20140616 seqmagick-0.6.1 crossmap-0.2.1= rseqc-2.6.1 python2-statsmodels-0.6.1 miso-0.5.3 deeptools-1.5.11 python2-= warpedlmm-0.21 clipper-0.3.0 pbtranscript-tofu-2.2.3.8f5467fe6 grit-2.0.2 c= ouger-1.8.2 proof-general-4.2 enblend-enfuse-4.1.3 shogun-4.0.0 xsensors-0.= 70 wxmaxima-15.04.0 fastcap-2.0-18Sep92 simple-scan-3.17.4 hydra-20150407.4= c0e3e4 gerbv-2.6.1 dunst-1.1.0 evas-generic-loaders-1.16.0 terminology-0.9.= 1 rage-0.1.4 enlightenment-0.19.13 ath9k-htc-firmware-1.4.0 fcitx-4.2.8.6 s= oprano-2.9.4 python2-pyqt-4.11.4 polkit-qt-1-0.112.0 frescobaldi-2.18.1 kee= passx-2.0-beta2 hydrogen-0.9.5.1 phonon-4.8.3 attica-0.4.2 libdbusmenu-qt-0= .9.2 brdf-explorer-17 gpsbabel-1.5.0 librecad-2.0.6-rc alsa-modular-synth-2= .1.1 jalv-1.4.6 ardour-4.4 avidemux-2.6.10 scribus-1.5.0 python-pyqt-5.5 pu= mpa-0.9.1 owncloud-client-2.0.2 lxqt-common-0.9.1 lxqt-session-0.9.0 tiled-= 0.13.1 bitcoin-core-0.11.0 calibre-2.41.0 qsynth-0.4.0 bind-utils-9.10.2-P2= mariadb-10.0.20 conky-1.10.0 powertabeditor-2.0.0-alpha8 libreoffice-5.0.0= .2 evolution-data-server-3.18.2 flexbar-2.5 express-1.5.1 solfege-3.22.2 wi= ne-1.7.52 mplayer-1.2 emotion-generic-players-1.16.0 cmus-2.7.1 mpd-0.19.10= strigi-0.7.8 gst-libav-1.6.1 guile-gnunet-0.0.383eac2 audacity-2.1.0 synfi= gstudio-1.0.2 retroarch-1.2.2 minetest-0.4.13 mars-0.7.5.1.c855d04409 love-= 0.9.2 mpv-0.13.0 emulation-station-2.0.1 guitarix-0.34.0 alta-minimal-0.0 a= lta-clang-0.0 dfc-3.0.4 alta-0.0 alta-gcc5-0.0 alta-gcc4.8-0.0 alta-gcc4.7-= 0.0 libwebsockets-1.3.dbg rdup-1.1.14 real 0m0.979s user 0m1.152s sys 0m0.016s --8<---------------cut here---------------end--------------->8--- Eric, I would welcome your feedback on this. I would think the graph helpers in (gnu packages) that were used by =E2=80=98guix refresh -l=E2=80= =99 can now be removed; WDYT? There=E2=80=99s still room for improvement: =E2=80=98guix refresh -l=E2=80= =99 could look at the graph that includes origin objects and count the number of dependents of the origin, rather than the number of dependents of one package that uses it. (Well, that=E2=80=99s the information we=E2=80=99re after when we= want to upgrade, but when we just want to change the package, that=E2=80=99s not wh= at we want.) Cheers, Ludo=E2=80=99.