summaryrefslogtreecommitdiff
path: root/build-farm-build.el
diff options
context:
space:
mode:
authorAlex Kost <alezost@gmail.com>2018-07-18 23:40:22 +0300
committerAlex Kost <alezost@gmail.com>2018-07-27 12:14:24 +0300
commit63d9b64d5321f5a62806677be229512aacb01fed (patch)
treeb6c7e21c0c22098595eaff820bdeab73c147bd4c /build-farm-build.el
parentFactorize defining system types (diff)
downloademacs-build-farm-63d9b64d5321f5a62806677be229512aacb01fed.tar.gz
Distinguish nix and guix for opening build logs
* build-farm-url.el (build-farm-build-log-url): Add 'raw' keyword argument. * build-farm-build.el (build-farm-build-view-log): Open build log in emacs or browser, and use 'guix-build-log-mode' depending on the package manager of the build farm.
Diffstat (limited to 'build-farm-build.el')
-rw-r--r--build-farm-build.el21
1 files changed, 16 insertions, 5 deletions
diff --git a/build-farm-build.el b/build-farm-build.el
index 58ef7e3..39b0646 100644
--- a/build-farm-build.el
+++ b/build-farm-build.el
@@ -84,14 +84,25 @@ for the number of builds."
:job job
:system system)))
-(declare-function guix-build-log-find-file "guix-build-log" (file))
+(declare-function guix-build-log-mode "guix-build-log" t)
(defun build-farm-build-view-log (id &optional root-url)
"View build log of a build ID."
- (require 'guix-build-log)
- (guix-build-log-find-file
- (build-farm-build-log-url
- id :root-url (or root-url (build-farm-current-url)))))
+ (let ((pkg-manager (build-farm-url-package-manager root-url))
+ (url (or root-url (build-farm-current-url))))
+ (if (eq pkg-manager 'nix)
+ ;; Logs from hydra.nixos.org (which are actually kept on
+ ;; amazonaws) are stored in a compressed form that is not
+ ;; supported by Emacs yet: a raw log page returns
+ ;; "Content-Encoding: br" heading ("Brotli" compression). So
+ ;; instead of opening the log in Emacs (it would be displayed as
+ ;; an arbitrary binary data), open it in a browser.
+ (browse-url (build-farm-build-log-url id :root-url url))
+ (browse-url-emacs (build-farm-build-log-url
+ id :root-url url :raw t))
+ (when (and (eq pkg-manager 'guix)
+ (require 'guix-build-log nil t))
+ (guix-build-log-mode)))))
;;; Filters for processing raw entries