unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: ludo@gnu.org (Ludovic Courtès)
To: "Jan Synáček" <jan.synacek@gmail.com>
Cc: guix-devel <guix-devel@gnu.org>, Eric Bavier <bavier@member.fsf.org>
Subject: guix refresh -l
Date: Sat, 21 Nov 2015 16:38:21 +0100	[thread overview]
Message-ID: <87a8q7bbwy.fsf_-_@gnu.org> (raw)
In-Reply-To: <CACA+5f30Ro+uK2kn5iqE_B3pJmwB5ra1W02U-rXnG6HszyWbbw@mail.gmail.com> ("Jan \=\?utf-8\?B\?U3luw6HEjWVrIidz\?\= message of "Fri, 20 Nov 2015 14:44:09 +0100")

Jan Synáček <jan.synacek@gmail.com> skribis:

> I debugged this and the upstream patch
> https://github.com/libarchive/libarchive/commit/b539b2e597b566fe3c4b49cb61c9eef83e5e052d
> 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, ‘guix refresh -l’ 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 “bag” representation, so
why not use it.

Hence, commit 8fb5837 adds a generic (guix graph), 923d846 adds a couple
of helper procedures, and a51cbec rewrites ‘guix refresh -l’ 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 rebuilt: 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 mumps-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 pflask-0.2 avrdude-6.1 flashrom-0.9.7 oxygen-icons-4.14.2 r-servr-0.2 r-data.table-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 mumps-openmpi-5.0.1 superlu-dist-3.3 dealii-openmpi-8.2.1 bless-1p02 fftw-openmpi-3.3.4 guile-charting-0.2.0 accountsservice-0.6.40 zynaddsubfx-2.5.2 non-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-sly-0.1 mesa-utils-8.2.0 i3-wm-4.10.3 xnee-3.19 racket-6.2.1 sawfish-1.11 lxappearance-0.6.1 lxtask-0.1.6 pcmanfm-1.2.3 lxrandr-0.3.0 sra-tools-2.5.4 htsjdk-1.129 ruby-atoulme-antwrap-0.7.5 pspp-0.8.5 arandr-0.1.8 wicd-1.7.3 gourmet-0.17.4 gajim-0.16.3 patchage-1.0.0 gpscorrelate-1.6.1.365f6e1b3f pinentry-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 gnubik-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-otr-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 inklingreader-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-keyring-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 shotwell-0.22.0 hexchat-2.10.1 claws-mail-3.13.0 ibus-libpinyin-1.7.2 network-manager-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-standard-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.19 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 python-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 couger-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.4c0e3e4 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 soprano-2.9.4 python2-pyqt-4.11.4 polkit-qt-1-0.112.0 frescobaldi-2.18.1 keepassx-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 pumpa-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 wine-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 synfigstudio-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 alta-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 ‘guix refresh -l’ can now be
removed; WDYT?

There’s still room for improvement: ‘guix refresh -l’ 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’s the information we’re after when we want to
upgrade, but when we just want to change the package, that’s not what we
want.)

Cheers,
Ludo’.

  parent reply	other threads:[~2015-11-21 15:38 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-13 11:33 Test failure when building libarchive-3.1.2 Jan Synáček
2015-11-14 11:40 ` Ludovic Courtès
2015-11-14 12:47   ` Jan Synáček
2015-11-20 13:51     ` Ludovic Courtès
2015-11-20 14:10       ` Jan Synáček
2015-11-20 22:47         ` Ludovic Courtès
2015-11-21  7:58           ` Jan Synáček
2015-11-21 10:17             ` Ludovic Courtès
2015-11-20 13:44   ` Jan Synáček
2015-11-20 13:48     ` Jan Synáček
2015-11-20 22:45       ` Ludovic Courtès
2015-11-21 15:38     ` Ludovic Courtès [this message]
2015-11-21 16:06       ` guix refresh -l Mathieu Lirzin
2015-11-21 20:31       ` Jan Synáček
2015-12-09 22:55     ` Test failure when building libarchive-3.1.2 Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87a8q7bbwy.fsf_-_@gnu.org \
    --to=ludo@gnu.org \
    --cc=bavier@member.fsf.org \
    --cc=guix-devel@gnu.org \
    --cc=jan.synacek@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).