diff options
61 files changed, 1588 insertions, 6496 deletions
diff --git a/Makefile.am b/Makefile.am index 595a7c02e9..8b8f4ccdcd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1322,7 +1322,7 @@ download-po: .PHONY: download-po # Regenerate 'CODEOWNERS' when 'teams.scm' is modified so we don't forget. -CODEOWNERS: etc/teams.scm +CODEOWNERS: etc/teams.scm scripts/guix ./etc/teams.scm codeowners > "$@.tmp" mv "$@.tmp" "$@" diff --git a/build-aux/update-guix-package.scm b/build-aux/update-guix-package.scm index 9fe6c201cc..b86fbeec87 100644 --- a/build-aux/update-guix-package.scm +++ b/build-aux/update-guix-package.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2020, 2025 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -125,8 +125,8 @@ COMMIT. PROC receives the temporary directory file name as an argument." (lambda () (invoke "git" "worktree" "remove" "--force" tmp-directory)))))) -(define %savannah-guix-git-repo-push-url-regexp - "git.(savannah|sv).gnu.org:?/srv/git/guix.git \\(push\\)") +(define %guix-git-repo-push-url-regexp + "(git.guix.gnu.org|codeberg.org/guix)/guix.git \\(push\\)") (define-syntax-rule (with-input-pipe-to-string prog arg ...) (let* ((input-pipe (open-pipe* OPEN_READ prog arg ...)) @@ -138,12 +138,12 @@ COMMIT. PROC receives the temporary directory file name as an argument." (string-trim-both output))) (define (find-origin-remote) - "Find the name of the git remote with the Savannah Guix git repo URL." + "Find the name of the git remote with the Guix git repo URL." (and-let* ((remotes (string-split (with-input-pipe-to-string "git" "remote" "-v") #\newline)) (origin-entry (find (cut string-match - %savannah-guix-git-repo-push-url-regexp + %guix-git-repo-push-url-regexp <>) remotes))) (first (string-split origin-entry #\tab)))) diff --git a/doc/contributing.texi b/doc/contributing.texi index 76bc1945f5..217db850ac 100644 --- a/doc/contributing.texi +++ b/doc/contributing.texi @@ -1861,13 +1861,23 @@ keyword parameters for procedures that take more than four parameters. Development is done using the Git distributed version control system. Thus, access to the repository is not strictly necessary. We welcome -contributions in the form of patches as produced by @code{git -format-patch} sent to the @email{guix-patches@@gnu.org} mailing list -(@pxref{Submitting patches to a project,,, git, Git User Manual}). -Contributors are encouraged to take a moment to set some Git repository -options (@pxref{Configuring Git}) first, which can improve the -readability of patches. Seasoned Guix developers may also want to look -at the section on commit access (@pxref{Commit Access}). +contributions in one of the following forms: + +@itemize +@item +@cindex pull request, for contributions +As a @dfn{pull request} (PR) at +@url{https://codeberg.org/guix/guix/pulls/}. This is now the preferred +form. + +@item +Until December 31st, 2025@footnote{This date is the result of a decision +made collectively in +@uref{https://codeberg.org/guix/guix-consensus-documents/src/branch/main/002-codeberg.md, +Guix Consensus Document 002} in May 2025.}, you may also send patches as +produced by @code{git format-patch} to the @email{guix-patches@@gnu.org} +mailing list (@pxref{Submitting patches to a project,,, git, Git User +Manual}). This mailing list is backed by a Debbugs instance, which allows us to keep track of submissions (@pxref{Tracking Bugs and Changes}). @@ -1875,6 +1885,12 @@ Each message sent to that mailing list gets a new tracking number assigned; people can then follow up on the submission by sending email to @code{@var{ISSUE_NUMBER}@@debbugs.gnu.org}, where @var{ISSUE_NUMBER} is the tracking number (@pxref{Sending a Patch Series}). +@end itemize + +Either way, contributors are encouraged to take a moment to set some Git +repository options (@pxref{Configuring Git}) first, which can improve +the readability of patches. Seasoned Guix developers may also want to +look at the section on commit access (@pxref{Commit Access}). Please write commit logs in the ChangeLog format (@pxref{Change Logs,,, standards, GNU Coding Standards}); you can check the commit history for @@ -2093,6 +2109,13 @@ can place it under the @file{.git/hooks/commit-msg.d/} directory. @cindex @code{git send-email} @cindex @code{git format-patch} +@quotation Warning +This section is about contributing code by sending patches by email. +This option is supported until December 31st, 2025, but we recommend +getting familiar with the @dfn{pull request} workflow, which will become +the norm after that date. @xref{Submitting Patches}, for more info. +@end quotation + @unnumberedsubsubsec Single Patches @anchor{Single Patches} The @command{git send-email} command is the best way to send both single @@ -2261,25 +2284,33 @@ patch submissions and topic branches. @cindex patch submissions, tracking @cindex issue tracking @cindex Debbugs, issue tracking system -Bug reports and patch submissions are currently tracked using the -Debbugs instance at @uref{https://bugs.gnu.org}. Bug reports are filed -against the @code{guix} ``package'' (in Debbugs parlance), by sending -email to @email{bug-guix@@gnu.org}, while patch submissions are filed -against the @code{guix-patches} package by sending email to -@email{guix-patches@@gnu.org} (@pxref{Submitting Patches}). +But reports (@dfn{issues}) and patch submissions (@dfn{pull requests}) +are currently tracked at the @uref{https://codeberg.org/guix/guix, +project's home at Codeberg}. + +Before May 25th, 2025, bug reports and patches were exclusively tracked +using the Debbugs instance at @uref{https://bugs.gnu.org}; it may still +be used for these purposes until December 31st, 2025, after which +Codeberg will become the sole option to report new bugs and propose new +changes@footnote{Check out +@uref{https://codeberg.org/guix/guix-consensus-documents/src/branch/main/002-codeberg.md, +Guix Consensus Document 002} for details on this decision.}. With +Debbugs, bug reports are sent by email to @email{bug-guix@@gnu.org} and +patches are sent to @email{guix-patches@@gnu.org} (@pxref{Submitting +Patches}). @node Managing Patches and Branches @subsection Managing Patches and Branches @cindex branching strategy @cindex rebuild scheduling strategy -Changes should be posted to @email{guix-patches@@gnu.org}. This mailing -list fills the patch-tracking database (@pxref{The Issue Tracker}). It -also allows patches to be picked up and tested by the quality assurance -tooling; the result of that testing eventually shows up on the dashboard +@c TODO: Update when qa.guix is hooked up to Codeberg. +Submitted patches are picked up and tested by the quality assurance +service; the result of that testing eventually shows up on the dashboard at @indicateurl{https://qa.guix.gnu.org/issue/@var{ISSUE_NUMBER}}, where -@var{ISSUE_NUMBER} is the number assigned by the issue tracker. Leave -time for a review, without committing anything. +@var{ISSUE_NUMBER} is the number assigned by the issue tracker, +currently Debbugs (work is in progress to support Codeberg pull +requests). Leave time for a review, without committing anything. As an exception, some changes considered ``trivial'' or ``obvious'' may be pushed directly to the @code{master} branch. This includes changes @@ -2376,6 +2407,15 @@ only then should the merge requests be created, as documented earlier. @node Debbugs User Interfaces @subsection Debbugs User Interfaces +@quotation Warning +This section is about bug reports and patches sent by email to +@uref{https://issues.guix.gnu.org, Debbugs}. This option is supported +until December 31st, 2025, after which +@uref{https://codeberg.org/guix/guix, Codeberg} will be the only +interface for submitting bug reports and changes. @xref{Submitting +Patches}, for more info. +@end quotation + @subsubsection Web interface @cindex mumi, web interface for issues @@ -2733,13 +2773,30 @@ $ guix shell -D guix [env]$ git send-email --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org -2 @end example -To generate a @file{CODEOWNERS} file, which Forgejo uses to determine -which team or person should review changes to a given set of files, run: +@cindex teams, on Codeberg +To generate a @file{CODEOWNERS} file, which Forgejo---the software +behind Codeberg---uses to determine which team or person should review +changes to a given set of files, run: @example ./etc/teams.scm codeowners > CODEOWNERS @end example +Teams defined in @file{etc/teams.scm} are reflected +@uref{https://codeberg.org/guix/guix, on Codeberg}; the ``Owners'' team +on Codeberg, whose members have administration privileges over +@uref{https://codeberg.org/guix, the entire ``organization''}, is the +only one missing from this file. To synchronize team changes with +Codeberg, a member of the ``Owners'' team can run: + +@example +./etc/teams.scm sync-codeberg-teams @var{token} +@end example + +@noindent +... where @var{token} is a token created on the Codeberg interface +granting access to the relevant settings. + @node Making Decisions @section Making Decisions @@ -3068,11 +3125,15 @@ In other words, build consensus with everyone involved (@pxref{Making Decisions}). @end enumerate +When you deem the proposed change adequate and ready for inclusion +in Guix, you can explicitly say so for pull requests on Codeberg, for +example by selecting ``Approve changes'' in the ``Finish review'' dialog +of the web interface. + @cindex LGTM, Looks Good To Me @cindex review tags @cindex Reviewed-by, git trailer -When you deem the proposed change adequate and ready for inclusion -within Guix, the following well understood/codified +The following well understood/codified @samp{Reviewed-by:@tie{}Your@tie{}Name@tie{}<your-email@@example.com>} @footnote{The @samp{Reviewed-by} Git trailer is used by other projects such as Linux, and is understood by third-party tools such as the diff --git a/etc/git/pre-push b/etc/git/pre-push index c3887ec022..998df45e6d 100755 --- a/etc/git/pre-push +++ b/etc/git/pre-push @@ -45,8 +45,12 @@ do ;; esac - # Only use the hook when pushing to upstream. + # Only perform checks when pushing to upstream. case "$2" in + *savannah.gnu.org*) + printf "ERROR: The repositories on Savannah are read-only mirrors of our repos at <https://codeberg.org/guix>.\n" 1>&2 + exit 1 + ;; *.gnu.org*) perform_checks ;; diff --git a/etc/teams.scm b/etc/teams.scm index 3e497bc2ce..cddef3517f 100755 --- a/etc/teams.scm +++ b/etc/teams.scm @@ -1214,6 +1214,11 @@ the \"texlive\" importer." "trev@trevdev.ca") lisp emacs) +(define-member (person "Konrad Hinsen" + "guix@khinsen.fastmail.net" + "khinsen") + lisp) + (define (find-team name) (or (hash-ref %teams (string->symbol name)) diff --git a/gnu/home/services/mpv.scm b/gnu/home/services/mpv.scm index 50d3f06c46..54c6b86680 100644 --- a/gnu/home/services/mpv.scm +++ b/gnu/home/services/mpv.scm @@ -227,7 +227,7 @@ (define (serialize-mpv/list-of-file field-name lst) #~(string-append #$(symbol->string field-name) "=" - (string-join '#$lst ",") + (string-join '#$lst ":") "\n")) (define (mpv/list-of-file? lst) (every mpv/file? lst)) diff --git a/gnu/local.mk b/gnu/local.mk index 352ded3472..a4bb135b7e 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1077,6 +1077,7 @@ dist_patch_DATA = \ %D%/packages/patches/calibre-no-updates-dialog.patch \ %D%/packages/patches/calibre-remove-test-sqlite.patch \ %D%/packages/patches/calibre-remove-test-unrar.patch \ + %D%/packages/patches/calibre-remove-test-import-modules.patch \ %D%/packages/patches/calls-disable-application-test.patch \ %D%/packages/patches/calls-disable-sip-test.patch \ %D%/packages/patches/camlboot-dynamically-allocate-stack-signal.patch \ @@ -1303,7 +1304,6 @@ dist_patch_DATA = \ %D%/packages/patches/firebird-riscv64-support-pt1.patch \ %D%/packages/patches/firebird-riscv64-support-pt2.patch \ %D%/packages/patches/flann-cmake-3.11.patch \ - %D%/packages/patches/flatpak-fix-path.patch \ %D%/packages/patches/flatpak-fix-fonts-icons.patch \ %D%/packages/patches/flatpak-fix-icon-validation.patch \ %D%/packages/patches/flatpak-unset-gdk-pixbuf-for-sandbox.patch \ @@ -2254,7 +2254,6 @@ dist_patch_DATA = \ %D%/packages/patches/sbcl-lack-fix-tests.patch \ %D%/packages/patches/sbcl-png-fix-sbcl-compatibility.patch \ %D%/packages/patches/sbcl-s-sysdeps-bt2.patch \ - %D%/packages/patches/scalapack-gcc-10-compilation.patch \ %D%/packages/patches/scheme48-tests.patch \ %D%/packages/patches/scilab-better-compiler-detection.patch \ %D%/packages/patches/scilab-tbx_build_help.patch \ diff --git a/gnu/machine/hetzner.scm b/gnu/machine/hetzner.scm index ddac58dda0..93b36c87a9 100644 --- a/gnu/machine/hetzner.scm +++ b/gnu/machine/hetzner.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2024 Roman Scherer <roman@burningswell.com> +;;; Copyright © 2025 Owen T. Heisler <writer@owenh.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -117,7 +118,7 @@ (initrd-modules (cons* "sd_mod" "virtio_scsi" %base-initrd-modules)) (services - (cons* (service dhcp-client-service-type) + (cons* (service dhcpcd-service-type) (service openssh-service-type (openssh-configuration (openssh openssh-sans-x) @@ -393,7 +394,7 @@ Available locations:~%~%~a~%~%For more details, see: ~a") (type ,root-fs-type)) %base-file-systems)))) (services - (cons* (service dhcp-client-service-type) + (cons* (service dhcpcd-service-type) (service openssh-service-type (openssh-configuration (openssh openssh-sans-x) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 2486611a28..194ce4b0b0 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -2772,43 +2772,6 @@ authentication server.") ;; Same license as wpa_supplicant. (license license:bsd-3))) -(define-public wakelan - (package - (name "wakelan") - (version "1.1") - (source (origin - (method url-fetch) - (uri (string-append - "ftp://ftp.gwdg.de/pub/linux/metalab/system/network/misc/wakelan-" - version ".tar.gz")) - (sha256 - (base32 - "0vydqpf44146ir6k87gmqaq6xy66xhc1gkr3nsd7jj3nhy7ypx9x")))) - (build-system gnu-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (mkdir-p (string-append out "/bin")) - (mkdir-p (string-append out "/share/man/man1")) - - ;; It's an old configure script that doesn't understand - ;; the extra options we pass. - (setenv "CONFIG_SHELL" (which "bash")) - (invoke "./configure" - (string-append "--prefix=" out) - (string-append "--mandir=" out - "/share/man")))))) - #:tests? #f)) - (home-page "https://www.kernel.org") ; really, no home page - (synopsis "Send a wake-on-LAN packet") - (description - "WakeLan broadcasts a properly formatted UDP packet across the local area -network, which causes enabled computers to power on.") - (license license:gpl2+))) - (define-public dmidecode (package (name "dmidecode") @@ -6840,6 +6803,44 @@ of ps, top and pstree.") (home-page "https://github.com/walles/px") (license license:expat))) +(define-public wakelan + (package + (name "wakelan") + (version "1.1") + (source (origin + (method url-fetch) + (uri (string-append + "ftp://ftp.gwdg.de/pub/linux/metalab/system/network/misc/wakelan-" + version ".tar.gz")) + (sha256 + (base32 + "0vydqpf44146ir6k87gmqaq6xy66xhc1gkr3nsd7jj3nhy7ypx9x")))) + (build-system gnu-build-system) + (arguments + (list + #:tests? #f + #:phases + #~(modify-phases %standard-phases + (replace 'configure + (lambda* (#:key inputs #:allow-other-keys) + (mkdir-p (string-append #$output "/bin")) + (mkdir-p (string-append #$output "/share/man/man1")) + + ;; It's an old configure script that doesn't understand + ;; the extra options we pass. + (setenv "CONFIG_SHELL" + (search-input-file %build-inputs "bin/bash")) + (invoke "./configure" + (string-append "--prefix=" #$output) + (string-append "--mandir=" #$output + "/share/man"))))))) + (home-page "https://www.kernel.org") ; really, no home page + (synopsis "Send a wake-on-LAN packet") + (description + "WakeLan broadcasts a properly formatted UDP packet across the local area +network, which causes enabled computers to power on.") + (license license:gpl2+))) + (define-public xfel (package (name "xfel") diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 9c272a3881..b23785279e 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2022, 2023, 2024 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2022, 2023, 2024, 2025 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013, 2015, 2017, 2018, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016-2025 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2014, 2018 Mark H Weaver <mhw@netris.org> @@ -337,7 +337,7 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.") (define-public paritwine (package (name "paritwine") - (version "0.2.1") + (version "0.2.2") (source (origin (method url-fetch) (uri (string-append @@ -346,7 +346,7 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.") ".tar.gz")) (sha256 (base32 - "0xj948ngp9k2l1krwfcpzb4rxrvm2gy3r8w020lniz5hwbslagl7")))) + "0hkn18qkg4ssg1rg6k95ff7yvywacvhwqq9gj06wix4xb7nw4yzz")))) (build-system gnu-build-system) (propagated-inputs (list pari-gp gmp @@ -485,14 +485,14 @@ or text interfaces) or as a C++ library.") (define-public flint (package (name "flint") - (version "3.1.3") + (version "3.2.1") (source (origin (method url-fetch) (uri (string-append "https://flintlib.org/download/flint-" version ".tar.gz")) (sha256 - (base32 "1nmd7jb2hqg3sqv0dbqa5glpn24lli3gh9ghxzmkpsh7pgnfan9j")))) + (base32 "0gyjbkhwrmx2vgb1gailnmmzacl4aikzgi70dzmpf8lpfxny8yya")))) (build-system gnu-build-system) (inputs (list ntl)) @@ -527,7 +527,7 @@ fast arithmetic.") (define-public python-flint (package (name "python-flint") - (version "0.5.0") + (version "0.7.1") (source (origin (method git-fetch) (uri (git-reference @@ -536,7 +536,7 @@ fast arithmetic.") (file-name (git-file-name name version)) (sha256 (base32 - "10370kqik6q6vdqrqv3gbznsyaxbgqb3rbrff4alpw0sqr5s07c7")))) + "09nsys2cajxsfh2c13nf98a2kwnm0msmab9f9zcjpkndj4ir453a")))) (build-system python-build-system) (native-inputs (list python-cython-3)) diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm index 0c6d6d668b..572ad705d5 100644 --- a/gnu/packages/assembly.scm +++ b/gnu/packages/assembly.scm @@ -39,6 +39,7 @@ #:use-module ((guix build utils) #:select (parallel-job-count)) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix svn-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix gexp) @@ -64,6 +65,41 @@ #:use-module ((guix utils) #:select (%current-system cc-for-target))) +(define-public acme + (package + (name "acme") + (version "0.97") + (source + (origin + (method svn-fetch) + (uri (svn-reference + (url "https://svn.code.sf.net/p/acme-crossass/code-0/trunk/") + (revision 274))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1d0nh06vxxfgb6ki8c8l3j2735kdppkd1c0s3mv03pv58wivwngp")) + (modules '((guix build utils))) + ;; Public domain and no source code. + (snippet '(delete-file-recursively "ACME_Lib")))) + (build-system gnu-build-system) + (arguments + (list #:tests? #f ;Released version has no tests. + #:make-flags + #~(list (string-append "BINDIR=" #$output "/bin") + "-C" "src") + #:phases + #~(modify-phases %standard-phases + ;; No configure script. + (delete 'configure)))) + (home-page "https://acme-crossass.sourceforge.io/") + (synopsis "Cross assembler for the 6502, 6510, 65c02 and 65816 processors") + (description + "ACME is a 6502, 6510, 65c02 and 65816 cross assembler that supports +global/local/anonymous labels, offset assembly, conditional assembly and looping +assembly. It can include other source files as well as binaries while +assembling. Calculations can be done in integer or float mode.") + (license license:gpl2+))) + (define-public asl (let ((build "267")) (package diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm index ea2910adea..2ef45ee493 100644 --- a/gnu/packages/chez.scm +++ b/gnu/packages/chez.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2020 Brendan Tildesley <mail@brendan.scot> -;;; Copyright © 2021-2024 Philip McGrath <philip@philipmcgrath.com> +;;; Copyright © 2021-2025 Philip McGrath <philip@philipmcgrath.com> ;;; Copyright © 2024 Ashish SHUKLA <ashish.is@lostca.se> ;;; ;;; This file is part of GNU Guix. @@ -298,7 +298,7 @@ will name the threaded machine type unless THREADS? is provided as #f." (name "chez-scheme-for-racket") ;; The version should match `(scheme-version #t)`. ;; See s/cmacros.ss c. line 360. - (version "10.1.0-pre-release.3") + (version "10.2.0-pre-release.2") (source #f) (build-system gnu-build-system) (inputs `(,@(if (nix-system->native-chez-machine-type) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 3d1237a490..9b69f78637 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -46,7 +46,9 @@ #:use-module (gnu packages bash) #:use-module (gnu packages compression) #:use-module (gnu packages curl) + #:use-module (gnu packages cmake) #:use-module (gnu packages databases) + #:use-module (gnu packages digest) #:use-module (gnu packages file) #:use-module (gnu packages fonts) #:use-module (gnu packages fontutils) @@ -76,6 +78,7 @@ #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) + #:use-module (gnu packages video) #:use-module (gnu packages serialization) #:use-module (gnu packages speech) #:use-module (gnu packages sqlite) @@ -84,6 +87,7 @@ #:use-module (gnu packages web) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) + #:use-module (gnu packages xdisorg) #:use-module (gnu packages wxwidgets)) (define-public chmlib @@ -127,16 +131,14 @@ with Microsoft Compiled HTML (CHM) files") (define-public calibre (package (name "calibre") - (version "5.44.0") + (version "8.4.0") (source (origin (method url-fetch) - (uri (string-append "http://download.calibre-ebook.com/" - version "/calibre-" - version ".tar.xz")) + (uri (string-append "http://download.calibre-ebook.com/" version + "/calibre-" version ".tar.xz")) (sha256 - (base32 - "1v48mzmr9z9rs6s7r8fgaqs6vnxnin1hyzwmwmal78inzpma7ykg")) + (base32 "1s9m80nakclxvsw0lax9bak23qipnia74xpy9sv061jvidqb3rz6")) (modules '((guix build utils))) (snippet '(begin @@ -151,17 +153,23 @@ with Microsoft Compiled HTML (CHM) files") (delete-file "resources/calibre-portable.sh"))) (patches (search-patches "calibre-no-updates-dialog.patch" "calibre-remove-test-sqlite.patch" ; TODO: fix test. - "calibre-remove-test-unrar.patch")))) + "calibre-remove-test-unrar.patch" + "calibre-remove-test-import-modules.patch" ; TODO: fix test + )))) (build-system python-build-system) (native-inputs (list bash-minimal pkg-config python-flake8 python-pyqt-builder - qtbase-5 ; for qmake - xdg-utils)) + qtbase ; for qmake + xdg-utils + cmake)) (inputs - (list bash-minimal + (list libxkbcommon + ffmpeg + uchardet + bash-minimal fontconfig font-liberation glib @@ -176,7 +184,7 @@ with Microsoft Compiled HTML (CHM) files") libusb openssl optipng - podofo-0.9 + podofo poppler python-apsw python-beautifulsoup4 @@ -186,6 +194,7 @@ with Microsoft Compiled HTML (CHM) files") python-dateutil python-dnspython-1.16 python-feedparser + python-fonttools python-html2text python-html5-parser python-html5lib @@ -203,12 +212,14 @@ with Microsoft Compiled HTML (CHM) files") python-pychm python-pycryptodome python-pygments - python-pyqt - python-pyqtwebengine + python-pyqt-6 + python-pyqtwebengine-6 + python-pykakasi python-regex + python-xxhash speech-dispatcher python-zeroconf - qtwebengine-5 + qtwebengine sqlite)) (arguments (list @@ -249,7 +260,7 @@ tags = [\"WS_X11\"]") (string-append "[tool.sip.project] sip-include-dirs = [\"" #$(this-package-input "python-pyqt") - "/lib/python3.11/site-packages/PyQt5/bindings\"]"))) + "/lib/python3.11/site-packages/PyQt6/bindings\"]"))) (substitute* "src/calibre/ebooks/pdf/pdftohtml.py" (("PDFTOHTML = 'pdftohtml'") (string-append "PDFTOHTML = \"" @@ -300,7 +311,8 @@ sip-include-dirs = [\"" ;; plugins, and I notice the available plugins list it shows ;; lacks 'svg'. Adding qtsvg-5 doesn't fix it, so I'm not sure how ;; to fix it. TODO: Fix test and remove this. - (setenv "SKIP_QT_BUILD_TEST" "true"))) + (setenv "SKIP_QT_BUILD_TEST" "true") + (setenv "SKIP_SPEECH_TESTS" "true"))) (add-after 'install 'install-rapydscript (lambda _ ;; Unset so QtWebengine doesn't dump temporary files here. @@ -332,7 +344,7 @@ sip-include-dirs = [\"" `("QTWEBENGINEPROCESS_PATH" = ,(list (search-input-file - inputs "/lib/qt5/libexec/QtWebEngineProcess"))))) + inputs "/lib/qt6/libexec/QtWebEngineProcess"))))) ;; Wrap all the binaries shipping with the package, except ;; for the wrappings created during the 'wrap standard ;; phase. This extends existing .calibre-real wrappers diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 5f285d0761..3f68751823 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -673,7 +673,7 @@ e.g. emacs-geiser-guile for Guile.") (define-public emacs-gptel (package (name "emacs-gptel") - (version "0.9.8") + (version "0.9.8.5") (source (origin (method git-fetch) (uri (git-reference @@ -682,7 +682,7 @@ e.g. emacs-geiser-guile for Guile.") (file-name (git-file-name name version)) (sha256 (base32 - "1wjzv39pcg6lcmlw6yc4fdfln2cnshzaa0dxgkniq9dfznf7hnmd")))) + "0ix0k9dv91mbibwih1s5wzx9hj5nkr3cz799m6gb52vpwf9gixg7")))) (build-system emacs-build-system) (arguments (list @@ -2091,7 +2091,7 @@ before interacting with non-free LLMs.") (define-public emacs-magit (package (name "emacs-magit") - (version "4.3.2") + (version "4.3.6") (source (origin (method git-fetch) @@ -2100,7 +2100,7 @@ before interacting with non-free LLMs.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0k15p39r5jikin86r5wsf5z9jsaica01f4s4sbwczikjjpfpq9r8")))) + (base32 "0gc6b1hclrpgyp2xccz980k2zg9ix6cyym11wxq6pjr8x8kl1j93")))) (build-system emacs-build-system) (arguments (list @@ -34868,7 +34868,7 @@ as Emacs Lisp.") (define-public emacs-transient (package (name "emacs-transient") - (version "0.8.7") + (version "0.9.1") (source (origin (method git-fetch) @@ -34877,7 +34877,7 @@ as Emacs Lisp.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1p3l2j1jrs39j1arzhczwi1ndcqmj5wvbq0y88brk3srzkwj69dr")))) + (base32 "09fjb7cvlxjby1r2liqhp90naz0dcfc5m3d4578zyxzhayhpmc13")))) (build-system emacs-build-system) (arguments `(#:tests? #f ;no test suite @@ -37702,7 +37702,7 @@ Lisp's (relatively new) EIEIO object oriented libraries.") (define-public emacs-fj (package (name "emacs-fj") - (version "0.6") + (version "0.8") (source (origin (method git-fetch) @@ -37711,7 +37711,7 @@ Lisp's (relatively new) EIEIO object oriented libraries.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1j4gl8wf9l9pnhz12b0ij2piz02ql23r8c7d3226yb7bsp4b3vdd")))) + (base32 "0ijl8vxrddx715fad83j9a4kip35r90klzx7sv2nd4pv3s8d359g")))) (build-system emacs-build-system) (arguments (list #:tests? #f)) ; no tests (propagated-inputs (list emacs-fedi emacs-magit emacs-tp)) diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index 645441101a..4143ff351e 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -2908,15 +2908,15 @@ for Inria, a public research institute in computer science and mathematics.") (define-public font-sil-gentium (package (name "font-sil-gentium") - (version "6.200") + (version "7.000") (source (origin (method url-fetch) (uri (string-append - "https://software.sil.org/downloads/r/gentium/GentiumPlus-" + "https://software.sil.org/downloads/r/gentium/Gentium-" version ".zip")) (sha256 (base32 - "0wxhsxv7xqsfbrywax0lcbmyfbrvrcm5g4c7a2v4j4cng4xi08cv")))) + "089y0hf7858gnkj4cgy6qpjq05p0dk9jb9v0c0sm2y527fb68gii")))) ;; Note: The zip file provides TTF files only, but the developer release, ;; which contains additional files, has a 'SOURCES.txt' file that says ;; that "the primary source files for the fonts are the fonts themselves". @@ -2934,7 +2934,7 @@ italics shapes. This package provides only TrueType files (TTF).") (define-public font-sil-andika (package (name "font-sil-andika") - (version "6.200") + (version "7.000") (source (origin (method url-fetch) (uri (string-append @@ -2942,7 +2942,7 @@ italics shapes. This package provides only TrueType files (TTF).") version ".zip")) (sha256 (base32 - "0z7qvjlidn3m2k40mwnm3azf3wd8pi1yvy2q30p5vkyyzhipb6nc")))) + "0w60waq7hq6vkjlzlgl4wjmipgl357xgh3899chyba7l3sj6xfl8")))) ;; As for Gentium (see above), the TTF files are considered source. (build-system font-build-system) (synopsis "Sans serif font designed especially for literacy use") @@ -2957,15 +2957,15 @@ confused with one another. This package provides only TrueType files (TTF).") (define-public font-sil-charis (package (name "font-sil-charis") - (version "6.200") + (version "7.000") (source (origin (method url-fetch) (uri (string-append - "https://software.sil.org/downloads/r/charis/CharisSIL-" + "https://software.sil.org/downloads/r/charis/Charis-" version ".zip")) (sha256 (base32 - "1pksr5wc9grdj75md4phr1a0gpjxk7xlmhv2nybsd2hbfrssl2ab")))) + "0rkn30fbrcrgfkj904y7fwxqfpkci0a1j7cvypw1mly50c9pn8z3")))) ;; As for Gentium (see above), the TTF files are considered source. (build-system font-build-system) (synopsis "Serif font for the Cyrillic and Latin alphabets") diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 9381ea8588..d62e6b6dc1 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -12842,27 +12842,29 @@ the map.") (license license:expat)))) (define-public freerct - (package - (name "freerct") - (version "0.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/FreeRCT/FreeRCT") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1szwy2cq4ffp4yxm9pp9vdyia0i5nz0wnppdd1xb9w7v3wa4mywi")))) - (build-system cmake-build-system) - (arguments - `(#:tests? #f)) - (native-inputs (list flex bison)) - (inputs (list libpng sdl2 sdl2-ttf)) - (home-page "https://freerct.net/") - (synopsis "Theme park management simulation game") - (description - "FreeRCT is a game that captures the look and feel of the popular games + (let ((commit "f85335dc98cdb28081b38cdf23409ac8a91d9a66") + (revision "0")) + (package + (name "freerct") + (version (git-version "0.1" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://codeberg.org/FreeRCT/FreeRCT") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1mimwgw487dxr2h1kxciwz34hk06g1lfgpicrav7khh19843a2fq")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) + (native-inputs (list flex bison)) + (inputs (list libpng glfw glew freetype)) + (home-page "https://freerct.net/") + (synopsis "Theme park management simulation game") + (description + "FreeRCT is a game that captures the look and feel of the popular games RollerCoaster Tycoon 1 and 2, graphics- and gameplay-wise. In this game, you play as a manager of a theme park, allowing you to make a @@ -12871,7 +12873,7 @@ finances, landscaping, and most importantly: rides. Good managers follow the principle of prioritizing the guests' happiness with a well-maintained park. Should they go unwise, a theme park plunge into chaos with vandalizing guests and unsafe rides. Which path will you take?") - (license license:gpl2))) + (license license:gpl2)))) (define-public ultrastar-deluxe (package diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm index 0d6c006da9..54ef50c42c 100644 --- a/gnu/packages/gnunet.scm +++ b/gnu/packages/gnunet.scm @@ -82,7 +82,8 @@ #:use-module (guix deprecation) #:use-module (guix download) #:use-module (guix git-download) - #:use-module (guix build-system gnu)) + #:use-module (guix build-system gnu) + #:use-module (guix build-system meson)) (define-public libextractor (package @@ -192,7 +193,7 @@ authentication and support for SSL3 and TLS.") (define-public gnunet (package (name "gnunet") - (version "0.23.0") + (version "0.24.2") (source (origin (method url-fetch) @@ -200,8 +201,8 @@ authentication and support for SSL3 and TLS.") ".tar.gz")) (sha256 (base32 - "0ypnsn81fp3iqi8rgsbcvfnz9iwmaxd1h71mphak8ska2kabdim4")))) - (build-system gnu-build-system) + "0ixgyq331vyv1vv63jcxgqwwyb7pxb69arsdvp1z09wlgn84lkif")))) + (build-system meson-build-system) (inputs (list bluez glpk @@ -218,7 +219,6 @@ authentication and support for SSL3 and TLS.") libogg libsodium libunistring - miniupnpc opus pulseaudio sqlite @@ -238,24 +238,11 @@ authentication and support for SSL3 and TLS.") #:parallel-tests? #f ;parallel tests aren't supported #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'disable-problematic-tests + (add-after 'unpack 'disable-network-tests (lambda _ - ;; The file 'test_arm_probnat.sh' doesn't seem to exist, - ;; or have a creation method specified anywhere in the source. - (substitute* "src/service/arm/Makefile.in" - (("check_SCRIPTS = \\\\") - "DISABLED_check_SCRIPTS = \\")) - ;; The 'test_communicator_bidirect-tcp' fails - ;; non-deterministically (see: - ;; https://bugs.gnunet.org/view.php?id=8689). - (substitute* "src/service/transport/Makefile.in" - (("test_communicator_bidirect-tcp\\$\\(EXEEXT) ") - "")) - ;; The 'test_fs_search_with_and' fails non-deterministically - ;; (see: https://bugs.gnunet.org/view.php?id=8692). - (substitute* "src/service/fs/Makefile.in" - (("test_fs_search_with_and\\$\\(EXEEXT) ") - "")))) + (substitute* "src/cli/gns/meson.build" + (("'test_gns_box_sbox',") "") + (("'test_dns2gns',") "")))) (add-before 'check 'set-env-var-for-tests (lambda _ (setenv "LANG" "en_US.UTF-8"))) @@ -275,7 +262,9 @@ high-level goal is to provide a strong foundation of free software for a global, distributed network that provides security and privacy. GNUnet in that sense aims to replace the current internet protocol stack. Along with an application for secure publication of files, it has grown to include all -kinds of basic applications for the foundation of a GNU internet.") +kinds of basic applications for the foundation of a GNU internet. + +For reliable NAT traversal, also install the @var{miniupnpc} package.") (license license:agpl3+) (home-page "https://www.gnunet.org/en/"))) @@ -377,14 +366,15 @@ The following services are supported: (define-public gnunet-gtk (package (inherit gnunet) (name "gnunet-gtk") - (version "0.23.0") + (version "0.24.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gnunet/gnunet-gtk-" version ".tar.gz")) (sha256 (base32 - "131z47px0kqnmn2b3sb84qmf90kynhl6mrx4rxrqh9chhy5pcr3h")))) + "1asp0c5f278zdf6586zng36zmn5pj08qqx0pnap4nh58ycr37i5f")))) + (build-system gnu-build-system) (arguments (list #:configure-flags #~(list "--with-libunique" diff --git a/gnu/packages/go-apps.scm b/gnu/packages/go-apps.scm index 8f91dd4ed7..c78551ca3f 100644 --- a/gnu/packages/go-apps.scm +++ b/gnu/packages/go-apps.scm @@ -47,16 +47,104 @@ (arguments (list #:import-path "github.com/rogpeppe/godef" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'delete-problematic-tests - (lambda _ - ;; The TestGoDef/Modules test fails, because of the lack of Go - ;; modules support. - (delete-file "src/github.com/rogpeppe/godef/godef_test.go")))))) - (inputs (list go-golang-org-x-tools go-ninefans-net-go)) + ;; The TestGoDef/Modules test fails, because of the lack of Go modules + ;; support. + #:test-flags #~(list "-skip" "TestGoDef/GOPATH|TestGoDef/Modules"))) + (inputs + (list go-golang-org-x-tools + go-ninefans-net-go)) (home-page "https://github.com/rogpeppe/godef") (synopsis "Print where symbols are defined in Go source code") (description "The @command{godef} command prints the source location of definitions in Go programs.") (license license:bsd-3))) + +(define-public gore + (package + (name "gore") + (version "0.6.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/x-motemen/gore") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0d8ayzni43j1y02g9j2sx1rhml8j1ikbbzmcki2lyi4j0ix5ys7f")))) + (build-system go-build-system) + (arguments + (list + #:go go-1.23 ;required by motemen-go-quickfix + #:import-path "github.com/x-motemen/gore" + #:install-source? #f + #:test-flags + ;; Gore is configured for building modules with Go module + ;; support, which fails in the build environment for the tests + ;; making use of that. Skip them. + #~(list "-skip" (string-join + (list "TestAction_ArgumentRequired" + "TestAction_Clear" + "TestAction_CommandNotFound" + "TestAction_Help" + "TestAction_Import" + "TestAction_Quit" + "TestSessionEval_AutoImport" + "TestSessionEval_CompileError" + "TestSessionEval_Const" + "TestSessionEval_Copy" + "TestSessionEval_Declarations" + "TestSessionEval_Func" + "TestSessionEval_Gomod" + "TestSessionEval_Gomod_CompleteImport" + "TestSessionEval_Gomod_DeepDir" + "TestSessionEval_Gomod_Outside" + "TestSessionEval_MultipleValues" + "TestSessionEval_NotUsed" + "TestSessionEval_QuickFix_evaluated_but_not_used" + "TestSessionEval_QuickFix_no_new_variables" + "TestSessionEval_QuickFix_used_as_value" + "TestSessionEval_Struct" + "TestSessionEval_TokenError" + "TestSessionEval_import" + "TestSession_IncludePackage" + "TestSession_completeWord") + "|")) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-commands + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "src/github.com/x-motemen/gore" + (substitute* "gopls.go" + (("\"gopls\"") + (format #f "~s" (search-input-file inputs "bin/gopls"))))))) + (replace 'install + (lambda _ + (with-directory-excursion "src/github.com/x-motemen/gore" + (invoke "make" "install"))))))) + (native-inputs + (list go-github-com-motemen-go-quickfix + go-github-com-peterh-liner + go-github-com-stretchr-testify + go-go-lsp-dev-jsonrpc2 + go-go-lsp-dev-protocol + go-golang-org-x-text + go-golang-org-x-tools)) + (inputs + (list gopls)) + (home-page "https://github.com/x-motemen/gore") + (synopsis "Go REPL with line editing and completion capabilities") + (description + "Gore is a Go @acronym{REPL, read-eval-print loop} that offers line +editing and auto-completion. Some of its features include: +@itemize +@item Line editing with history +@item Multi-line input +@item Package importing with completion +@item Evaluates any expressions, statements and function declarations +@item No ``evaluated but not used'' errors +@item Code completion +@item Showing documents +@item Auto-importing (gore -autoimport) +@end itemize") + (license license:expat))) diff --git a/gnu/packages/golang-web.scm b/gnu/packages/golang-web.scm index 02c1225887..e78e54844c 100644 --- a/gnu/packages/golang-web.scm +++ b/gnu/packages/golang-web.scm @@ -10768,7 +10768,7 @@ protocol.") (define-public lyrebird (package (name "lyrebird") - (version "0.6.0") + (version "0.6.1") (source (origin (method git-fetch) @@ -10777,11 +10777,11 @@ protocol.") (commit (string-append "lyrebird-" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1hhilnk72s0h3cm7zw89n3kiqwa32c0r1a1y5ygp432hmrxvr2b0")))) + (base32 "1wmcr2ywzp38z7p8gqb0r4wpsz1f67fn3dln9pswcjscvgm251pj")))) (build-system go-build-system) (arguments (list - #:go go-1.22 + #:go go-1.23 #:build-flags #~(list (string-append "-ldflags=" "-X main.lyrebirdVersion=" #$version " -s -w")) diff --git a/gnu/packages/golang-xyz.scm b/gnu/packages/golang-xyz.scm index 7476271f2c..ad15c7b57e 100644 --- a/gnu/packages/golang-xyz.scm +++ b/gnu/packages/golang-xyz.scm @@ -62,6 +62,7 @@ ;;; Copyright © 2025 Jussi Timperi <jussi.timperi@iki.fi> ;;; Copyright © 2025 45mg <45mg.writes@gmail.com> ;;; Copyright © 2025 Daniel Ziltener <dziltener@lyrion.ch> +;;; Copyright © 2025 Formbi <formbi@protonmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -118,15 +119,14 @@ ;;; Libraries: ;;; -;; XXX: The package name in Guix uses 'ninefans' instead of '9fans' to -;; accomodate from a shortcoming of the go-build-system where the `go-inputs' -;; procedure in the `setup-go-environment' phase uses -;; `package-name->name+version', which returns 'go' as name for -;; go-9fans-net-go-acme, which gets removed from the results and thus GOPATH. -(define (make-go-ninefans-net-go-module module) - "Return a go-ninefans-net-go package for MODULE." +(define-public go-9fans-net-go + ;; XXX: This variant is to keep go importer healthy with "--insert" option, + ;; which places package in alphabetical order and names it accordingly to + ;; import path from go.mod file. + ;; + ;; Use go-ninefans-net-go to include in inputs. (package - (name (string-append "go-ninefans-net-go-" module)) + (name "go-9fans-net-go") (version "0.0.7") (source (origin @@ -140,40 +140,34 @@ (build-system go-build-system) (arguments (list - ;; This is challenging to package as it uses Go modules and modules - ;; inter-dependencies, and our build system lacks support for it; - ;; disable the tests to avoid everything getting tangled at build time. - #:tests? #f - #:import-path (string-append "9fans.net/go/" module) - #:unpack-path "9fans.net/go")) - (propagated-inputs (list go-golang-org-x-sys go-golang-org-x-exp)) + #:skip-build? #t + #:import-path "9fans.net/go" + #:test-subdirs #~(list "acme/..." + ;; "cmd/..." ; missing packages + ;; + ;; Tests fail with error: panic: drawfcall.New: + ;; exec: "devdraw": executable file not found in + ;; $PATH + ;; + ;; "draw/..." + "games/..." + "p9trace/..." + "plan9/..." + "plumb/..."))) + ;; TODO: Not ready packages required to build CLI from <cmd/devdraw>. + ;; (native-inputs + ;; (list go-golang-org-x-exp-shiny + ;; go-golang-org-x-mobile)) + (propagated-inputs + (list go-golang-org-x-exp + go-golang-org-x-sys)) (home-page "https://9fans.net/go") (synopsis "Interface for interacting with Acme windows") - (description "The @code{acme} Go package provides simple interface for + (description + "The @code{acme} Go package provides simple interface for interacting with Acme windows of the Plan 9 text editor.") (license license:expat))) -(define go-ninefans-net-go-acme - (make-go-ninefans-net-go-module "acme")) - -(define go-ninefans-net-go-draw - (make-go-ninefans-net-go-module "draw")) - -(define go-ninefans-net-go-plan9 - (make-go-ninefans-net-go-module "plan9")) - -(define-public go-ninefans-net-go - (let ((base (make-go-ninefans-net-go-module ""))) - (package - (inherit base) - (name "go-ninefans-net-go") - (build-system trivial-build-system) - (arguments (list #:builder #~(mkdir #$output))) - (propagated-inputs - (list go-ninefans-net-go-acme - go-ninefans-net-go-draw - go-ninefans-net-go-plan9))))) - (define-public go-atomicgo-dev-cursor (package (name "go-atomicgo-dev-cursor") @@ -1139,6 +1133,31 @@ almost directly in Go source code.") "This library provides unit multipliers and functions for Go.") (license license:expat)))) +(define-public go-github-com-alessio-shellescape + (package + (name "go-github-com-alessio-shellescape") + (version "1.4.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alessio/shellescape") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14zypi8qdxl77lks5b9jshr17idrm4sri1rxgpw5q4dys1palddd")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/alessio/shellescape")) + (home-page "https://github.com/alessio/shellescape") + (synopsis "Escape arbitrary strings for use as command line arguments") + (description + "This package provides the @code{shellescape.Quote} to escape arbitrary +strings for a safe use as command line arguments in the most common POSIX +shells.") + (license license:expat))) + (define-public go-github-com-alsm-ioprogress (package (name "go-github-com-alsm-ioprogress") @@ -3908,34 +3927,6 @@ against various paths. This is particularly useful when trying to filter files based on a .gitignore document.") (license license:expat))) -(define-public go-github-com-dicedb-dicedb-go - (package - (name "go-github-com-dicedb-dicedb-go") - (version "1.0.3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/DiceDB/dicedb-go") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "18hfymwvp0mdnw1ssxnh58wvg4ifbjq4yhxvzfnw1f70rnhv01y3")))) - (build-system go-build-system) - (arguments - (list - ;; dicedb-go depends on dicedb for running tests - ;; but dicedb depends on dice-db, creating a cyclic depedency - #:tests? #f - #:import-path "github.com/dicedb/dicedb-go")) - (propagated-inputs (list go-github-com-google-uuid - go-google-golang-org-protobuf)) - (home-page "https://github.com/dicedb/dicedb-go") - (synopsis "SDK for @code{DiceDB}") - (description - "Go SDK for @url{https://github.com/dicedb/dice,@code{dicedb}}.") - (license license:bsd-3))) - (define-public go-github-com-creack-pty (package (name "go-github-com-creack-pty") @@ -4191,6 +4182,30 @@ Features: @end itemize") (license license:expat))) +(define-public go-github-com-dannav-hhmmss + (package + (name "go-github-com-dannav-hhmmss") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dannav/hhmmss") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1h2wdpd5sd2wfd5d2vyqiwlrqlxf3qwpqjy74hbcr7bhjpgv81m0")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/dannav/hhmmss")) + (home-page "https://github.com/dannav/hhmmss") + (synopsis "Parse HHMMSS strings into a Go time.Duration type") + (description + "Package @code{hhmmss} manages converting HH:MM:SS time strings to +@code{time.Duration} values.") + (license license:asl2.0))) + (define-public go-github-com-danwakefield-fnmatch (let ((commit "cbb64ac3d964b81592e64f957ad53df015803288") (revision "0")) @@ -4782,6 +4797,34 @@ on throughput and hit ratio performance.") @end itemize") (license license:expat))) +(define-public go-github-com-dicedb-dicedb-go + (package + (name "go-github-com-dicedb-dicedb-go") + (version "1.0.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/DiceDB/dicedb-go") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "18hfymwvp0mdnw1ssxnh58wvg4ifbjq4yhxvzfnw1f70rnhv01y3")))) + (build-system go-build-system) + (arguments + (list + ;; dicedb-go depends on dicedb for running tests + ;; but dicedb depends on dice-db, creating a cyclic depedency + #:tests? #f + #:import-path "github.com/dicedb/dicedb-go")) + (propagated-inputs (list go-github-com-google-uuid + go-google-golang-org-protobuf)) + (home-page "https://github.com/dicedb/dicedb-go") + (synopsis "SDK for @code{DiceDB}") + (description + "Go SDK for @url{https://github.com/dicedb/dice,@code{dicedb}}.") + (license license:bsd-3))) + (define-public go-github-com-dimchansky-utfbom (package (name "go-github-com-dimchansky-utfbom") @@ -12165,6 +12208,32 @@ values pointed to. Unexported field values are not copied.") "This package provides simple colorized console logger for golang.") (license license:expat))) +(define-public go-github-com-motemen-go-quickfix + (package + (name "go-github-com-motemen-go-quickfix") + (version "0.0.0-20250224075427-39bb724d71b7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/motemen/go-quickfix") + (commit (go-version->git-ref version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0j14k6kfzvfn8v21gf2ssaypicrwb4pvh7yzfa5m1jcc9581j2ad")))) + (build-system go-build-system) + (arguments + (list + #:go go-1.23 ;minimum required version + #:import-path "github.com/motemen/go-quickfix")) + (propagated-inputs (list go-golang-org-x-tools)) + (home-page "https://github.com/motemen/go-quickfix") + (synopsis "Go ASTs fixing library") + (description + "The @code{quickfix} Go package provides functions for fixing Go ASTs +that are well typed but @samp{go build} refuses to build.") + (license license:expat))) + (define-public go-github-com-mreiferson-go-options (package (name "go-github-com-mreiferson-go-options") @@ -13737,6 +13806,32 @@ robust way to define those flags, and to parse them from command-line arguments, environment variables, and/or config files.") (license license:asl2.0))) +(define-public go-github-com-peterh-liner + (package + (name "go-github-com-peterh-liner") + (version "1.2.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/peterh/liner") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0hq0maja0ymdc0x5f78jv0hxh4i7byxb5y9p70vi9zsip9yhirqp")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/peterh/liner")) + (propagated-inputs (list go-golang-org-x-sys + go-github-com-mattn-go-runewidth)) + (home-page "https://github.com/peterh/liner") + (synopsis "Command line editor Go library") + (description "The @code{liner} Go package implements a simple command line +editor with history, inspired by @url{https://github.com/antirez/linenoise/, +linenoise}. Xterm as well as WIN32 terminal codes are supported.") + (license license:expat))) + (define-public go-github-com-philhofer-fwd (package (name "go-github-com-philhofer-fwd") @@ -14880,6 +14975,80 @@ is undetermined, a customizable spinner is shown.") It's typically used for testing responses with larger data bodies.") (license license:expat))) +(define-public go-github-com-segmentio-asm + (package + (name "go-github-com-segmentio-asm") + (version "1.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/segmentio/asm") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "01c90h83rq7fkvzfn28lz7x0455zxbvaxknd3c8259dfszfyr2zx")) + (modules '((guix build utils))) + (snippet + #~(begin + ;; Submodules with their own go.mod files and packaged separately: + ;; + ;; - github.com/segmentio/asm/build + (delete-file-recursively "build"))))) + (build-system go-build-system) + (arguments + (list + #:skip-build? #t + #:import-path "github.com/segmentio/asm")) + (propagated-inputs + (list go-golang-org-x-sys)) + (home-page "https://github.com/segmentio/asm") + (synopsis " Go library providing algorithms optimized for modern CPUs") + (description + "This package aims to provide algorithms optimized to +leverage advanced instruction sets of modern CPUs to maximize throughput and +take the best advantage of the available compute power. It includes functions +that have often been designed to work on arrays of values, which is where SIMD +and branchless algorithms shine.") + (license license:expat))) + +(define-public go-github-com-segmentio-encoding + (package + (name "go-github-com-segmentio-encoding") + (version "0.4.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/segmentio/encoding") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0gk2ry6s20h4j5gvl9vf83wi3badphnnzh6fhxfx3r24pbg7c2dx")) + (modules '((guix build utils))) + (snippet + #~(begin + ;; Submodules with their own go.mod files and packaged separately: + ;; + ;; - github.com/segmentio/encoding/benchmarks + ;; - github.com/segmentio/encoding/proto/fixtures + (for-each delete-file-recursively + (list "benchmarks" "proto/fixtures")))))) + (build-system go-build-system) + (arguments + (list + #:skip-build? #t + #:import-path "github.com/segmentio/encoding" + #:test-flags #~(list "-skip" "TestUnmarshalFixture|TestDecodeFixture"))) + (propagated-inputs + (list go-github-com-segmentio-asm)) + (home-page "https://github.com/segmentio/encoding") + (synopsis "Encoding and decoding Go library") + (description + "Go package containing implementations of encoders and decoders for +various data formats.") + (license license:expat))) + (define-public go-github-com-sereal-sereal-go-sereal (package (name "go-github-com-sereal-sereal-go-sereal") @@ -18004,6 +18173,109 @@ for projects that don't require a full database server such as Postgres or MySQL.") (license license:expat))) +(define-public go-go-lsp-dev-jsonrpc2 + (package + (name "go-go-lsp-dev-jsonrpc2") + (version "0.10.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/go-language-server/jsonrpc2") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0mx7h0bak0kr3v18yqaqiq6ya9paw6lv3vqf30k55jsmwmrx5647")))) + (build-system go-build-system) + (arguments + (list + #:import-path "go.lsp.dev/jsonrpc2")) + (propagated-inputs (list go-github-com-segmentio-encoding)) + (home-page "https://go.lsp.dev/jsonrpc2") + (synopsis "JSON-RPC 2 Go library") + (description "The @code{jsonrpc2F} package is an implementation of the +JSON-RPC 2 specification for Go.") + (license license:bsd-3))) + +(define-public go-go-lsp-dev-pkg + (package + (name "go-go-lsp-dev-pkg") + (version "0.0.0-20210717090340-384b27a52fb2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/go-language-server/pkg") + (commit (go-version->git-ref version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0n6mskf5g4m1h6hc12rwl622mn21a695kk7f2ldb5hdmlwib852g")))) + (build-system go-build-system) + (arguments + (list + #:skip-build? #t + #:import-path "go.lsp.dev/pkg")) + (home-page "https://go.lsp.dev/pkg") + (synopsis "Library for the Go Language Server project") + (description + "Collection of Go modules for the Go Language Server project.") + (license license:bsd-3))) + +(define-public go-go-lsp-dev-protocol + (package + (name "go-go-lsp-dev-protocol") + (version "0.12.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/go-language-server/protocol") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14n0s7bs4xcsdp8m7fq9ridrh2nxsh5l80wg6xprgsr984dicpr8")))) + (build-system go-build-system) + (arguments + (list + #:import-path "go.lsp.dev/protocol")) + (propagated-inputs + (list go-github-com-google-go-cmp + go-github-com-segmentio-encoding + go-go-lsp-dev-jsonrpc2 + go-go-lsp-dev-pkg + go-go-lsp-dev-uri + go-go-uber-org-zap)) + (home-page "https://go.lsp.dev/protocol") + (synopsis "Language Server Protocol (LSP) library for Go") + (description + "The @code{protocol} package implements the Language Server +Protocol (LSP) specification in Go.") + (license license:bsd-3))) + +(define-public go-go-lsp-dev-uri + (package + (name "go-go-lsp-dev-uri") + (version "0.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/go-language-server/uri") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1mz1jnbf46rzs3iy8a601rdfmify6x56jsw2wsjvmyczn4vz8qwc")))) + (build-system go-build-system) + (arguments + (list #:import-path "go.lsp.dev/uri")) + (propagated-inputs (list go-github-com-google-go-cmp)) + (home-page "https://go.lsp.dev/uri") + (synopsis "Go library for URI (uniform resource identifier)") + (description + "The @code{uri} package implements the URI Uniform Resource +Identifier (RFC3986) specification in Go.") + (license license:bsd-3))) + (define-public go-go-mau-fi-util (package (name "go-go-mau-fi-util") @@ -19566,6 +19838,17 @@ that @code{gofmt} is happy with.") formatter, and interpreter with bash support.") (license license:bsd-3))) +(define-public go-ninefans-net-go + ;; XXX: The package name in Guix uses 'ninefans' instead of '9fans' to + ;; accomodate from a shortcoming of the go-build-system where the + ;; `go-inputs' procedure in the `setup-go-environment' phase uses + ;; `package-name->name+version', which returns 'go' as name for + ;; go-9fans-net-go-acme, which gets removed from the results and thus + ;; GOPATH. + (package + (inherit go-9fans-net-go) + (name "go-ninefans-net-go"))) + (define-public go-nullprogram-com-x-optparse (package (name "go-nullprogram-com-x-optparse") diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index cac5f7c0f4..fabe887bfe 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -2684,12 +2684,12 @@ capabilities.") (define-public guile-g-golf (package (name "guile-g-golf") - (version "0.8.1") + (version "0.8.2") (source (g-golf-source #:version version #:hash (content-hash - "044iidjd24cjncvx510ai46is9jxni72iz8pxyi34g4p7gbbcbi7"))) + "10qxhbfdysh4mhw6rxr40lfq24m4smk37cpr4wvjf008s6w7f4nz"))) (build-system gnu-build-system) (arguments (list @@ -4313,17 +4313,17 @@ structures. This package re-uses the SRFI sample implementation.") (define-public guile-srfi-133 (package (name "guile-srfi-133") - (version "0.0.1") + (version "1.0.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/scheme-requests-for-implementation/srfi-133") - (commit "db81a114cd3e23375f024baec15482614ec90453"))) + (commit "4204de98b0945e7419975ed259803848de23cbf1"))) (file-name (git-file-name name version)) (sha256 (base32 - "0a7srl72291yah0aj6rwddhj041v2spximhknjj7hczlparsrm7f")))) + "1arnjbcxa126mcmdnyhgkbsbfqknzal0ynrnbgvdcfl2kfz93ng9")))) (build-system guile-build-system) (arguments (list @@ -4332,7 +4332,7 @@ structures. This package re-uses the SRFI sample implementation.") (add-after 'unpack 'move-create-and-delete-files (lambda _ (rename-file "vectors" "srfi") - (rename-file "srfi/vectors-test.scm" "srfi/srfi-test.scm") + (rename-file "srfi/vectors-test.scm" "tests/tests.scm") (rename-file "srfi/vectors-impl.scm" "srfi/srfi-impl.scm") (with-output-to-file "srfi/srfi-133.scm" (lambda () @@ -4369,11 +4369,13 @@ structures. This package re-uses the SRFI sample implementation.") vector->string string->vector)) (include \"srfi-impl.scm\")"))) - (for-each (lambda (filename) - (delete-file filename)) - '("tests/run.scm" + (for-each delete-file + '("srfi/vectors.scm" "srfi/vectors.sld" - "srfi/vectors.scm"))))))) + "tests/run.scm")))) + (add-after 'build 'check + (lambda _ + (invoke "guile" "tests/tests.scm")))))) (native-inputs (list guile-3.0)) (home-page "https://github.com/scheme-requests-for-implementation/srfi-133") diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm index 90d98f223d..ce34a5dcc8 100644 --- a/gnu/packages/image-viewers.scm +++ b/gnu/packages/image-viewers.scm @@ -122,7 +122,7 @@ (define-public swayimg (package (name "swayimg") - (version "4.1") + (version "4.2") (source (origin (method git-fetch) @@ -131,7 +131,7 @@ (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0dj3pi8h5rcj43gbzbiykdmj4grhxhrwvxcjbhgzh731w6vl8267")))) + (base32 "1kaxr5ppikllkaz45njr5p8yl4j6dqqi8qi18h59qwn291sv68px")))) (build-system meson-build-system) (arguments `(#:configure-flags '(,(string-append "-Dversion=" version)))) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 4ca0857b01..c8e8123e75 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -893,7 +893,7 @@ commonly called @code{ftoa} or @code{dtoa}.") (define-public libreoffice (package (name "libreoffice") - (version "24.8.4.2") ;keep in sync with hunspell dictionaries + (version "25.2.3.2") ;keep in sync with hunspell dictionaries (source (origin (method url-fetch) @@ -906,7 +906,7 @@ commonly called @code{ftoa} or @code{dtoa}.") "https://downloadarchive.documentfoundation.org/libreoffice/old/" version "/src/libreoffice-" version ".tar.xz"))) (sha256 - (base32 "05qs12z0xkpqy3yl7378d99y82rswic101aw65k1macslcpdwr0m")))) + (base32 "1pysqa31by4rhghnfyz8xbygqn6d6fjqm2py1apxkw3xa8g4cm7a")))) (build-system glib-or-gtk-build-system) (arguments (list diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index ccf0567827..e24d33d1b2 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -145,6 +145,7 @@ #:use-module (gnu packages graphviz) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) + #:use-module (gnu packages guile) #:use-module (gnu packages haskell-apps) #:use-module (gnu packages haskell-xyz) #:use-module (gnu packages image) @@ -513,7 +514,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; The current "stable" kernels. That is, the most recently released major ;; versions that are still supported upstream. -(define-public linux-libre-6.14-version "6.14.9") +(define-public linux-libre-6.14-version "6.14.10") (define-public linux-libre-6.14-gnu-revision "gnu") (define deblob-scripts-6.14 (linux-libre-deblob-scripts @@ -523,7 +524,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "14vabccax7mq5gisshlnx2ljx3hr4jj106aw3s9qx5dxbjvr7qcw"))) (define-public linux-libre-6.14-pristine-source (let ((version linux-libre-6.14-version) - (hash (base32 "0qgkr69745al6nf4wicxq284xnsmxybh29r7hjh2b6bi6bhds31r"))) + (hash (base32 "0hzylab1gh791qpi5albv5wcjz0m7hrs4k7f6bw24k77xb7rg2yy"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-6.14))) @@ -532,7 +533,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; Here are the support timelines: ;; <https://www.kernel.org/category/releases.html> -(define-public linux-libre-6.12-version "6.12.31") +(define-public linux-libre-6.12-version "6.12.32") (define-public linux-libre-6.12-gnu-revision "gnu") (define deblob-scripts-6.12 (linux-libre-deblob-scripts @@ -542,57 +543,57 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "00hyshh3yx59yv9wxiw2hnjlksr60w1hklbv0462wwi7gjlk72xd"))) (define-public linux-libre-6.12-pristine-source (let ((version linux-libre-6.12-version) - (hash (base32 "19sba8zak31gn89pzfa3kb9rv7y9z8kybvyikigamq7nblz5nk5h"))) + (hash (base32 "0w3a6k0cbdanknlha3qjyvvmhh3xks9d6xq1043laf3q2xr21c59"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-6.12))) -(define-public linux-libre-6.6-version "6.6.92") +(define-public linux-libre-6.6-version "6.6.93") (define-public linux-libre-6.6-gnu-revision "gnu") (define deblob-scripts-6.6 (linux-libre-deblob-scripts linux-libre-6.6-version linux-libre-6.6-gnu-revision (base32 "1fph0cf5vwkxcyz2cay4d70sqw1y02dx3shfclhp9y4nmkk169pq") - (base32 "0qi8hhgl9sk0q56qxaiabwpsw5m3dnxf4sga0yj2lhbnapl60pjj"))) + (base32 "1zzpk2hpv76lylip4j7jkn0jqcjj15h3jff22x22i73mwz2kiqgk"))) (define-public linux-libre-6.6-pristine-source (let ((version linux-libre-6.6-version) - (hash (base32 "1v1pq9yzxrlaxx4y4cj5q3wska0jbv2inc7phqfw70fj88kai0hx"))) + (hash (base32 "06bpg5vvh165znzn01mqab2divrsbznxwc73y44z1s9mjqszyy8d"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-6.6))) -(define-public linux-libre-6.1-version "6.1.140") +(define-public linux-libre-6.1-version "6.1.141") (define-public linux-libre-6.1-gnu-revision "gnu") (define deblob-scripts-6.1 (linux-libre-deblob-scripts linux-libre-6.1-version linux-libre-6.1-gnu-revision (base32 "00yh14z7sr9pkakkkpdyp8fj41d56a306xsf5yb2lzm0sgl6lvza") - (base32 "0kz3z4jjag5xjn5scp72is0f6ql550z6xixydc370qmvp8aswxix"))) + (base32 "1hzjr44hy8px4n3x5my2syhd60chkfy79ajgzvlz04pc5yf6ihpi"))) (define-public linux-libre-6.1-pristine-source (let ((version linux-libre-6.1-version) - (hash (base32 "0x7b856hxmli8qnkps9x62q8sca101v4sfwjqgivzxvprb5gjyap"))) + (hash (base32 "05n1561cbzaw9vcxp86bqzvhqz5wv7dajpy7cq34bw7myvx4ag5w"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-6.1))) -(define-public linux-libre-5.15-version "5.15.184") +(define-public linux-libre-5.15-version "5.15.185") (define-public linux-libre-5.15-gnu-revision "gnu") (define deblob-scripts-5.15 (linux-libre-deblob-scripts linux-libre-5.15-version linux-libre-5.15-gnu-revision (base32 "14dajb391lr4y2llvjihilmzwvrq4gjbgvrha7dvh6vv4jmbi28v") - (base32 "117nsj3n6nvlzbl86linz327qk5p516s9a8sc6ci79qwwz6a60im"))) + (base32 "0rg65s6kd9gxxa3wl6180pr39rb6zbcicwjik4kygs2ns0247y56"))) (define-public linux-libre-5.15-pristine-source (let ((version linux-libre-5.15-version) - (hash (base32 "1nf1v89ikwi9philrw6h03hzb085mwz44lfxx71agp67vk39hglw"))) + (hash (base32 "1p0kjc09qqv361phscny1gqj38di9dpab9gxywljkwqhi5wyn0rx"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.15))) -(define-public linux-libre-5.10-version "5.10.237") +(define-public linux-libre-5.10-version "5.10.238") (define-public linux-libre-5.10-gnu-revision "gnu1") (define deblob-scripts-5.10 (linux-libre-deblob-scripts @@ -602,12 +603,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "11liynz5vayms646gj0rjj8fmrqhv203mwsqs3sx9p8y84v50d4p"))) (define-public linux-libre-5.10-pristine-source (let ((version linux-libre-5.10-version) - (hash (base32 "098gvqfaahabqqz64m5fwri57drwiz3006pr805sxw74w0vjgj0z"))) + (hash (base32 "1dkblixa0as9h11m081dqq8vlz4dcjbzdz7phkz07p621na55j07"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.10))) -(define-public linux-libre-5.4-version "5.4.293") +(define-public linux-libre-5.4-version "5.4.294") (define-public linux-libre-5.4-gnu-revision "gnu1") (define deblob-scripts-5.4 (linux-libre-deblob-scripts @@ -617,7 +618,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "0l7pwhgw9laxfypcpqlz411x3hybcw2269abh3lpcw96bgv5m1k2"))) (define-public linux-libre-5.4-pristine-source (let ((version linux-libre-5.4-version) - (hash (base32 "0b9p8l6ndm75751f7s03rnxg7yg9c4pj9rb537lhsv6pqx096n1l"))) + (hash (base32 "16bv0x4c9ssr66vrd6jnv2dw5na1y7hxfn4d67g0zaksh6xd0yf8"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.4))) @@ -3696,6 +3697,32 @@ Both commands are targeted at system administrators.") (synopsis "Programs to configure Linux IP packet filtering rules (nftables API)"))) +(define-public irqbalance + (package + (name "irqbalance") + (version "1.9.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/irqbalance/irqbalance") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1jswxr0jcxz83j1nanl6xaxpw001l0hfb2xvvy2k970g1g1kpszd")))) + (build-system gnu-build-system) + (inputs (list glib ncurses libnl libcap-ng)) + (native-inputs (list autoconf automake libtool pkg-config)) + (home-page "https://irqbalance.github.io/irqbalance/") + (synopsis "Daemon used to load balance CPU interrupts") + (description + "Irqbalance is a daemon to help balance the CPU load generated by +interrupts across all of a systems CPUs. Irqbalance identifies the highest +volume interrupt sources, and isolates each of them to a single unique CPU, so +that load is spread as much as possible over an entire processor set, while +minimizing cache miss rates for irq handlers.") + (license license:gpl2))) + (define-public bolt (package (name "bolt") @@ -8512,11 +8539,11 @@ interface in sysfs, which can be accomplished with the included udev rules.") (native-inputs (list shellcheck)) (inputs - `(("bash" ,bash) - ("dbus" ,dbus) + `(("dbus" ,dbus) ("ethtool" ,ethtool) ("eudev" ,eudev) ("grep" ,grep) + ("guile" ,guile-3.0) ;for wrap-script ("hdparm" ,hdparm) ("inetutils" ,inetutils) ("iw" ,iw) @@ -8574,15 +8601,20 @@ interface in sysfs, which can be accomplished with the included udev rules.") (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((bin (string-append (assoc-ref outputs "out") "/bin")) (sbin (string-append (assoc-ref outputs "out") "/sbin")) - (bin-files (find-files bin ".*")) - (sbin-files (find-files sbin ".*"))) + ;; Used to ignore symlinks which don't need wrapping + (regular-file-predicate + (lambda (file stat) (eq? 'regular (stat:type stat)))) + (bin-files (find-files bin regular-file-predicate)) + (sbin-files (find-files sbin regular-file-predicate))) (define (bin-directory input-name) (let ((p (assoc-ref inputs input-name))) (and p (string-append p "/bin")))) (define (sbin-directory input-name) (string-append (assoc-ref inputs input-name) "/sbin")) (for-each (lambda (program) - (wrap-program program + ;; Programs rely on $0 so we use wrap-script + ;; instead of wrap-program + (wrap-script program `("PATH" ":" prefix ,(append (filter-map bin-directory diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 74bdfab84c..9b57b64a78 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -1300,16 +1300,17 @@ provide LAPACK for someone who does not have access to a Fortran compiler.") (define-public scalapack (package (name "scalapack") - (version "2.1.0") + (version "2.2.2") (source (origin - (method url-fetch) - (uri (string-append "http://www.netlib.org/scalapack/scalapack-" - version ".tgz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/Reference-ScaLAPACK/scalapack") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "19i0h9vdc3zsy58r6fy1vs2kz2l7amifkz0cf926j90xz1n23nb1")) - (patches (search-patches "scalapack-gcc-10-compilation.patch")))) + "0abs4j9iknd3qiyaj06gh00iyki71c2lzpmyv21ncv7f7vy1ccr8")))) (build-system cmake-build-system) (inputs `(("mpi" ,openmpi) @@ -1319,14 +1320,13 @@ provide LAPACK for someone who does not have access to a Fortran compiler.") `(#:configure-flags `("-DBUILD_SHARED_LIBS:BOOL=YES") #:phases (modify-phases %standard-phases (add-before 'check 'mpi-setup - ,%openmpi-setup) - (add-after 'unpack 'skip-faulty-test + ,%openmpi-setup) + (add-after 'unpack 'skip-faulty-tests (lambda _ - ;; FIXME: Skip these two tests that fail to complete for - ;; unknown reasons: - ;; <https://github.com/Reference-ScaLAPACK/scalapack/issues/43>. + ;; FIXME: Skip two tests that fail to complete. See + ;; <https://github.com/amd/scalapack/commit/d3b6248b26f615b118ff4d72a00b3028f59a47f6>. (substitute* "TESTING/CMakeLists.txt" - (("^add_test\\(x[sd]hseqr.*" all) + (("^add_test\\(x[cz]heevr.*" all) (string-append "# " all "\n")))))))) (home-page "https://www.netlib.org/scalapack/") (synopsis "Library for scalable numerical linear algebra") diff --git a/gnu/packages/minetest.scm b/gnu/packages/minetest.scm index 691b0452e3..6fed1b2aad 100644 --- a/gnu/packages/minetest.scm +++ b/gnu/packages/minetest.scm @@ -39,6 +39,7 @@ #:use-module (gnu packages multiprecision) #:use-module (gnu packages ncurses) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages sdl) #:use-module (gnu packages serialization) #:use-module (gnu packages sqlite) #:use-module (gnu packages xiph) @@ -55,16 +56,16 @@ (define-public minetest (package (name "minetest") - (version "5.10.0") + (version "5.12.0") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/minetest/minetest") + (url "https://github.com/luanti-org/luanti") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1nsnsf1axiazb8zz51c0742kh0qx2b298pr5mr91m0l9r6dv1sdj")) + (base32 "1l8kwy23p3gpk12nnhhq1lp4v0zj6kiygnmia043pdinmgzzd0xy")) (modules '((guix build utils) (srfi srfi-26) (ice-9 ftw))) @@ -75,20 +76,24 @@ ;; but still ok for internal use." Also asked MT devs on IRC for this. ;; - tiniergltf is intended for Minetest and diverged from upstream. (snippet - '(let ((keep '("." ".." "sha256" "tiniergltf"))) - (with-directory-excursion "lib" - (for-each delete-file-recursively - (scandir "." (negate (cut member <> keep))))) - ;; IrrlichtMT includes - (delete-file-recursively "irr/include/KHR") - (delete-file-recursively "irr/src/vendor") - (substitute* "irr/src/COpenGLCommon.h" - (("\"vendor/gl.h\"") "<GL/gl.h>")) - ;; Catch2 - (substitute* "CMakeLists.txt" - (("add_subdirectory\\(lib/catch2\\)") "find_package(Catch2 3 REQUIRED)")) - (substitute* "src/catch.h" - (("catch_amalgamated.hpp") "catch2/catch_all.hpp")))))) + '(let ((keep '("." ".." "sha256" "tiniergltf"))) + (with-directory-excursion "lib" + (for-each delete-file-recursively + (scandir "." (negate (cut member <> keep))))) + ;; IrrlichtMT includes + (delete-file-recursively "irr/include/KHR") + (delete-file-recursively "irr/src/vendor") + (substitute* "irr/src/COpenGLCommon.h" + (("\"vendor/gl.h\"") "<GL/gl.h>")) + ;; Catch2 + (substitute* "CMakeLists.txt" + (("add_subdirectory\\(lib/catch2\\)") "find_package(Catch2 3 REQUIRED)")) + (substitute* "src/catch.h" + (("catch_amalgamated.hpp") "catch2/catch_all.hpp")) + (substitute* "src/unittest/test_irr_rotation.cpp" + (("catch_amalgamated.hpp") "catch2/catch_all.hpp")) + (substitute* "src/unittest/test_irr_matrix4.cpp" + (("catch_amalgamated.hpp") "catch2/catch_all.hpp")))))) (build-system cmake-build-system) (arguments (list @@ -130,18 +135,19 @@ mesa ncurses openal + sdl2 sqlite `(,zstd "lib"))) (outputs '("out" "debug")) (synopsis "Voxel game engine") (description - "Minetest is a voxel game engine that supports modding and game creation + "Luanti is a voxel game engine that supports modding and game creation using its Lua modding API. It allows playing a wide range of voxel-based games, installing mods and texture packs. This package only provides the base platform, users need to install games themselves (for example, @code{minetest-game}), either through Guix, the built-in interface or other sources.") - (home-page "https://www.minetest.net/") + (home-page "https://www.luanti.org/") (license license:lgpl2.1+))) (define-public minetest-server @@ -174,13 +180,13 @@ sources.") "openal"))) (synopsis "Infinite-world block sandbox game (server)") (description - "Server for Minetest game engine and gaming platform. Allows hosting -Minetest games with multiplayer support. This package provides -@command{minetestserver} to run a Minetest server."))) + "Server for Luanti game engine and gaming platform. Allows hosting +Luanti games with multiplayer support. This package provides +@command{luantiserver} to run a Luanti server."))) (define-public minetest-game - (let ((commit "88ecab34d98550c8eb77f49ac2866b480a6e707a") - (revision "0")) + (let ((commit "0351c6691595c6eb88a1bea2383f6fae46a686ce") + (revision "1")) (package (name "minetest-game") (version (git-version "0.0.0" revision commit)) @@ -188,21 +194,22 @@ Minetest games with multiplayer support. This package provides (origin (method git-fetch) (uri (git-reference - (url "https://github.com/minetest/minetest_game") + (url "https://github.com/luanti-org/minetest_game") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "0pvr3m7kxrriabw20sy6rhx0givh5ic85dk5g88cbbsy83admsp0")))) + (base32 "13l33ghnm1g3ka0ivxljzdga50x0iv0fzyd7pqm15ickfbkwbm0v")))) (build-system copy-build-system) (arguments (list #:install-plan #~'(("." "/share/minetest/games/minetest_game")))) - (synopsis "Ex-official game for Minetest game engine") + (synopsis "Ex-official game for Luanti game engine") (description - "A game for the Minetest voxel game platform. It provides a very basic -Minecraft-like base for some mods. It is currently in maintenance mode -and gets no new features.") - (home-page "https://www.minetest.net/") + "This package provides the Minetest Game - a game for the +Luanti game engine which used to be the official game for Luanti +(formerly Minetest). It is currently in maintenance mode and gets no +new features.") + (home-page "https://www.luanti.org/") (license license:lgpl2.1+)))) ;; This package is deprecated. "Minetest Game" is no longer the official game. diff --git a/gnu/packages/mold.scm b/gnu/packages/mold.scm index d153d4dde3..f3d20498e7 100644 --- a/gnu/packages/mold.scm +++ b/gnu/packages/mold.scm @@ -36,7 +36,7 @@ (define-public mold (package (name "mold") - (version "2.40.0") + (version "2.40.1") (source (origin (method git-fetch) @@ -45,7 +45,7 @@ (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0yjip7i8ldjcb28qsl4w27ppnsxbkfxbk31r159b10vgv60q0jph")) + (base32 "0m14ymwy1jzslfk91vscdk4mpb1n2cgf620p652jm8i0k56l1bfp")) (modules '((guix build utils))) (snippet #~(begin @@ -67,7 +67,7 @@ #~(modify-phases %standard-phases (add-before 'configure 'force-system-xxhash (lambda _ - (substitute* "lib/common.h" + (substitute* "lib/lib.h" (("#include \"../third-party/xxhash/xxhash.h\"") "#include <xxhash.h>")))) (add-before 'configure 'fix-compiler-name-in-test diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 34fbcf58ad..d7efbd993b 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -4390,7 +4390,7 @@ using the beets FetchArt plugin.") (define-public milkytracker (package (name "milkytracker") - (version "1.04.00") + (version "1.05.01") (source (origin (method git-fetch) (uri (git-reference @@ -4399,7 +4399,7 @@ using the beets FetchArt plugin.") (file-name (git-file-name name version)) (sha256 (base32 - "0zxaq69yb30wyw4dmx3hypzgyxsypp6i9qrv599jlbbbzhwjysqc")) + "138mgvxly769jfk5l7yjydfqa6lwsn87p2gmyqcxr3yhfvvp4lnz")) (modules '((guix build utils))) ;; Remove non-FSDG compliant sample songs. (snippet diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 80556eba8c..85a4e48e8e 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -151,6 +151,7 @@ #:use-module (gnu packages libusb) #:use-module (gnu packages linux) #:use-module (gnu packages logging) + #:use-module (gnu packages lxqt) #:use-module (gnu packages lua) #:use-module (gnu packages kerberos) #:use-module (gnu packages man) @@ -2168,18 +2169,17 @@ reusing frequently-requested web pages.") (base32 "1gpp2l3w479h1w5skjra5xy0gxd24kvmk6i4psbkafnv2399la4k")))) (build-system gnu-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'disable-premature-./configure - (lambda _ - (substitute* "autogen.sh" - (("\\$srcdir/configure") - "true")) - #t))))) + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'disable-premature-./configure + (lambda _ + (substitute* "autogen.sh" + (("\\$srcdir/configure") + "true"))))))) (native-inputs (list autoconf automake)) (inputs - (list ncurses)) + (list libstatgrab ncurses)) (synopsis "Console based live network and disk I/O bandwidth monitor") (description "Bandwidth Monitor NG is a small and simple console based live network and disk I/O bandwidth monitor.") diff --git a/gnu/packages/nicotine.scm b/gnu/packages/nicotine.scm index a34c4bcdc9..ff6676c4a1 100644 --- a/gnu/packages/nicotine.scm +++ b/gnu/packages/nicotine.scm @@ -36,7 +36,7 @@ (define-public nicotine+ (package (name "nicotine+") - (version "3.3.6") + (version "3.3.10") (source (origin (method git-fetch) @@ -45,7 +45,7 @@ (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1sblhfsyf34lsarjv8b83k20jqfpgcxa1iqbvab05xy52v5y3vcd")) + (base32 "0xj7hlhgirgjyfmdchksvwhjhaqaf5n84brzih6fqlbsrr9gxkw9")) (modules '((guix build utils))) ;; Remove test that relies on network access. (snippet '(delete-file-recursively diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index bcf9458624..5dbf62f519 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -2096,7 +2096,6 @@ the boot loader configuration.") (base32 "0ajbz8ms4h5nyjr59hv9z8vaimj4f3p51v8idmy14qnbmmjwa2nb")) (patches (search-patches "flatpak-fix-fonts-icons.patch" - "flatpak-fix-path.patch" "flatpak-fix-icon-validation.patch" "flatpak-unset-gdk-pixbuf-for-sandbox.patch")))) (build-system meson-build-system) @@ -2214,6 +2213,21 @@ cp -r /tmp/locale/*/en_US.*"))) libarchive libseccomp libxau)) + (native-search-paths + (list ;; Flatpak creates desktop files on its own. + ;; If those desktop files contain DBusActivatable=true, the application + ;; will be invoked by using dbus activation. But dbus activation + ;; doesn't use $PATH but rather does execve while the working directory + ;; is "/". That means, if the Exec entry contains just "flatpak", + ;; that won't be ever found. + ;; When flatpak creates desktop files, it uses a path from + ;; $FLATPAK_BINARY if set. + ;; See <https://codeberg.org/guix/guix/issues/438>. + (search-path-specification + (variable "FLATPAK_BINARY") + (separator #f) + (files '("bin/flatpak")) + (file-type 'regular)))) (home-page "https://flatpak.org") (synopsis "System for building, distributing, and running sandboxed desktop applications") @@ -2460,14 +2474,14 @@ to specific versions of applications.") (name "gnome-packagekit") (version "43.0") (source (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.gnome.org/GNOME/gnome-packagekit.git") - (commit version))) - (file-name (git-file-name name version)) + (method url-fetch) + (uri + (string-append "mirror://gnome/sources/" name "/" + (version-major version) "/" + name "-" version ".tar.xz")) (sha256 (base32 - "1fnspk8wfh3v663qpqq3m1fgp21nskgisidihx41wgcsbzbvp1a5")))) + "15giqmk8w375kkyzmwzfc9xnyafqzp86ncbh5zmb48x9aak5b96d")))) (build-system meson-build-system) (arguments (list #:configure-flags @@ -2481,13 +2495,14 @@ to specific versions of applications.") (add-before 'install 'setenv (lambda _ ;; Prevent gtk-update-icon-cache, glib-compile-schemas, - ;; update-desktop-database - ;; (since we are doing it ourselves with a profile hook). - (setenv "DESTDIR" "/")))))) + ;; update-desktop-database (since we are doing it ourselves with + ;; glib-or-gtk phases). + (setenv "DESTDIR" "/")))) + #:glib-or-gtk? #t)) (native-inputs - (list gnu-gettext pkg-config (list glib "bin") xorg-server-for-tests)) + (list gettext-minimal pkg-config (list glib "bin") xorg-server-for-tests)) (inputs - (list glib gtk+ packagekit polkit)) + (list glib gtk+ packagekit)) (synopsis "GNOME frontend for PackageKit") (description "This package provides a PackageKit frontend for GNOME. PackageKit is a common unified interface for package managers.") diff --git a/gnu/packages/patches/calibre-remove-test-import-modules.patch b/gnu/packages/patches/calibre-remove-test-import-modules.patch new file mode 100644 index 0000000000..951c44b85a --- /dev/null +++ b/gnu/packages/patches/calibre-remove-test-import-modules.patch @@ -0,0 +1,40 @@ +diff --git a/src/calibre/utils/run_tests.py b/src/calibre/utils/run_tests.py +--- a/src/calibre/utils/run_tests.py ++++ b/src/calibre/utils/run_tests.py +@@ -175,36 +175,6 @@ + count += 1 + return count + +- def test_import_of_all_python_modules(self): +- from calibre.constants import isbsd, islinux, ismacos, iswindows +- exclude_packages = {'calibre.devices.mtp.unix.upstream'} +- exclude_modules = set() +- if not iswindows: +- exclude_modules |= {'calibre.utils.iphlpapi', 'calibre.utils.open_with.windows', 'calibre.devices.winusb'} +- exclude_packages |= {'calibre.utils.winreg', 'calibre.utils.windows'} +- if not ismacos: +- exclude_modules.add('calibre.utils.open_with.osx') +- if not islinux: +- exclude_modules |= { +- 'calibre.linux', 'calibre.gui2.tts.speechd', +- 'calibre.utils.linux_trash', 'calibre.utils.open_with.linux', +- 'calibre.gui2.linux_file_dialogs', +- } +- if 'SKIP_SPEECH_TESTS' in os.environ: +- exclude_packages.add('calibre.gui2.tts') +- if not isbsd: +- exclude_modules.add('calibre.devices.usbms.hal') +- d = os.path.dirname +- SRC = d(d(d(os.path.abspath(__file__)))) +- self.assertGreater(self.base_check(os.path.join(SRC, 'odf'), exclude_packages, exclude_modules), 10) +- base = os.path.join(SRC, 'calibre') +- self.assertGreater(self.base_check(base, exclude_packages, exclude_modules), 1000) +- +- import calibre.web.feeds.feedparser as f +- del f +- from calibre.ebooks.markdown import Markdown +- del Markdown +- + + def find_tests(which_tests=None, exclude_tests=None): + from calibre.constants import iswindows diff --git a/gnu/packages/patches/flatpak-fix-path.patch b/gnu/packages/patches/flatpak-fix-path.patch deleted file mode 100644 index e87a08a7fe..0000000000 --- a/gnu/packages/patches/flatpak-fix-path.patch +++ /dev/null @@ -1,29 +0,0 @@ -Flatpak writes files for installed applications with the full Flatpak (store) path. This patch makes it write just "flatpak", using Flatpak from PATH. This is similar to the NixOS [0] patch, updated for Flatpak 1.12.1 - -[0] https://github.com/NixOS/nixpkgs/blob/bf4167861d0f864b0fc457778d54feb4a2675ea2/pkgs/development/libraries/flatpak/use-flatpak-from-path.patch - -diff --git a/common/flatpak-dir.c b/common/flatpak-dir.c -index 80ff5e5f..0c111c31 100644 ---- a/common/flatpak-dir.c -+++ b/common/flatpak-dir.c -@@ -7134,8 +7134,7 @@ export_desktop_file (const char *app, - flatpak = FLATPAK_BINDIR "/flatpak"; - - g_string_append_printf (new_exec, -- "%s run --branch=%s --arch=%s", -- flatpak, -+ "flatpak run --branch=%s --arch=%s", - escaped_branch, - escaped_arch); - -@@ -8467,8 +8466,8 @@ flatpak_dir_deploy (FlatpakDir *self, - if ((flatpak = g_getenv ("FLATPAK_BINARY")) == NULL) - flatpak = FLATPAK_BINDIR "/flatpak"; - -- bin_data = g_strdup_printf ("#!/bin/sh\nexec %s run --branch=%s --arch=%s %s \"$@\"\n", -- flatpak, escaped_branch, escaped_arch, escaped_app); -+ bin_data = g_strdup_printf ("#!/bin/sh\nexec flatpak run --branch=%s --arch=%s %s \"$@\"\n", -+ escaped_branch, escaped_arch, escaped_app); - if (!g_file_replace_contents (wrapper, bin_data, strlen (bin_data), NULL, FALSE, - G_FILE_CREATE_REPLACE_DESTINATION, NULL, cancellable, error)) - return FALSE; diff --git a/gnu/packages/patches/scalapack-gcc-10-compilation.patch b/gnu/packages/patches/scalapack-gcc-10-compilation.patch deleted file mode 100644 index cd6fb61cdf..0000000000 --- a/gnu/packages/patches/scalapack-gcc-10-compilation.patch +++ /dev/null @@ -1,5684 +0,0 @@ -Fix Scalapack compilation with GCC 10+. - -Patches from <https://github.com/Reference-ScaLAPACK/scalapack/pull/26>. - -From 9c909f06cf51a3d00252323ce52aba46cc64ab41 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Tiziano=20M=C3=BCller?= <tiziano.mueller@chem.uzh.ch> -Date: Thu, 25 Jun 2020 18:36:46 +0200 -Subject: [PATCH] fix argument mismatches in the SRC - ---- - SRC/pclarf.f | 80 +++++++++++++++++----------------- - SRC/pclarfc.f | 88 ++++++++++++++++++------------------- - SRC/pclarz.f | 111 ++++++++++++++++++++++++----------------------- - SRC/pclarzc.f | 115 +++++++++++++++++++++++++------------------------ - SRC/pclattrs.f | 55 +++++++++++------------ - SRC/pclawil.f | 53 +++++++++++------------ - SRC/pctrevc.f | 20 +++++---- - SRC/pdhseqr.f | 36 ++++++++-------- - SRC/pdlacon.f | 36 ++++++++-------- - SRC/pdlarf.f | 80 +++++++++++++++++----------------- - SRC/pdlarz.f | 100 +++++++++++++++++++++--------------------- - SRC/pdlawil.f | 48 ++++++++++----------- - SRC/pdstebz.f | 20 ++++----- - SRC/pdtrord.f | 43 +++++++++++------- - SRC/pdtrsen.f | 24 ++++++----- - SRC/pshseqr.f | 36 ++++++++-------- - SRC/pslacon.f | 36 +++++++++------- - SRC/pslarf.f | 80 +++++++++++++++++----------------- - SRC/pslarz.f | 100 +++++++++++++++++++++--------------------- - SRC/pslawil.f | 50 +++++++++++---------- - SRC/psstebz.f | 20 ++++----- - SRC/pstrord.f | 45 +++++++++++-------- - SRC/pstrsen.f | 22 ++++++---- - SRC/pzlarf.f | 80 +++++++++++++++++----------------- - SRC/pzlarfc.f | 88 ++++++++++++++++++------------------- - SRC/pzlarz.f | 103 +++++++++++++++++++++---------------------- - SRC/pzlarzc.f | 111 ++++++++++++++++++++++++----------------------- - SRC/pzlattrs.f | 55 +++++++++++------------ - SRC/pzlawil.f | 49 +++++++++++---------- - SRC/pztrevc.f | 20 +++++---- - 30 files changed, 927 insertions(+), 877 deletions(-) - -diff --git a/SRC/pclarf.f b/SRC/pclarf.f -index f941e46..371f710 100644 ---- a/SRC/pclarf.f -+++ b/SRC/pclarf.f -@@ -242,7 +242,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - $ IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC, - $ LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW, - $ NQ, RDEST -- COMPLEX TAULOC -+ COMPLEX TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, CCOPY, CGEBR2D, CGEBS2D, -@@ -336,7 +336,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -345,7 +345,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -363,8 +363,8 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -379,9 +379,9 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - IF( MYCOL.EQ.ICCOL ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -398,7 +398,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, V( IOFFV ), 1, -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1, - $ WORK, 1, C( IOFFC ), LDC ) - END IF - * -@@ -421,9 +421,9 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - IPW = MP+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -441,7 +441,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK, 1, -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * -@@ -471,7 +471,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -480,7 +480,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -500,8 +500,8 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -516,18 +516,18 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - WORK(IPW) = TAU( JJV ) - CALL CGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MP+1 - CALL CGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -547,8 +547,8 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -577,9 +577,9 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - IF( MYROW.EQ.ICROW ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -597,7 +597,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFV.GT.0 .AND. IOFFC.GT.0 ) -- $ CALL CGERC( MP, NQ, -TAULOC, WORK, 1, -+ $ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC ), - $ LDC ) - END IF -@@ -621,9 +621,9 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - IPW = NQ+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -641,8 +641,8 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -667,7 +667,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -676,7 +676,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -694,8 +694,8 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -720,18 +720,18 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - WORK(IPW) = TAU( IIV ) - CALL CGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQ+1 - CALL CGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -750,8 +750,8 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFC.GT.0 ) -- $ CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ $ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -770,7 +770,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -779,7 +779,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -797,8 +797,8 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -diff --git a/SRC/pclarfc.f b/SRC/pclarfc.f -index d6a2d3b..f84c493 100644 ---- a/SRC/pclarfc.f -+++ b/SRC/pclarfc.f -@@ -242,7 +242,7 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - $ IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC, - $ LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW, - $ NQ, RDEST -- COMPLEX TAULOC -+ COMPLEX TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, CCOPY, CGEBR2D, CGEBS2D, -@@ -336,17 +336,17 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * - ELSE - * - CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAULOC, 1, IVROW, MYCOL ) -- TAULOC = CONJG( TAULOC ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -364,8 +364,8 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -380,9 +380,9 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - IF( MYCOL.EQ.ICCOL ) THEN - * -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -399,7 +399,7 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, V( IOFFV ), 1, -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1, - $ WORK, 1, C( IOFFC ), LDC ) - END IF - * -@@ -422,9 +422,9 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - IPW = MP+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -442,7 +442,7 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK, 1, -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * -@@ -472,17 +472,17 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * - ELSE - * - CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, TAULOC, - $ 1, IVROW, MYCOL ) -- TAULOC = CONJG( TAULOC ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -500,8 +500,8 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), 1, -- $ C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -516,18 +516,18 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - WORK(IPW) = TAU( JJV ) - CALL CGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * - ELSE - * - IPW = MP+1 - CALL CGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -545,8 +545,8 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), 1, -- $ C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -575,9 +575,9 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - IF( MYROW.EQ.ICROW ) THEN - * -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -594,7 +594,7 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK, 1, -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC ), LDC ) - END IF - * -@@ -617,9 +617,9 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - IPW = NQ+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -637,8 +637,8 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -663,17 +663,17 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * - ELSE - * - CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, - $ 1, MYROW, IVCOL ) -- TAULOC = CONJG( TAULOC ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -691,8 +691,8 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -716,18 +716,18 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - WORK(IPW) = TAU( IIV ) - CALL CGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * - ELSE - * - IPW = NQ+1 - CALL CGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -745,8 +745,8 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -765,17 +765,17 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * - ELSE - * - CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, 1, - $ MYROW, IVCOL ) -- TAULOC = CONJG( TAULOC ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -793,8 +793,8 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -diff --git a/SRC/pclarz.f b/SRC/pclarz.f -index 9ba730c..673860a 100644 ---- a/SRC/pclarz.f -+++ b/SRC/pclarz.f -@@ -251,7 +251,7 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2, - $ MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW, - $ NQC2, NQV, RDEST -- COMPLEX TAULOC -+ COMPLEX TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, CAXPY, CCOPY, CGEBR2D, -@@ -370,7 +370,7 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -379,7 +379,7 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -402,9 +402,9 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -420,9 +420,9 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - IF( MYCOL.EQ.ICCOL2 ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -445,11 +445,11 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK, -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK, - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, V( IOFFV ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -471,9 +471,9 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - IPW = MPV+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -496,10 +496,10 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -530,16 +530,16 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -- CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, TAULOC, -- $ 1, IVROW, MYCOL ) -+ CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, -+ $ TAULOC( 1 ), 1, IVROW, MYCOL ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -562,10 +562,10 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -580,18 +580,18 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - WORK( IPW ) = TAU( JJV ) - CALL CGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MPV+1 - CALL CGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -614,10 +614,10 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -646,9 +646,9 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - IF( MYROW.EQ.ICROW2 ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -669,13 +669,13 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ ICCOL2 ) - * - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK, 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK, 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * - IF( MPC2.GT.0 .AND. NQV.GT.0 ) -- $ CALL CGERC( MPC2, NQV, -TAULOC, WORK, 1, -+ $ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC2 ), - $ LDC ) - END IF -@@ -699,9 +699,9 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - IPW = NQV+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -720,13 +720,14 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), - $ RDEST, ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -- $ C( IOFFC1 ), 1 ) -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), -+ $ WORK( IPW ), 1, WORK, 1, -+ $ C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -751,16 +752,16 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -- CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, -- $ 1, MYROW, IVCOL ) -+ CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, -+ $ TAULOC( 1 ), 1, MYROW, IVCOL ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -779,13 +780,13 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -809,18 +810,18 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - WORK( IPW ) = TAU( IIV ) - CALL CGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQV+1 - CALL CGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -840,13 +841,13 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -865,7 +866,7 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -874,7 +875,7 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -893,13 +894,13 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -diff --git a/SRC/pclarzc.f b/SRC/pclarzc.f -index f1bc21e..b6d3b6d 100644 ---- a/SRC/pclarzc.f -+++ b/SRC/pclarzc.f -@@ -251,7 +251,7 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2, - $ MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW, - $ NQC2, NQV, RDEST -- COMPLEX TAULOC -+ COMPLEX TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, CAXPY, CCOPY, CGEBR2D, -@@ -370,17 +370,17 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * - ELSE - * - CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAULOC, 1, IVROW, MYCOL ) -- TAULOC = CONJG( TAULOC ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -403,9 +403,9 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -421,9 +421,9 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - IF( MYCOL.EQ.ICCOL2 ) THEN - * -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -446,11 +446,11 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK, -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK, - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, V( IOFFV ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -472,9 +472,9 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - IPW = MPV+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -497,10 +497,10 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -531,17 +531,17 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * - ELSE - * - CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, TAULOC, - $ 1, IVROW, MYCOL ) -- TAULOC = CONJG( TAULOC ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -564,10 +564,10 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -582,18 +582,18 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - WORK( IPW ) = TAU( JJV ) - CALL CGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * - ELSE - * - IPW = MPV+1 - CALL CGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -616,10 +616,10 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL CAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -648,9 +648,9 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - IF( MYROW.EQ.ICROW2 ) THEN - * -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -671,12 +671,12 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ ICCOL2 ) - * - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK, 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK, 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK, 1, -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC2 ), LDC ) - END IF - * -@@ -699,9 +699,9 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - IPW = NQV+1 - CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -720,13 +720,14 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), - $ RDEST, ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -- $ C( IOFFC1 ), 1 ) -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), -+ $ WORK( IPW ), 1, WORK, 1, -+ $ C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -751,17 +752,17 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * - ELSE - * - CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, - $ 1, MYROW, IVCOL ) -- TAULOC = CONJG( TAULOC ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -780,13 +781,13 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -810,18 +811,18 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - WORK( IPW ) = TAU( IIV ) - CALL CGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = CONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = CONJG( TAU( IIV ) ) - * - ELSE - * - IPW = NQV+1 - CALL CGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = CONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = CONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -841,13 +842,13 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -866,17 +867,17 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = CONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = CONJG( TAU( JJV ) ) - * - ELSE - * -- CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, 1, -- $ MYROW, IVCOL ) -- TAULOC = CONJG( TAULOC ) -+ CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, -+ $ TAULOC( 1 ), 1, MYROW, IVCOL ) -+ TAULOC( 1 ) = CONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -895,13 +896,13 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -diff --git a/SRC/pclattrs.f b/SRC/pclattrs.f -index c744aea..0d12a8b 100644 ---- a/SRC/pclattrs.f -+++ b/SRC/pclattrs.f -@@ -271,7 +271,8 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - $ JINC, JLAST, LDA, LDX, MB, MYCOL, MYROW, NB, - $ NPCOL, NPROW, RSRC - REAL BIGNUM, GROW, REC, SMLNUM, TJJ, TMAX, TSCAL, -- $ XBND, XJ, XMAX -+ $ XBND, XJ -+ REAL XMAX( 1 ) - COMPLEX CSUMJ, TJJS, USCAL, XJTMP, ZDUM - * .. - * .. External Functions .. -@@ -391,11 +392,11 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - * Compute a bound on the computed solution vector to see if the - * Level 2 PBLAS routine PCTRSV can be used. - * -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - CALL PCAMAX( N, ZDUM, IMAX, X, IX, JX, DESCX, 1 ) -- XMAX = CABS2( ZDUM ) -+ XMAX( 1 ) = CABS2( ZDUM ) - CALL SGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1, -1, -1 ) -- XBND = XMAX -+ XBND = XMAX( 1 ) - * - IF( NOTRAN ) THEN - * -@@ -590,16 +591,16 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - * - * Use a Level 1 PBLAS solve, scaling intermediate results. - * -- IF( XMAX.GT.BIGNUM*HALF ) THEN -+ IF( XMAX( 1 ).GT.BIGNUM*HALF ) THEN - * - * Scale X so that its components are less than or equal to - * BIGNUM in absolute value. - * -- SCALE = ( BIGNUM*HALF ) / XMAX -+ SCALE = ( BIGNUM*HALF ) / XMAX( 1 ) - CALL PCSSCAL( N, SCALE, X, IX, JX, DESCX, 1 ) -- XMAX = BIGNUM -+ XMAX( 1 ) = BIGNUM - ELSE -- XMAX = XMAX*TWO -+ XMAX( 1 ) = XMAX( 1 )*TWO - END IF - * - IF( NOTRAN ) THEN -@@ -651,7 +652,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * X( J ) = CLADIV( X( J ), TJJS ) -@@ -682,7 +683,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - * X( J ) = CLADIV( X( J ), TJJS ) - * XJ = CABS1( X( J ) ) -@@ -706,7 +707,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - XJTMP = CONE - XJ = ONE - SCALE = ZERO -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - END IF - 90 CONTINUE - * -@@ -715,7 +716,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - * - IF( XJ.GT.ONE ) THEN - REC = ONE / XJ -- IF( CNORM( J ).GT.( BIGNUM-XMAX )*REC ) THEN -+ IF( CNORM( J ).GT.( BIGNUM-XMAX( 1 ) )*REC ) THEN - * - * Scale x by 1/(2*abs(x(j))). - * -@@ -724,7 +725,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - XJTMP = XJTMP*REC - SCALE = SCALE*REC - END IF -- ELSE IF( XJ*CNORM( J ).GT.( BIGNUM-XMAX ) ) THEN -+ ELSE IF( XJ*CNORM( J ).GT.( BIGNUM-XMAX( 1 ) ) ) THEN - * - * Scale x by 1/2. - * -@@ -743,7 +744,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PCAXPY( J-1, ZDUM, A, IA, JA+J-1, DESCA, 1, X, - $ IX, JX, DESCX, 1 ) - CALL PCAMAX( J-1, ZDUM, IMAX, X, IX, JX, DESCX, 1 ) -- XMAX = CABS1( ZDUM ) -+ XMAX( 1 ) = CABS1( ZDUM ) - CALL SGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1, - $ -1, -1 ) - END IF -@@ -757,7 +758,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PCAXPY( N-J, ZDUM, A, IA+J, JA+J-1, DESCA, 1, - $ X, IX+J, JX, DESCX, 1 ) - CALL PCAMAX( N-J, ZDUM, I, X, IX+J, JX, DESCX, 1 ) -- XMAX = CABS1( ZDUM ) -+ XMAX( 1 ) = CABS1( ZDUM ) - CALL SGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1, - $ -1, -1 ) - END IF -@@ -785,7 +786,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - END IF - XJ = CABS1( XJTMP ) - USCAL = CMPLX( TSCAL ) -- REC = ONE / MAX( XMAX, ONE ) -+ REC = ONE / MAX( XMAX( 1 ), ONE ) - IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN - * - * If x(j) could overflow, scale x by 1/(2*XMAX). -@@ -820,7 +821,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * -@@ -924,7 +925,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * X( J ) = CLADIV( X( J ), TJJS ) -@@ -945,7 +946,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - * X( J ) = CLADIV( X( J ), TJJS ) - XJTMP = CLADIV( XJTMP, TJJS ) -@@ -966,7 +967,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - END IF - XJTMP = CONE - SCALE = ZERO -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - END IF - 110 CONTINUE - ELSE -@@ -981,7 +982,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - X( IROWX ) = XJTMP - END IF - END IF -- XMAX = MAX( XMAX, CABS1( XJTMP ) ) -+ XMAX( 1 ) = MAX( XMAX( 1 ), CABS1( XJTMP ) ) - 120 CONTINUE - * - ELSE -@@ -1004,7 +1005,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - END IF - XJ = CABS1( XJTMP ) - USCAL = TSCAL -- REC = ONE / MAX( XMAX, ONE ) -+ REC = ONE / MAX( XMAX( 1 ), ONE ) - IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN - * - * If x(j) could overflow, scale x by 1/(2*XMAX). -@@ -1039,7 +1040,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * -@@ -1145,7 +1146,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * X( J ) = CLADIV( X( J ), TJJS ) -@@ -1164,7 +1165,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - * X( J ) = CLADIV( X( J ), TJJS ) - XJTMP = CLADIV( XJTMP, TJJS ) -@@ -1181,7 +1182,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - $ X( IROWX ) = CONE - XJTMP = CONE - SCALE = ZERO -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - END IF - 130 CONTINUE - ELSE -@@ -1194,7 +1195,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - IF( ( MYROW.EQ.ITMP1X ) .AND. ( MYCOL.EQ.ITMP2X ) ) - $ X( IROWX ) = XJTMP - END IF -- XMAX = MAX( XMAX, CABS1( XJTMP ) ) -+ XMAX( 1 ) = MAX( XMAX( 1 ), CABS1( XJTMP ) ) - 140 CONTINUE - END IF - SCALE = SCALE / TSCAL -diff --git a/SRC/pclawil.f b/SRC/pclawil.f -index 24a49b9..b33b3b1 100644 ---- a/SRC/pclawil.f -+++ b/SRC/pclawil.f -@@ -124,11 +124,10 @@ SUBROUTINE PCLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - $ MODKM1, MYCOL, MYROW, NPCOL, NPROW, NUM, RIGHT, - $ RSRC, UP - REAL S -- COMPLEX CDUM, H11, H12, H21, H22, H33S, H44S, V1, V2, -- $ V3 -+ COMPLEX CDUM, H22, H33S, H44S, V1, V2 - * .. - * .. Local Arrays .. -- COMPLEX BUF( 4 ) -+ COMPLEX BUF( 4 ), V3( 1 ), H11( 1 ), H12( 1 ), H21( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, CGERV2D, CGESD2D -@@ -181,18 +180,18 @@ SUBROUTINE PCLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - IF( NPCOL.GT.1 ) THEN - CALL CGERV2D( CONTXT, 1, 1, V3, 1, MYROW, LEFT ) - ELSE -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - IF( NUM.GT.1 ) THEN - CALL CGERV2D( CONTXT, 4, 1, BUF, 4, UP, LEFT ) -- H11 = BUF( 1 ) -- H21 = BUF( 2 ) -- H12 = BUF( 3 ) -+ H11( 1 ) = BUF( 1 ) -+ H21( 1 ) = BUF( 2 ) -+ H12( 1 ) = BUF( 3 ) - H22 = BUF( 4 ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) - END IF - END IF -@@ -223,22 +222,22 @@ SUBROUTINE PCLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - CALL INFOG2L( M+2, M+2, DESCA, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, RSRC, JSRC ) - IF( NUM.GT.1 ) THEN -- CALL CGERV2D( CONTXT, 1, 1, H11, 1, UP, LEFT ) -+ CALL CGERV2D( CONTXT, 1, 1, H11( 1 ), 1, UP, LEFT ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) - END IF - IF( NPROW.GT.1 ) THEN - CALL CGERV2D( CONTXT, 1, 1, H12, 1, UP, MYCOL ) - ELSE -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - END IF - IF( NPCOL.GT.1 ) THEN -- CALL CGERV2D( CONTXT, 1, 1, H21, 1, MYROW, LEFT ) -+ CALL CGERV2D( CONTXT, 1, 1, H21( 1 ), 1, MYROW, LEFT ) - ELSE -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) - END IF - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - END IF - IF( ( MYROW.NE.II ) .OR. ( MYCOL.NE.JJ ) ) -@@ -247,24 +246,24 @@ SUBROUTINE PCLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - IF( MODKM1.GT.1 ) THEN - CALL INFOG2L( M+2, M+2, DESCA, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, RSRC, JSRC ) -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - * -- H44S = H44 - H11 -- H33S = H33 - H11 -- V1 = ( H33S*H44S-H43H34 ) / H21 + H12 -- V2 = H22 - H11 - H33S - H44S -- S = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 ) -+ H44S = H44 - H11( 1 ) -+ H33S = H33 - H11( 1 ) -+ V1 = ( H33S*H44S-H43H34 ) / H21( 1 ) + H12( 1 ) -+ V2 = H22 - H11( 1 ) - H33S - H44S -+ S = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3( 1 ) ) - V1 = V1 / S - V2 = V2 / S -- V3 = V3 / S -+ V3( 1 ) = V3( 1 ) / S - V( 1 ) = V1 - V( 2 ) = V2 -- V( 3 ) = V3 -+ V( 3 ) = V3( 1 ) - * - RETURN - * -diff --git a/SRC/pctrevc.f b/SRC/pctrevc.f -index d0a3043..bf6c52b 100644 ---- a/SRC/pctrevc.f -+++ b/SRC/pctrevc.f -@@ -218,11 +218,12 @@ SUBROUTINE PCTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL, - $ ITMP2, J, K, KI, LDT, LDVL, LDVR, LDW, MB, - $ MYCOL, MYROW, NB, NPCOL, NPROW, RSRC - REAL SELF -- REAL OVFL, REMAXD, SCALE, SMIN, SMLNUM, ULP, UNFL -+ REAL OVFL, REMAXD, SCALE, SMLNUM, ULP, UNFL - COMPLEX CDUM, REMAXC, SHIFT - * .. - * .. Local Arrays .. - INTEGER DESCW( DLEN_ ) -+ REAL SMIN( 1 ) - * .. - * .. External Functions .. - LOGICAL LSAME -@@ -355,13 +356,13 @@ SUBROUTINE PCTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL, - $ GO TO 70 - END IF - * -- SMIN = ZERO -+ SMIN( 1 ) = ZERO - SHIFT = CZERO - CALL INFOG2L( KI, KI, DESCT, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, ITMP1, ITMP2 ) - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - SHIFT = T( ( ICOL-1 )*LDT+IROW ) -- SMIN = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) -+ SMIN( 1 ) = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) - END IF - CALL SGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SMIN, 1, -1, -1 ) - CALL CGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SHIFT, 1, -1, -1 ) -@@ -396,8 +397,9 @@ SUBROUTINE PCTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL, - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - T( ( ICOL-1 )*LDT+IROW ) = T( ( ICOL-1 )*LDT+IROW ) - - $ SHIFT -- IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN ) THEN -- T( ( ICOL-1 )*LDT+IROW ) = CMPLX( SMIN ) -+ IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN( 1 ) ) -+ $ THEN -+ T( ( ICOL-1 )*LDT+IROW ) = CMPLX( SMIN( 1 ) ) - END IF - END IF - 50 CONTINUE -@@ -467,13 +469,13 @@ SUBROUTINE PCTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL, - $ GO TO 110 - END IF - * -- SMIN = ZERO -+ SMIN( 1 ) = ZERO - SHIFT = CZERO - CALL INFOG2L( KI, KI, DESCT, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, ITMP1, ITMP2 ) - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - SHIFT = T( ( ICOL-1 )*LDT+IROW ) -- SMIN = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) -+ SMIN( 1 ) = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) - END IF - CALL SGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SMIN, 1, -1, -1 ) - CALL CGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SHIFT, 1, -1, -1 ) -@@ -507,8 +509,8 @@ SUBROUTINE PCTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL, - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - T( ( ICOL-1 )*LDT+IROW ) = T( ( ICOL-1 )*LDT+IROW ) - - $ SHIFT -- IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN ) -- $ T( ( ICOL-1 )*LDT+IROW ) = CMPLX( SMIN ) -+ IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN( 1 ) ) -+ $ T( ( ICOL-1 )*LDT+IROW ) = CMPLX( SMIN( 1 ) ) - END IF - 90 CONTINUE - * -diff --git a/SRC/pdhseqr.f b/SRC/pdhseqr.f -index ffc3652..6e0f751 100644 ---- a/SRC/pdhseqr.f -+++ b/SRC/pdhseqr.f -@@ -259,11 +259,12 @@ SUBROUTINE PDHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z, - $ HRSRC4, HCSRC4, LIWKOPT - LOGICAL INITZ, LQUERY, WANTT, WANTZ, PAIR, BORDER - DOUBLE PRECISION TMP1, TMP2, TMP3, TMP4, DUM1, DUM2, DUM3, -- $ DUM4, ELEM1, ELEM2, ELEM3, ELEM4, -+ $ DUM4, ELEM1, ELEM4, - $ CS, SN, ELEM5, TMP, LWKOPT - * .. - * .. Local Arrays .. - INTEGER DESCH2( DLEN_ ) -+ DOUBLE PRECISION ELEM2( 1 ), ELEM3( 1 ) - * .. - * .. External Functions .. - INTEGER PILAENVX, NUMROC, ICEIL -@@ -566,28 +567,28 @@ SUBROUTINE PDHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z, - IF( MYROW.EQ.HRSRC1 .AND. MYCOL.EQ.HCSRC1 ) THEN - ELEM1 = H((JLOC1-1)*LLDH+ILOC1) - IF( K.LT.N ) THEN -- ELEM3 = H((JLOC1-1)*LLDH+ILOC1+1) -+ ELEM3( 1 ) = H((JLOC1-1)*LLDH+ILOC1+1) - ELSE -- ELEM3 = ZERO -+ ELEM3( 1 ) = ZERO - END IF -- IF( ELEM3.NE.ZERO ) THEN -- ELEM2 = H((JLOC1)*LLDH+ILOC1) -+ IF( ELEM3( 1 ).NE.ZERO ) THEN -+ ELEM2( 1 ) = H((JLOC1)*LLDH+ILOC1) - ELEM4 = H((JLOC1)*LLDH+ILOC1+1) -- CALL DLANV2( ELEM1, ELEM2, ELEM3, ELEM4, -- $ WR( K ), WI( K ), WR( K+1 ), WI( K+1 ), -- $ SN, CS ) -+ CALL DLANV2( ELEM1, ELEM2( 1 ), ELEM3( 1 ), -+ $ ELEM4, WR( K ), WI( K ), WR( K+1 ), -+ $ WI( K+1 ), SN, CS ) - PAIR = .TRUE. - ELSE - IF( K.GT.1 ) THEN - TMP = H((JLOC1-2)*LLDH+ILOC1) - IF( TMP.NE.ZERO ) THEN - ELEM1 = H((JLOC1-2)*LLDH+ILOC1-1) -- ELEM2 = H((JLOC1-1)*LLDH+ILOC1-1) -- ELEM3 = H((JLOC1-2)*LLDH+ILOC1) -+ ELEM2( 1 ) = H((JLOC1-1)*LLDH+ILOC1-1) -+ ELEM3( 1 ) = H((JLOC1-2)*LLDH+ILOC1) - ELEM4 = H((JLOC1-1)*LLDH+ILOC1) -- CALL DLANV2( ELEM1, ELEM2, ELEM3, -- $ ELEM4, WR( K-1 ), WI( K-1 ), -- $ WR( K ), WI( K ), SN, CS ) -+ CALL DLANV2( ELEM1, ELEM2( 1 ), -+ $ ELEM3( 1 ), ELEM4, WR( K-1 ), -+ $ WI( K-1 ), WR( K ), WI( K ), SN, CS ) - ELSE - WR( K ) = ELEM1 - END IF -@@ -620,12 +621,12 @@ SUBROUTINE PDHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z, - CALL INFOG2L( K+1, K+1, DESCH, NPROW, NPCOL, MYROW, MYCOL, - $ ILOC4, JLOC4, HRSRC4, HCSRC4 ) - IF( MYROW.EQ.HRSRC2 .AND. MYCOL.EQ.HCSRC2 ) THEN -- ELEM2 = H((JLOC2-1)*LLDH+ILOC2) -+ ELEM2( 1 ) = H((JLOC2-1)*LLDH+ILOC2) - IF( HRSRC1.NE.HRSRC2 .OR. HCSRC1.NE.HCSRC2 ) - $ CALL DGESD2D( ICTXT, 1, 1, ELEM2, 1, HRSRC1, HCSRC1) - END IF - IF( MYROW.EQ.HRSRC3 .AND. MYCOL.EQ.HCSRC3 ) THEN -- ELEM3 = H((JLOC3-1)*LLDH+ILOC3) -+ ELEM3( 1 ) = H((JLOC3-1)*LLDH+ILOC3) - IF( HRSRC1.NE.HRSRC3 .OR. HCSRC1.NE.HCSRC3 ) - $ CALL DGESD2D( ICTXT, 1, 1, ELEM3, 1, HRSRC1, HCSRC1) - END IF -@@ -651,8 +652,9 @@ SUBROUTINE PDHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z, - ELEM5 = WORK(2) - IF( ELEM5.EQ.ZERO ) THEN - IF( WR( K ).EQ.ZERO .AND. WI( K ).EQ.ZERO ) THEN -- CALL DLANV2( ELEM1, ELEM2, ELEM3, ELEM4, WR( K ), -- $ WI( K ), WR( K+1 ), WI( K+1 ), SN, CS ) -+ CALL DLANV2( ELEM1, ELEM2( 1 ), ELEM3( 1 ), ELEM4, -+ $ WR( K ), WI( K ), WR( K+1 ), WI( K+1 ), SN, -+ $ CS ) - ELSEIF( WR( K+1 ).EQ.ZERO .AND. WI( K+1 ).EQ.ZERO ) - $ THEN - WR( K+1 ) = ELEM4 -diff --git a/SRC/pdlacon.f b/SRC/pdlacon.f -index b625d97..74b9eab 100644 ---- a/SRC/pdlacon.f -+++ b/SRC/pdlacon.f -@@ -160,10 +160,10 @@ SUBROUTINE PDLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN, - INTEGER I, ICTXT, IFLAG, IIVX, IMAXROW, IOFFVX, IROFF, - $ ITER, IVXCOL, IVXROW, J, JLAST, JJVX, JUMP, - $ K, MYCOL, MYROW, NP, NPCOL, NPROW -- DOUBLE PRECISION ALTSGN, ESTOLD, JLMAX, TEMP, XMAX -+ DOUBLE PRECISION ALTSGN, ESTOLD, JLMAX, XMAX - * .. - * .. Local Arrays .. -- DOUBLE PRECISION WORK( 2 ) -+ DOUBLE PRECISION ESTWORK( 1 ), TEMP( 1 ), WORK( 2 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, DCOPY, DGEBR2D, DGEBS2D, -@@ -184,6 +184,7 @@ SUBROUTINE PDLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN, - * - * Get grid parameters. - * -+ ESTWORK( 1 ) = EST - ICTXT = DESCX( CTXT_ ) - CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL ) - * -@@ -215,21 +216,21 @@ SUBROUTINE PDLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN, - IF( N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN - V( IOFFVX ) = X( IOFFVX ) -- EST = ABS( V( IOFFVX ) ) -- CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 ) -+ ESTWORK( 1 ) = ABS( V( IOFFVX ) ) -+ CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 ) - ELSE -- CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1, -+ CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1, - $ IVXROW, MYCOL ) - END IF - * ... QUIT - GO TO 150 - END IF -- CALL PDASUM( N, EST, X, IX, JX, DESCX, 1 ) -+ CALL PDASUM( N, ESTWORK( 1 ), X, IX, JX, DESCX, 1 ) - IF( DESCX( M_ ).EQ.1 .AND. N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN -- CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 ) -+ CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 ) - ELSE -- CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1, -+ CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1, - $ IVXROW, MYCOL ) - END IF - END IF -@@ -281,13 +282,13 @@ SUBROUTINE PDLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN, - * - 70 CONTINUE - CALL DCOPY( NP, X( IOFFVX ), 1, V( IOFFVX ), 1 ) -- ESTOLD = EST -- CALL PDASUM( N, EST, V, IV, JV, DESCV, 1 ) -+ ESTOLD = ESTWORK( 1 ) -+ CALL PDASUM( N, ESTWORK( 1 ), V, IV, JV, DESCV, 1 ) - IF( DESCV( M_ ).EQ.1 .AND. N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN -- CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 ) -+ CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 ) - ELSE -- CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1, -+ CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1, - $ IVXROW, MYCOL ) - END IF - END IF -@@ -305,7 +306,7 @@ SUBROUTINE PDLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN, - * REPEATED SIGN VECTOR DETECTED, HENCE ALGORITHM HAS CONVERGED. - * ALONG WITH IT, TEST FOR CYCLING. - * -- IF( IFLAG.EQ.0 .OR. EST.LE.ESTOLD ) -+ IF( IFLAG.EQ.0 .OR. ESTWORK( 1 ).LE.ESTOLD ) - $ GO TO 120 - * - DO 100 I = IOFFVX, IOFFVX+NP-1 -@@ -361,7 +362,7 @@ SUBROUTINE PDLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN, - * X HAS BEEN OVERWRITTEN BY A*X - * - 140 CONTINUE -- CALL PDASUM( N, TEMP, X, IX, JX, DESCX, 1 ) -+ CALL PDASUM( N, TEMP( 1 ), X, IX, JX, DESCX, 1 ) - IF( DESCX( M_ ).EQ.1 .AND. N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN - CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, TEMP, 1 ) -@@ -370,15 +371,16 @@ SUBROUTINE PDLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN, - $ IVXROW, MYCOL ) - END IF - END IF -- TEMP = TWO*( TEMP / DBLE( 3*N ) ) -- IF( TEMP.GT.EST ) THEN -+ TEMP( 1 ) = TWO*( TEMP( 1 ) / DBLE( 3*N ) ) -+ IF( TEMP( 1 ).GT.ESTWORK( 1 ) ) THEN - CALL DCOPY( NP, X( IOFFVX ), 1, V( IOFFVX ), 1 ) -- EST = TEMP -+ ESTWORK( 1 ) = TEMP( 1 ) - END IF - * - 150 CONTINUE - KASE = 0 - * -+ EST = ESTWORK( 1 ) - RETURN - * - * End of PDLACON -diff --git a/SRC/pdlarf.f b/SRC/pdlarf.f -index 29da1ac..41368d6 100644 ---- a/SRC/pdlarf.f -+++ b/SRC/pdlarf.f -@@ -241,7 +241,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - $ IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC, - $ LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW, - $ NQ, RDEST -- DOUBLE PRECISION TAULOC -+ DOUBLE PRECISION TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, DCOPY, DGEBR2D, DGEBS2D, -@@ -335,7 +335,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -344,7 +344,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -362,8 +362,8 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL DGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -378,9 +378,9 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - IF( MYCOL.EQ.ICCOL ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -397,8 +397,8 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL DGER( MP, NQ, -TAULOC, V( IOFFV ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL DGER( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -420,9 +420,9 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - IPW = MP+1 - CALL DGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -440,7 +440,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL DGER( MP, NQ, -TAULOC, WORK, 1, -+ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * -@@ -470,7 +470,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -479,7 +479,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -499,8 +499,8 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL DGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -515,18 +515,18 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - WORK(IPW) = TAU( JJV ) - CALL DGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MP+1 - CALL DGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -546,8 +546,8 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL DGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -576,9 +576,9 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - IF( MYROW.EQ.ICROW ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -596,7 +596,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFV.GT.0 .AND. IOFFC.GT.0 ) -- $ CALL DGER( MP, NQ, -TAULOC, WORK, 1, -+ $ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC ), LDC ) - END IF - * -@@ -619,9 +619,9 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - IPW = NQ+1 - CALL DGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -639,7 +639,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL DGER( MP, NQ, -TAULOC, WORK( IPW ), 1, -+ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, - $ WORK, 1, C( IOFFC ), LDC ) - END IF - * -@@ -665,7 +665,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL DGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -674,7 +674,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -692,8 +692,8 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL DGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -718,18 +718,18 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - WORK(IPW) = TAU( IIV ) - CALL DGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQ+1 - CALL DGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -748,8 +748,8 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFC.GT.0 ) -- $ CALL DGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ $ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -768,7 +768,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL DGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -777,7 +777,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -795,8 +795,8 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL DGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL DGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, WORK, -+ $ 1, C( IOFFC ), LDC ) - END IF - * - END IF -diff --git a/SRC/pdlarz.f b/SRC/pdlarz.f -index b91282c..f45c137 100644 ---- a/SRC/pdlarz.f -+++ b/SRC/pdlarz.f -@@ -250,7 +250,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2, - $ MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW, - $ NQC2, NQV, RDEST -- DOUBLE PRECISION TAULOC -+ DOUBLE PRECISION TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, DAXPY, DCOPY, DGEBR2D, -@@ -369,7 +369,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -378,7 +378,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -401,9 +401,9 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL DAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL DAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL DGER( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL DGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -419,9 +419,9 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - IF( MYCOL.EQ.ICCOL2 ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -444,11 +444,11 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL DAXPY( NQC2, -TAULOC, WORK, -+ $ CALL DAXPY( NQC2, -TAULOC( 1 ), WORK, - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL DGER( MPV, NQC2, -TAULOC, V( IOFFV ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL DGER( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -470,9 +470,9 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - IPW = MPV+1 - CALL DGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -495,10 +495,10 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL DAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL DAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL DGER( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL DGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -529,7 +529,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -538,7 +538,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -561,10 +561,10 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL DAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL DAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL DGER( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL DGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -579,18 +579,18 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - WORK( IPW ) = TAU( JJV ) - CALL DGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MPV+1 - CALL DGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -613,10 +613,10 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL DAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL DAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL DGER( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL DGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -645,9 +645,9 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - IF( MYROW.EQ.ICROW2 ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -668,13 +668,13 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ ICCOL2 ) - * - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL DAXPY( MPC2, -TAULOC, WORK, 1, -+ $ CALL DAXPY( MPC2, -TAULOC( 1 ), WORK, 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * - IF( MPC2.GT.0 .AND. NQV.GT.0 ) -- $ CALL DGER( MPC2, NQV, -TAULOC, WORK, 1, -+ $ CALL DGER( MPC2, NQV, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC2 ), - $ LDC ) - END IF -@@ -698,9 +698,9 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - IPW = NQV+1 - CALL DGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -719,13 +719,13 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), - $ RDEST, ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL DAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -- $ C( IOFFC1 ), 1 ) -+ $ CALL DAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL DGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL DGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -750,7 +750,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL DGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -759,7 +759,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -778,12 +778,12 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL DAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL DAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL DGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -+ CALL DGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, - $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -808,18 +808,18 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - WORK( IPW ) = TAU( IIV ) - CALL DGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQV+1 - CALL DGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -839,13 +839,13 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL DAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL DAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL DGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL DGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -864,7 +864,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL DGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -873,7 +873,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -892,13 +892,13 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL DAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL DAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL DGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL DGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -diff --git a/SRC/pdlawil.f b/SRC/pdlawil.f -index 90a4d74..e8bc3a0 100644 ---- a/SRC/pdlawil.f -+++ b/SRC/pdlawil.f -@@ -120,10 +120,10 @@ SUBROUTINE PDLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - INTEGER CONTXT, DOWN, HBL, ICOL, IROW, JSRC, LDA, LEFT, - $ MODKM1, MYCOL, MYROW, NPCOL, NPROW, NUM, RIGHT, - $ RSRC, UP -- DOUBLE PRECISION H11, H12, H21, H22, H33S, H44S, S, V1, V2, V3 -+ DOUBLE PRECISION H22, H33S, H44S, S, V1, V2 - * .. - * .. Local Arrays .. -- DOUBLE PRECISION BUF( 4 ) -+ DOUBLE PRECISION BUF( 4 ), H11( 1 ), H12( 1 ), H21( 1 ), V3( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, DGERV2D, DGESD2D, INFOG2L -@@ -170,18 +170,18 @@ SUBROUTINE PDLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - IF( NPCOL.GT.1 ) THEN - CALL DGERV2D( CONTXT, 1, 1, V3, 1, MYROW, LEFT ) - ELSE -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - IF( NUM.GT.1 ) THEN - CALL DGERV2D( CONTXT, 4, 1, BUF, 4, UP, LEFT ) -- H11 = BUF( 1 ) -- H21 = BUF( 2 ) -- H12 = BUF( 3 ) -+ H11( 1 ) = BUF( 1 ) -+ H21( 1 ) = BUF( 2 ) -+ H12( 1 ) = BUF( 3 ) - H22 = BUF( 4 ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) - END IF - END IF -@@ -214,20 +214,20 @@ SUBROUTINE PDLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - IF( NUM.GT.1 ) THEN - CALL DGERV2D( CONTXT, 1, 1, H11, 1, UP, LEFT ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) - END IF - IF( NPROW.GT.1 ) THEN - CALL DGERV2D( CONTXT, 1, 1, H12, 1, UP, MYCOL ) - ELSE -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - END IF - IF( NPCOL.GT.1 ) THEN - CALL DGERV2D( CONTXT, 1, 1, H21, 1, MYROW, LEFT ) - ELSE -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) - END IF - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - END IF - IF( ( MYROW.NE.II ) .OR. ( MYCOL.NE.JJ ) ) -@@ -236,24 +236,24 @@ SUBROUTINE PDLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - IF( MODKM1.GT.1 ) THEN - CALL INFOG2L( M+2, M+2, DESCA, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, RSRC, JSRC ) -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - * -- H44S = H44 - H11 -- H33S = H33 - H11 -- V1 = ( H33S*H44S-H43H34 ) / H21 + H12 -- V2 = H22 - H11 - H33S - H44S -- S = ABS( V1 ) + ABS( V2 ) + ABS( V3 ) -+ H44S = H44 - H11( 1 ) -+ H33S = H33 - H11( 1 ) -+ V1 = ( H33S*H44S-H43H34 ) / H21( 1 ) + H12( 1 ) -+ V2 = H22 - H11( 1 ) - H33S - H44S -+ S = ABS( V1 ) + ABS( V2 ) + ABS( V3( 1 ) ) - V1 = V1 / S - V2 = V2 / S -- V3 = V3 / S -+ V3( 1 ) = V3( 1 ) / S - V( 1 ) = V1 - V( 2 ) = V2 -- V( 3 ) = V3 -+ V( 3 ) = V3( 1 ) - * - RETURN - * -diff --git a/SRC/pdstebz.f b/SRC/pdstebz.f -index e7006f9..bf4dacc 100644 ---- a/SRC/pdstebz.f -+++ b/SRC/pdstebz.f -@@ -246,14 +246,14 @@ SUBROUTINE PDSTEBZ( ICTXT, RANGE, ORDER, N, VL, VU, IL, IU, - $ ITMP2, J, JB, K, LAST, LEXTRA, LREQ, MYCOL, - $ MYROW, NALPHA, NBETA, NCMP, NEIGINT, NEXT, NGL, - $ NGLOB, NGU, NINT, NPCOL, NPROW, OFFSET, -- $ ONEDCONTEXT, P, PREV, REXTRA, RREQ, SELF, -- $ TORECV -+ $ ONEDCONTEXT, P, PREV, REXTRA, RREQ, SELF - DOUBLE PRECISION ALPHA, ATOLI, BETA, BNORM, DRECV, DSEND, GL, - $ GU, INITVL, INITVU, LSAVE, MID, PIVMIN, RELTOL, - $ SAFEMN, TMP1, TMP2, TNORM, ULP - * .. - * .. Local Arrays .. - INTEGER IDUM( 5, 2 ) -+ INTEGER TORECV( 1, 1 ) - * .. - * .. Executable Statements .. - * This is just to keep ftnchek happy -@@ -784,14 +784,14 @@ SUBROUTINE PDSTEBZ( ICTXT, RANGE, ORDER, N, VL, VU, IL, IU, - ELSE - CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', 1, 1, TORECV, 1, 0, - $ I-1 ) -- IF( TORECV.NE.0 ) THEN -- CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, IWORK, -- $ TORECV, 0, I-1 ) -- CALL DGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, WORK, -- $ TORECV, 0, I-1 ) -- CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, -- $ IWORK( N+1 ), TORECV, 0, I-1 ) -- DO 120 J = 1, TORECV -+ IF( TORECV( 1, 1 ).NE.0 ) THEN -+ CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1, -+ $ IWORK, TORECV( 1, 1 ), 0, I-1 ) -+ CALL DGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1, -+ $ WORK, TORECV( 1, 1 ), 0, I-1 ) -+ CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1, -+ $ IWORK( N+1 ), TORECV( 1, 1 ), 0, I-1 ) -+ DO 120 J = 1, TORECV( 1, 1 ) - W( IWORK( J ) ) = WORK( J ) - IBLOCK( IWORK( J ) ) = IWORK( N+J ) - 120 CONTINUE -diff --git a/SRC/pdtrord.f b/SRC/pdtrord.f -index 1f37d8e..3870574 100644 ---- a/SRC/pdtrord.f -+++ b/SRC/pdtrord.f -@@ -328,12 +328,13 @@ SUBROUTINE PDTRORD( COMPQ, SELECT, PARA, N, T, IT, JT, - $ EAST, WEST, ILOC4, SOUTH, NORTH, INDXS, - $ ITT, JTT, ILEN, DLEN, INDXE, TRSRC1, TCSRC1, - $ TRSRC2, TCSRC2, ILOS, DIR, TLIHI, TLILO, TLSEL, -- $ ROUND, LAST, WIN0S, WIN0E, WINE, MMAX, MMIN -+ $ ROUND, LAST, WIN0S, WIN0E, WINE - DOUBLE PRECISION ELEM, ELEM1, ELEM2, ELEM3, ELEM4, SN, CS, TMP, - $ ELEM5 - * .. - * .. Local Arrays .. -- INTEGER IBUFF( 8 ), IDUM1( 1 ), IDUM2( 1 ) -+ INTEGER IBUFF( 8 ), IDUM1( 1 ), IDUM2( 1 ), MMAX( 1 ), -+ $ MMIN( 1 ), INFODUM( 1 ) - * .. - * .. External Functions .. - LOGICAL LSAME -@@ -483,16 +484,16 @@ SUBROUTINE PDTRORD( COMPQ, SELECT, PARA, N, T, IT, JT, - END IF - IF( SELECT(K).NE.0 ) M = M + 1 - 10 CONTINUE -- MMAX = M -- MMIN = M -+ MMAX( 1 ) = M -+ MMIN( 1 ) = M - IF( NPROCS.GT.1 ) - $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, MMAX, 1, -1, - $ -1, -1, -1, -1 ) - IF( NPROCS.GT.1 ) - $ CALL IGAMN2D( ICTXT, 'All', TOP, 1, 1, MMIN, 1, -1, - $ -1, -1, -1, -1 ) -- IF( MMAX.GT.MMIN ) THEN -- M = MMAX -+ IF( MMAX( 1 ).GT.MMIN( 1 ) ) THEN -+ M = MMAX( 1 ) - IF( NPROCS.GT.1 ) - $ CALL IGAMX2D( ICTXT, 'All', TOP, N, 1, SELECT, N, - $ -1, -1, -1, -1, -1 ) -@@ -520,9 +521,11 @@ SUBROUTINE PDTRORD( COMPQ, SELECT, PARA, N, T, IT, JT, - * - * Global maximum on info. - * -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, -1, -1, - $ -1, -1 ) -+ INFO = INFODUM( 1 ) -+ END IF - * - * Return if some argument is incorrect. - * -@@ -1576,9 +1579,11 @@ SUBROUTINE PDTRORD( COMPQ, SELECT, PARA, N, T, IT, JT, - * experienced a failure in the reordering. - * - MYIERR = IERR -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, IERR, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ IERR = INFODUM( 1 ) -+ END IF - * - IF( IERR.NE.0 ) THEN - * -@@ -1586,9 +1591,11 @@ SUBROUTINE PDTRORD( COMPQ, SELECT, PARA, N, T, IT, JT, - * to swap. - * - IF( MYIERR.NE.0 ) INFO = MAX(1,I+KKS-1) -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ INFO = INFODUM( 1 ) -+ END IF - GO TO 300 - END IF - * -@@ -3245,9 +3252,11 @@ SUBROUTINE PDTRORD( COMPQ, SELECT, PARA, N, T, IT, JT, - * experienced a failure in the reordering. - * - MYIERR = IERR -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, IERR, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ IERR = INFODUM( 1 ) -+ END IF - * - IF( IERR.NE.0 ) THEN - * -@@ -3255,9 +3264,11 @@ SUBROUTINE PDTRORD( COMPQ, SELECT, PARA, N, T, IT, JT, - * to swap. - * - IF( MYIERR.NE.0 ) INFO = MAX(1,I+KKS-1) -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ IERR = INFODUM( 1 ) -+ END IF - GO TO 300 - END IF - * -diff --git a/SRC/pdtrsen.f b/SRC/pdtrsen.f -index 78c5599..c65ea91 100644 ---- a/SRC/pdtrsen.f -+++ b/SRC/pdtrsen.f -@@ -354,13 +354,15 @@ SUBROUTINE PDTRSEN( JOB, COMPQ, SELECT, PARA, N, T, IT, JT, - LOGICAL LQUERY, WANTBH, WANTQ, WANTS, WANTSP - INTEGER ICOFFT12, ICTXT, IDUM1, IDUM2, IERR, ILOC1, - $ IPW1, ITER, ITT, JLOC1, JTT, K, LIWMIN, LLDT, -- $ LLDQ, LWMIN, MMAX, MMIN, MYROW, MYCOL, N1, N2, -+ $ LLDQ, LWMIN, MYROW, MYCOL, N1, N2, - $ NB, NOEXSY, NPCOL, NPROCS, NPROW, SPACE, - $ T12ROWS, T12COLS, TCOLS, TCSRC, TROWS, TRSRC, - $ WRK1, IWRK1, WRK2, IWRK2, WRK3, IWRK3 -- DOUBLE PRECISION DPDUM1, ELEM, EST, SCALE, RNORM -+ DOUBLE PRECISION ELEM, EST, SCALE, RNORM - * .. Local Arrays .. -- INTEGER DESCT12( DLEN_ ), MBNB2( 2 ) -+ INTEGER DESCT12( DLEN_ ), MBNB2( 2 ), MMAX( 1 ), -+ $ MMIN( 1 ) -+ DOUBLE PRECISION DPDUM1( 1 ) - * .. - * .. External Functions .. - LOGICAL LSAME -@@ -521,16 +523,16 @@ SUBROUTINE PDTRSEN( JOB, COMPQ, SELECT, PARA, N, T, IT, JT, - END IF - IF( SELECT(K) ) M = M + 1 - 10 CONTINUE -- MMAX = M -- MMIN = M -+ MMAX( 1 ) = M -+ MMIN( 1 ) = M - IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, MMAX, 1, -1, -- $ -1, -1, -1, -1 ) -+ $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, MMAX( 1 ), 1, -+ $ -1, -1, -1, -1, -1 ) - IF( NPROCS.GT.1 ) -- $ CALL IGAMN2D( ICTXT, 'All', TOP, 1, 1, MMIN, 1, -1, -- $ -1, -1, -1, -1 ) -- IF( MMAX.GT.MMIN ) THEN -- M = MMAX -+ $ CALL IGAMN2D( ICTXT, 'All', TOP, 1, 1, MMIN( 1 ), 1, -+ $ -1, -1, -1, -1, -1 ) -+ IF( MMAX( 1 ).GT.MMIN( 1 ) ) THEN -+ M = MMAX( 1 ) - IF( NPROCS.GT.1 ) - $ CALL IGAMX2D( ICTXT, 'All', TOP, N, 1, IWORK, N, - $ -1, -1, -1, -1, -1 ) -diff --git a/SRC/pshseqr.f b/SRC/pshseqr.f -index 10eb24a..e8ecea9 100644 ---- a/SRC/pshseqr.f -+++ b/SRC/pshseqr.f -@@ -259,11 +259,12 @@ SUBROUTINE PSHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z, - $ HRSRC4, HCSRC4, LIWKOPT - LOGICAL INITZ, LQUERY, WANTT, WANTZ, PAIR, BORDER - REAL TMP1, TMP2, TMP3, TMP4, DUM1, DUM2, DUM3, -- $ DUM4, ELEM1, ELEM2, ELEM3, ELEM4, -+ $ DUM4, ELEM1, ELEM4, - $ CS, SN, ELEM5, TMP, LWKOPT - * .. - * .. Local Arrays .. - INTEGER DESCH2( DLEN_ ) -+ REAL ELEM2( 1 ), ELEM3( 1 ) - * .. - * .. External Functions .. - INTEGER PILAENVX, NUMROC, ICEIL -@@ -566,28 +567,28 @@ SUBROUTINE PSHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z, - IF( MYROW.EQ.HRSRC1 .AND. MYCOL.EQ.HCSRC1 ) THEN - ELEM1 = H((JLOC1-1)*LLDH+ILOC1) - IF( K.LT.N ) THEN -- ELEM3 = H((JLOC1-1)*LLDH+ILOC1+1) -+ ELEM3( 1 ) = H((JLOC1-1)*LLDH+ILOC1+1) - ELSE -- ELEM3 = ZERO -+ ELEM3( 1 ) = ZERO - END IF -- IF( ELEM3.NE.ZERO ) THEN -- ELEM2 = H((JLOC1)*LLDH+ILOC1) -+ IF( ELEM3( 1 ).NE.ZERO ) THEN -+ ELEM2( 1 ) = H((JLOC1)*LLDH+ILOC1) - ELEM4 = H((JLOC1)*LLDH+ILOC1+1) -- CALL SLANV2( ELEM1, ELEM2, ELEM3, ELEM4, -- $ WR( K ), WI( K ), WR( K+1 ), WI( K+1 ), -- $ SN, CS ) -+ CALL SLANV2( ELEM1, ELEM2( 1 ), ELEM3( 1 ), -+ $ ELEM4, WR( K ), WI( K ), WR( K+1 ), -+ $ WI( K+1 ), SN, CS ) - PAIR = .TRUE. - ELSE - IF( K.GT.1 ) THEN - TMP = H((JLOC1-2)*LLDH+ILOC1) - IF( TMP.NE.ZERO ) THEN - ELEM1 = H((JLOC1-2)*LLDH+ILOC1-1) -- ELEM2 = H((JLOC1-1)*LLDH+ILOC1-1) -- ELEM3 = H((JLOC1-2)*LLDH+ILOC1) -+ ELEM2( 1 ) = H((JLOC1-1)*LLDH+ILOC1-1) -+ ELEM3( 1 ) = H((JLOC1-2)*LLDH+ILOC1) - ELEM4 = H((JLOC1-1)*LLDH+ILOC1) -- CALL SLANV2( ELEM1, ELEM2, ELEM3, -- $ ELEM4, WR( K-1 ), WI( K-1 ), -- $ WR( K ), WI( K ), SN, CS ) -+ CALL SLANV2( ELEM1, ELEM2( 1 ), -+ $ ELEM3( 1 ), ELEM4, WR( K-1 ), -+ $ WI( K-1 ), WR( K ), WI( K ), SN, CS ) - ELSE - WR( K ) = ELEM1 - END IF -@@ -620,12 +621,12 @@ SUBROUTINE PSHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z, - CALL INFOG2L( K+1, K+1, DESCH, NPROW, NPCOL, MYROW, MYCOL, - $ ILOC4, JLOC4, HRSRC4, HCSRC4 ) - IF( MYROW.EQ.HRSRC2 .AND. MYCOL.EQ.HCSRC2 ) THEN -- ELEM2 = H((JLOC2-1)*LLDH+ILOC2) -+ ELEM2( 1 ) = H((JLOC2-1)*LLDH+ILOC2) - IF( HRSRC1.NE.HRSRC2 .OR. HCSRC1.NE.HCSRC2 ) - $ CALL SGESD2D( ICTXT, 1, 1, ELEM2, 1, HRSRC1, HCSRC1) - END IF - IF( MYROW.EQ.HRSRC3 .AND. MYCOL.EQ.HCSRC3 ) THEN -- ELEM3 = H((JLOC3-1)*LLDH+ILOC3) -+ ELEM3( 1 ) = H((JLOC3-1)*LLDH+ILOC3) - IF( HRSRC1.NE.HRSRC3 .OR. HCSRC1.NE.HCSRC3 ) - $ CALL SGESD2D( ICTXT, 1, 1, ELEM3, 1, HRSRC1, HCSRC1) - END IF -@@ -651,8 +652,9 @@ SUBROUTINE PSHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z, - ELEM5 = WORK(2) - IF( ELEM5.EQ.ZERO ) THEN - IF( WR( K ).EQ.ZERO .AND. WI( K ).EQ.ZERO ) THEN -- CALL SLANV2( ELEM1, ELEM2, ELEM3, ELEM4, WR( K ), -- $ WI( K ), WR( K+1 ), WI( K+1 ), SN, CS ) -+ CALL SLANV2( ELEM1, ELEM2( 1 ), ELEM3( 1 ), ELEM4, -+ $ WR( K ), WI( K ), WR( K+1 ), WI( K+1 ), SN, -+ $ CS ) - ELSEIF( WR( K+1 ).EQ.ZERO .AND. WI( K+1 ).EQ.ZERO ) - $ THEN - WR( K+1 ) = ELEM4 -diff --git a/SRC/pslacon.f b/SRC/pslacon.f -index 20d27ff..673bf1a 100644 ---- a/SRC/pslacon.f -+++ b/SRC/pslacon.f -@@ -160,10 +160,12 @@ SUBROUTINE PSLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN, - INTEGER I, ICTXT, IFLAG, IIVX, IMAXROW, IOFFVX, IROFF, - $ ITER, IVXCOL, IVXROW, J, JLAST, JJVX, JUMP, - $ K, MYCOL, MYROW, NP, NPCOL, NPROW -- REAL ALTSGN, ESTOLD, JLMAX, TEMP, XMAX -+ REAL ALTSGN, ESTOLD, JLMAX, XMAX - * .. - * .. Local Arrays .. - REAL WORK( 2 ) -+ REAL ESTWORK( 1 ) -+ REAL TEMP( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, IGSUM2D, INFOG2L, PSAMAX, -@@ -184,6 +186,7 @@ SUBROUTINE PSLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN, - * - * Get grid parameters. - * -+ ESTWORK( 1 ) = EST - ICTXT = DESCX( CTXT_ ) - CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL ) - * -@@ -215,21 +218,21 @@ SUBROUTINE PSLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN, - IF( N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN - V( IOFFVX ) = X( IOFFVX ) -- EST = ABS( V( IOFFVX ) ) -- CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 ) -+ ESTWORK( 1 ) = ABS( V( IOFFVX ) ) -+ CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 ) - ELSE -- CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1, -+ CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1, - $ IVXROW, MYCOL ) - END IF - * ... QUIT - GO TO 150 - END IF -- CALL PSASUM( N, EST, X, IX, JX, DESCX, 1 ) -+ CALL PSASUM( N, ESTWORK( 1 ), X, IX, JX, DESCX, 1 ) - IF( DESCX( M_ ).EQ.1 .AND. N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN -- CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 ) -+ CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 ) - ELSE -- CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1, -+ CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1, - $ IVXROW, MYCOL ) - END IF - END IF -@@ -281,13 +284,13 @@ SUBROUTINE PSLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN, - * - 70 CONTINUE - CALL SCOPY( NP, X( IOFFVX ), 1, V( IOFFVX ), 1 ) -- ESTOLD = EST -- CALL PSASUM( N, EST, V, IV, JV, DESCV, 1 ) -+ ESTOLD = ESTWORK( 1 ) -+ CALL PSASUM( N, ESTWORK( 1 ), V, IV, JV, DESCV, 1 ) - IF( DESCV( M_ ).EQ.1 .AND. N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN -- CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 ) -+ CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 ) - ELSE -- CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1, -+ CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1, - $ IVXROW, MYCOL ) - END IF - END IF -@@ -305,7 +308,7 @@ SUBROUTINE PSLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN, - * REPEATED SIGN VECTOR DETECTED, HENCE ALGORITHM HAS CONVERGED. - * ALONG WITH IT, TEST FOR CYCLING. - * -- IF( IFLAG.EQ.0 .OR. EST.LE.ESTOLD ) -+ IF( IFLAG.EQ.0 .OR. ESTWORK( 1 ).LE.ESTOLD ) - $ GO TO 120 - * - DO 100 I = IOFFVX, IOFFVX+NP-1 -@@ -361,7 +364,7 @@ SUBROUTINE PSLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN, - * X HAS BEEN OVERWRITTEN BY A*X - * - 140 CONTINUE -- CALL PSASUM( N, TEMP, X, IX, JX, DESCX, 1 ) -+ CALL PSASUM( N, TEMP( 1 ), X, IX, JX, DESCX, 1 ) - IF( DESCX( M_ ).EQ.1 .AND. N.EQ.1 ) THEN - IF( MYROW.EQ.IVXROW ) THEN - CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, TEMP, 1 ) -@@ -370,15 +373,16 @@ SUBROUTINE PSLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN, - $ IVXROW, MYCOL ) - END IF - END IF -- TEMP = TWO*( TEMP / REAL( 3*N ) ) -- IF( TEMP.GT.EST ) THEN -+ TEMP( 1 ) = TWO*( TEMP( 1 ) / REAL( 3*N ) ) -+ IF( TEMP( 1 ).GT.ESTWORK( 1 ) ) THEN - CALL SCOPY( NP, X( IOFFVX ), 1, V( IOFFVX ), 1 ) -- EST = TEMP -+ ESTWORK( 1 ) = TEMP( 1 ) - END IF - * - 150 CONTINUE - KASE = 0 - * -+ EST = ESTWORK( 1 ) - RETURN - * - * End of PSLACON -diff --git a/SRC/pslarf.f b/SRC/pslarf.f -index c1d3a15..39de0ed 100644 ---- a/SRC/pslarf.f -+++ b/SRC/pslarf.f -@@ -241,7 +241,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - $ IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC, - $ LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW, - $ NQ, RDEST -- REAL TAULOC -+ REAL TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBSTRNV, -@@ -335,7 +335,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -344,7 +344,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -362,8 +362,8 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL SGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -378,9 +378,9 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - IF( MYCOL.EQ.ICCOL ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -397,8 +397,8 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL SGER( MP, NQ, -TAULOC, V( IOFFV ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL SGER( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -420,9 +420,9 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - IPW = MP+1 - CALL SGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -440,7 +440,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL SGER( MP, NQ, -TAULOC, WORK, 1, -+ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * -@@ -470,7 +470,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -479,7 +479,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -499,8 +499,8 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL SGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -515,18 +515,18 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - WORK(IPW) = TAU( JJV ) - CALL SGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MP+1 - CALL SGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -546,8 +546,8 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL SGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -576,9 +576,9 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - IF( MYROW.EQ.ICROW ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -596,7 +596,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFV.GT.0 .AND. IOFFC.GT.0 ) -- $ CALL SGER( MP, NQ, -TAULOC, WORK, 1, -+ $ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC ), LDC ) - END IF - * -@@ -619,9 +619,9 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - IPW = NQ+1 - CALL SGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -639,7 +639,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL SGER( MP, NQ, -TAULOC, WORK( IPW ), 1, -+ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, - $ WORK, 1, C( IOFFC ), LDC ) - END IF - * -@@ -665,7 +665,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL SGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -674,7 +674,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -692,8 +692,8 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL SGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1 -+ $ , WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -718,18 +718,18 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - WORK(IPW) = TAU( IIV ) - CALL SGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQ+1 - CALL SGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -748,8 +748,8 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFC.GT.0 ) -- $ CALL SGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ $ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -768,7 +768,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL SGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -777,7 +777,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -795,8 +795,8 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL SGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL SGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, WORK, -+ $ 1, C( IOFFC ), LDC ) - END IF - * - END IF -diff --git a/SRC/pslarz.f b/SRC/pslarz.f -index aa70db7..8901530 100644 ---- a/SRC/pslarz.f -+++ b/SRC/pslarz.f -@@ -250,7 +250,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2, - $ MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW, - $ NQC2, NQV, RDEST -- REAL TAULOC -+ REAL TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBSTRNV, -@@ -369,7 +369,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -378,7 +378,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -401,9 +401,9 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL SAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL SAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL SGER( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL SGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -419,9 +419,9 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - IF( MYCOL.EQ.ICCOL2 ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -444,11 +444,11 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL SAXPY( NQC2, -TAULOC, WORK, -+ $ CALL SAXPY( NQC2, -TAULOC( 1 ), WORK, - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL SGER( MPV, NQC2, -TAULOC, V( IOFFV ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL SGER( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -470,9 +470,9 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - IPW = MPV+1 - CALL SGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -495,10 +495,10 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL SAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL SAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL SGER( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL SGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -529,7 +529,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -538,7 +538,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -561,10 +561,10 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL SAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL SAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL SGER( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL SGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -579,18 +579,18 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - WORK( IPW ) = TAU( JJV ) - CALL SGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MPV+1 - CALL SGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -613,10 +613,10 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL SAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL SAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL SGER( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL SGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -645,9 +645,9 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - IF( MYROW.EQ.ICROW2 ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -668,13 +668,13 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ ICCOL2 ) - * - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL SAXPY( MPC2, -TAULOC, WORK, 1, -+ $ CALL SAXPY( MPC2, -TAULOC( 1 ), WORK, 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * - IF( MPC2.GT.0 .AND. NQV.GT.0 ) -- $ CALL SGER( MPC2, NQV, -TAULOC, WORK, 1, -+ $ CALL SGER( MPC2, NQV, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC2 ), - $ LDC ) - END IF -@@ -698,9 +698,9 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - IPW = NQV+1 - CALL SGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -719,13 +719,13 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), - $ RDEST, ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL SAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -- $ C( IOFFC1 ), 1 ) -+ $ CALL SAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL SGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL SGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -750,7 +750,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL SGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -759,7 +759,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -778,12 +778,12 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL SAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL SAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL SGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -+ CALL SGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, - $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -808,18 +808,18 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - WORK( IPW ) = TAU( IIV ) - CALL SGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQV+1 - CALL SGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -839,13 +839,13 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL SAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL SAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL SGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL SGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -864,7 +864,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL SGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -873,7 +873,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -892,13 +892,13 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL SAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL SAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL SGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL SGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -diff --git a/SRC/pslawil.f b/SRC/pslawil.f -index e04c16b..671e08e 100644 ---- a/SRC/pslawil.f -+++ b/SRC/pslawil.f -@@ -120,10 +120,14 @@ SUBROUTINE PSLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - INTEGER CONTXT, DOWN, HBL, ICOL, IROW, JSRC, LDA, LEFT, - $ MODKM1, MYCOL, MYROW, NPCOL, NPROW, NUM, RIGHT, - $ RSRC, UP -- REAL H11, H12, H21, H22, H33S, H44S, S, V1, V2, V3 -+ REAL H22, H33S, H44S, S, V1, V2 - * .. - * .. Local Arrays .. - REAL BUF( 4 ) -+ REAL H11( 1 ) -+ REAL H12( 1 ) -+ REAL H21( 1 ) -+ REAL V3( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, SGERV2D, SGESD2D, INFOG2L -@@ -170,18 +174,18 @@ SUBROUTINE PSLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - IF( NPCOL.GT.1 ) THEN - CALL SGERV2D( CONTXT, 1, 1, V3, 1, MYROW, LEFT ) - ELSE -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - IF( NUM.GT.1 ) THEN - CALL SGERV2D( CONTXT, 4, 1, BUF, 4, UP, LEFT ) -- H11 = BUF( 1 ) -- H21 = BUF( 2 ) -- H12 = BUF( 3 ) -+ H11( 1 ) = BUF( 1 ) -+ H21( 1 ) = BUF( 2 ) -+ H12( 1 ) = BUF( 3 ) - H22 = BUF( 4 ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) - END IF - END IF -@@ -214,20 +218,20 @@ SUBROUTINE PSLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - IF( NUM.GT.1 ) THEN - CALL SGERV2D( CONTXT, 1, 1, H11, 1, UP, LEFT ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) - END IF - IF( NPROW.GT.1 ) THEN - CALL SGERV2D( CONTXT, 1, 1, H12, 1, UP, MYCOL ) - ELSE -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - END IF - IF( NPCOL.GT.1 ) THEN - CALL SGERV2D( CONTXT, 1, 1, H21, 1, MYROW, LEFT ) - ELSE -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) - END IF - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - END IF - IF( ( MYROW.NE.II ) .OR. ( MYCOL.NE.JJ ) ) -@@ -236,24 +240,24 @@ SUBROUTINE PSLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - IF( MODKM1.GT.1 ) THEN - CALL INFOG2L( M+2, M+2, DESCA, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, RSRC, JSRC ) -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - * -- H44S = H44 - H11 -- H33S = H33 - H11 -- V1 = ( H33S*H44S-H43H34 ) / H21 + H12 -- V2 = H22 - H11 - H33S - H44S -- S = ABS( V1 ) + ABS( V2 ) + ABS( V3 ) -+ H44S = H44 - H11( 1 ) -+ H33S = H33 - H11( 1 ) -+ V1 = ( H33S*H44S-H43H34 ) / H21( 1 ) + H12( 1 ) -+ V2 = H22 - H11( 1 ) - H33S - H44S -+ S = ABS( V1 ) + ABS( V2 ) + ABS( V3( 1 ) ) - V1 = V1 / S - V2 = V2 / S -- V3 = V3 / S -+ V3( 1 ) = V3( 1 ) / S - V( 1 ) = V1 - V( 2 ) = V2 -- V( 3 ) = V3 -+ V( 3 ) = V3( 1 ) - * - RETURN - * -diff --git a/SRC/psstebz.f b/SRC/psstebz.f -index a8a2496..7e588a9 100644 ---- a/SRC/psstebz.f -+++ b/SRC/psstebz.f -@@ -244,14 +244,14 @@ SUBROUTINE PSSTEBZ( ICTXT, RANGE, ORDER, N, VL, VU, IL, IU, - $ ITMP2, J, JB, K, LAST, LEXTRA, LREQ, MYCOL, - $ MYROW, NALPHA, NBETA, NCMP, NEIGINT, NEXT, NGL, - $ NGLOB, NGU, NINT, NPCOL, NPROW, OFFSET, -- $ ONEDCONTEXT, P, PREV, REXTRA, RREQ, SELF, -- $ TORECV -+ $ ONEDCONTEXT, P, PREV, REXTRA, RREQ, SELF - REAL ALPHA, ATOLI, BETA, BNORM, DRECV, DSEND, GL, - $ GU, INITVL, INITVU, LSAVE, MID, PIVMIN, RELTOL, - $ SAFEMN, TMP1, TMP2, TNORM, ULP - * .. - * .. Local Arrays .. - INTEGER IDUM( 5, 2 ) -+ INTEGER TORECV( 1, 1 ) - * .. - * .. Executable Statements .. - * This is just to keep ftnchek happy -@@ -774,14 +774,14 @@ SUBROUTINE PSSTEBZ( ICTXT, RANGE, ORDER, N, VL, VU, IL, IU, - ELSE - CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', 1, 1, TORECV, 1, 0, - $ I-1 ) -- IF( TORECV.NE.0 ) THEN -- CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, IWORK, -- $ TORECV, 0, I-1 ) -- CALL SGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, WORK, -- $ TORECV, 0, I-1 ) -- CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, -- $ IWORK( N+1 ), TORECV, 0, I-1 ) -- DO 120 J = 1, TORECV -+ IF( TORECV( 1, 1 ).NE.0 ) THEN -+ CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1, -+ $ IWORK, TORECV( 1, 1 ), 0, I-1 ) -+ CALL SGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1, -+ $ WORK, TORECV( 1, 1 ), 0, I-1 ) -+ CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1, -+ $ IWORK( N+1 ), TORECV( 1, 1 ), 0, I-1 ) -+ DO 120 J = 1, TORECV( 1, 1 ) - W( IWORK( J ) ) = WORK( J ) - IBLOCK( IWORK( J ) ) = IWORK( N+J ) - 120 CONTINUE -diff --git a/SRC/pstrord.f b/SRC/pstrord.f -index 3562242..5cdb549 100644 ---- a/SRC/pstrord.f -+++ b/SRC/pstrord.f -@@ -328,12 +328,13 @@ SUBROUTINE PSTRORD( COMPQ, SELECT, PARA, N, T, IT, JT, - $ EAST, WEST, ILOC4, SOUTH, NORTH, INDXS, - $ ITT, JTT, ILEN, DLEN, INDXE, TRSRC1, TCSRC1, - $ TRSRC2, TCSRC2, ILOS, DIR, TLIHI, TLILO, TLSEL, -- $ ROUND, LAST, WIN0S, WIN0E, WINE, MMAX, MMIN -+ $ ROUND, LAST, WIN0S, WIN0E, WINE - REAL ELEM, ELEM1, ELEM2, ELEM3, ELEM4, SN, CS, TMP, - $ ELEM5 - * .. - * .. Local Arrays .. -- INTEGER IBUFF( 8 ), IDUM1( 1 ), IDUM2( 1 ) -+ INTEGER IBUFF( 8 ), IDUM1( 1 ), IDUM2( 1 ), MMAX( 1 ), -+ $ MMIN( 1 ), INFODUM( 1 ) - * .. - * .. External Functions .. - LOGICAL LSAME -@@ -483,16 +484,16 @@ SUBROUTINE PSTRORD( COMPQ, SELECT, PARA, N, T, IT, JT, - END IF - IF( SELECT(K).NE.0 ) M = M + 1 - 10 CONTINUE -- MMAX = M -- MMIN = M -+ MMAX( 1 ) = M -+ MMIN( 1 ) = M - IF( NPROCS.GT.1 ) - $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, MMAX, 1, -1, - $ -1, -1, -1, -1 ) - IF( NPROCS.GT.1 ) - $ CALL IGAMN2D( ICTXT, 'All', TOP, 1, 1, MMIN, 1, -1, - $ -1, -1, -1, -1 ) -- IF( MMAX.GT.MMIN ) THEN -- M = MMAX -+ IF( MMAX( 1 ).GT.MMIN( 1 ) ) THEN -+ M = MMAX( 1 ) - IF( NPROCS.GT.1 ) - $ CALL IGAMX2D( ICTXT, 'All', TOP, N, 1, SELECT, N, - $ -1, -1, -1, -1, -1 ) -@@ -520,9 +521,11 @@ SUBROUTINE PSTRORD( COMPQ, SELECT, PARA, N, T, IT, JT, - * - * Global maximum on info. - * -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -1, -1, -- $ -1, -1 ) -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, -1, -+ $ -1, -1, -1 ) -+ INFO = INFODUM( 1 ) -+ END IF - * - * Return if some argument is incorrect. - * -@@ -1576,9 +1579,11 @@ SUBROUTINE PSTRORD( COMPQ, SELECT, PARA, N, T, IT, JT, - * experienced a failure in the reordering. - * - MYIERR = IERR -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, IERR, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ IERR = INFODUM( 1 ) -+ END IF - * - IF( IERR.NE.0 ) THEN - * -@@ -1586,9 +1591,11 @@ SUBROUTINE PSTRORD( COMPQ, SELECT, PARA, N, T, IT, JT, - * to swap. - * - IF( MYIERR.NE.0 ) INFO = MAX(1,I+KKS-1) -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ INFO = INFODUM( 1 ) -+ END IF - GO TO 300 - END IF - * -@@ -3245,9 +3252,11 @@ SUBROUTINE PSTRORD( COMPQ, SELECT, PARA, N, T, IT, JT, - * experienced a failure in the reordering. - * - MYIERR = IERR -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, IERR, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ IERR = INFODUM( 1 ) -+ END IF - * - IF( IERR.NE.0 ) THEN - * -@@ -3255,9 +3264,11 @@ SUBROUTINE PSTRORD( COMPQ, SELECT, PARA, N, T, IT, JT, - * to swap. - * - IF( MYIERR.NE.0 ) INFO = MAX(1,I+KKS-1) -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, - $ -1, -1, -1, -1 ) -+ INFO = INFODUM( 1 ) -+ END IF - GO TO 300 - END IF - * -diff --git a/SRC/pstrsen.f b/SRC/pstrsen.f -index 6219bdb..1922e8f 100644 ---- a/SRC/pstrsen.f -+++ b/SRC/pstrsen.f -@@ -354,13 +354,15 @@ SUBROUTINE PSTRSEN( JOB, COMPQ, SELECT, PARA, N, T, IT, JT, - LOGICAL LQUERY, WANTBH, WANTQ, WANTS, WANTSP - INTEGER ICOFFT12, ICTXT, IDUM1, IDUM2, IERR, ILOC1, - $ IPW1, ITER, ITT, JLOC1, JTT, K, LIWMIN, LLDT, -- $ LLDQ, LWMIN, MMAX, MMIN, MYROW, MYCOL, N1, N2, -+ $ LLDQ, LWMIN, MYROW, MYCOL, N1, N2, - $ NB, NOEXSY, NPCOL, NPROCS, NPROW, SPACE, - $ T12ROWS, T12COLS, TCOLS, TCSRC, TROWS, TRSRC, - $ WRK1, IWRK1, WRK2, IWRK2, WRK3, IWRK3 -- REAL DPDUM1, ELEM, EST, SCALE, RNORM -+ REAL ELEM, EST, SCALE, RNORM - * .. Local Arrays .. -- INTEGER DESCT12( DLEN_ ), MBNB2( 2 ) -+ INTEGER DESCT12( DLEN_ ), MBNB2( 2 ), MMAX( 1 ), -+ $ MMIN( 1 ), INFODUM( 1 ) -+ REAL DPDUM1( 1 ) - * .. - * .. External Functions .. - LOGICAL LSAME -@@ -521,16 +523,16 @@ SUBROUTINE PSTRSEN( JOB, COMPQ, SELECT, PARA, N, T, IT, JT, - END IF - IF( SELECT(K) ) M = M + 1 - 10 CONTINUE -- MMAX = M -- MMIN = M -+ MMAX( 1 ) = M -+ MMIN( 1 ) = M - IF( NPROCS.GT.1 ) - $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, MMAX, 1, -1, - $ -1, -1, -1, -1 ) - IF( NPROCS.GT.1 ) - $ CALL IGAMN2D( ICTXT, 'All', TOP, 1, 1, MMIN, 1, -1, - $ -1, -1, -1, -1 ) -- IF( MMAX.GT.MMIN ) THEN -- M = MMAX -+ IF( MMAX( 1 ).GT.MMIN( 1 ) ) THEN -+ M = MMAX( 1 ) - IF( NPROCS.GT.1 ) - $ CALL IGAMX2D( ICTXT, 'All', TOP, N, 1, IWORK, N, - $ -1, -1, -1, -1, -1 ) -@@ -602,9 +604,11 @@ SUBROUTINE PSTRSEN( JOB, COMPQ, SELECT, PARA, N, T, IT, JT, - * - * Global maximum on info - * -- IF( NPROCS.GT.1 ) -- $ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -1, -1, -+ IF( NPROCS.GT.1 ) THEN -+ CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, -1, -1, - $ -1, -1 ) -+ INFO = INFODUM( 1 ) -+ END IF - * - * Return if some argument is incorrect - * -diff --git a/SRC/pzlarf.f b/SRC/pzlarf.f -index df65912..7bff287 100644 ---- a/SRC/pzlarf.f -+++ b/SRC/pzlarf.f -@@ -242,7 +242,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - $ IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC, - $ LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW, - $ NQ, RDEST -- COMPLEX*16 TAULOC -+ COMPLEX*16 TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBZTRNV, -@@ -336,7 +336,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -345,7 +345,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -363,8 +363,8 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -379,9 +379,9 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - IF( MYCOL.EQ.ICCOL ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -398,7 +398,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, V( IOFFV ), 1, -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1, - $ WORK, 1, C( IOFFC ), LDC ) - END IF - * -@@ -421,9 +421,9 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - IPW = MP+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -441,7 +441,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * -@@ -471,7 +471,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -480,7 +480,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -500,8 +500,8 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -516,18 +516,18 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - WORK(IPW) = TAU( JJV ) - CALL ZGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MP+1 - CALL ZGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -547,8 +547,8 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - v * w' - * - IF( IOFFC.GT.0 ) -- $ CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ $ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -577,9 +577,9 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - IF( MYROW.EQ.ICROW ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -597,7 +597,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFV.GT.0 .AND. IOFFC.GT.0 ) -- $ CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, -+ $ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC ), - $ LDC ) - END IF -@@ -621,9 +621,9 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - IPW = NQ+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -641,8 +641,8 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -667,7 +667,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -676,7 +676,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -694,8 +694,8 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -720,18 +720,18 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - WORK(IPW) = TAU( IIV ) - CALL ZGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQ+1 - CALL ZGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -750,8 +750,8 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * sub( C ) := sub( C ) - w * v' - * - IF( IOFFC.GT.0 ) -- $ CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ $ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -770,7 +770,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -779,7 +779,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -797,8 +797,8 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -diff --git a/SRC/pzlarfc.f b/SRC/pzlarfc.f -index eb469fc..ddd7ec6 100644 ---- a/SRC/pzlarfc.f -+++ b/SRC/pzlarfc.f -@@ -242,7 +242,7 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - $ IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC, - $ LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW, - $ NQ, RDEST -- COMPLEX*16 TAULOC -+ COMPLEX*16 TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBZTRNV, -@@ -336,17 +336,17 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAULOC, 1, IVROW, MYCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -364,8 +364,8 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -380,9 +380,9 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - IF( MYCOL.EQ.ICCOL ) THEN - * -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -399,7 +399,7 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, V( IOFFV ), 1, -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1, - $ WORK, 1, C( IOFFC ), LDC ) - END IF - * -@@ -422,9 +422,9 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - IPW = MP+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -442,7 +442,7 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * -@@ -472,17 +472,17 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, TAULOC, - $ 1, IVROW, MYCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -500,8 +500,8 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), 1, -- $ C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -516,18 +516,18 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - WORK(IPW) = TAU( JJV ) - CALL ZGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * - ELSE - * - IPW = MP+1 - CALL ZGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -545,8 +545,8 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - v * w' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), 1, -- $ C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -575,9 +575,9 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - IF( MYROW.EQ.ICROW ) THEN - * -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -594,7 +594,7 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC ), LDC ) - END IF - * -@@ -617,9 +617,9 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - IPW = NQ+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -637,8 +637,8 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -663,17 +663,17 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, - $ 1, MYROW, IVCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -691,8 +691,8 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -@@ -716,18 +716,18 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - WORK(IPW) = TAU( IIV ) - CALL ZGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * - ELSE - * - IPW = NQ+1 - CALL ZGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -745,8 +745,8 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - ELSE -@@ -765,17 +765,17 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, 1, - $ MYROW, IVCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -793,8 +793,8 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU, - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1, -- $ C( IOFFC ), LDC ) -+ CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC ), LDC ) - END IF - * - END IF -diff --git a/SRC/pzlarz.f b/SRC/pzlarz.f -index fefc133..abf6288 100644 ---- a/SRC/pzlarz.f -+++ b/SRC/pzlarz.f -@@ -251,7 +251,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2, - $ MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW, - $ NQC2, NQV, RDEST -- COMPLEX*16 TAULOC -+ COMPLEX*16 TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBZTRNV, -@@ -370,7 +370,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -379,7 +379,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -402,9 +402,9 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -420,9 +420,9 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - IF( MYCOL.EQ.ICCOL2 ) THEN - * -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -445,11 +445,11 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK, -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK, - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, V( IOFFV ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -471,9 +471,9 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - IPW = MPV+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -496,10 +496,10 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -530,7 +530,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * -@@ -539,7 +539,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -562,10 +562,10 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -580,18 +580,18 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - WORK( IPW ) = TAU( JJV ) - CALL ZGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * - IPW = MPV+1 - CALL ZGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -614,10 +614,10 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -646,9 +646,9 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - IF( MYROW.EQ.ICROW2 ) THEN - * -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -669,13 +669,13 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ ICCOL2 ) - * - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK, 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK, 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * - IF( MPC2.GT.0 .AND. NQV.GT.0 ) -- $ CALL ZGERC( MPC2, NQV, -TAULOC, WORK, 1, -+ $ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC2 ), - $ LDC ) - END IF -@@ -699,9 +699,9 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - IPW = NQV+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -720,13 +720,14 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), - $ RDEST, ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -- $ C( IOFFC1 ), 1 ) -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), -+ $ WORK( IPW ), 1, WORK, 1, -+ $ C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -751,7 +752,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -760,7 +761,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -779,13 +780,13 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -809,18 +810,18 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - WORK( IPW ) = TAU( IIV ) - CALL ZGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = TAU( IIV ) -+ TAULOC( 1 ) = TAU( IIV ) - * - ELSE - * - IPW = NQV+1 - CALL ZGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = WORK( IPW ) -+ TAULOC( 1 ) = WORK( IPW ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -840,13 +841,13 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -865,7 +866,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = TAU( JJV ) -+ TAULOC( 1 ) = TAU( JJV ) - * - ELSE - * -@@ -874,7 +875,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -893,13 +894,13 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -diff --git a/SRC/pzlarzc.f b/SRC/pzlarzc.f -index 936caec..2c574ff 100644 ---- a/SRC/pzlarzc.f -+++ b/SRC/pzlarzc.f -@@ -251,7 +251,7 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2, - $ MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW, - $ NQC2, NQV, RDEST -- COMPLEX*16 TAULOC -+ COMPLEX*16 TAULOC( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBZTRNV, -@@ -370,17 +370,17 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAULOC, 1, IVROW, MYCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -403,9 +403,9 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -421,9 +421,9 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - IF( MYCOL.EQ.ICCOL2 ) THEN - * -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -446,11 +446,11 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK, -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK, - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, V( IOFFV ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -472,9 +472,9 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - IPW = MPV+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW, - $ IVCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -497,10 +497,10 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), - $ LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, - $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * -@@ -531,17 +531,17 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, - $ TAU( IIV ), 1 ) -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, TAULOC, - $ 1, IVROW, MYCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -564,10 +564,10 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -582,18 +582,18 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - WORK( IPW ) = TAU( JJV ) - CALL ZGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * - ELSE - * - IPW = MPV+1 - CALL ZGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK, - $ IPW, MYROW, IVCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C )' * v - * -@@ -616,10 +616,10 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * sub( C ) := sub( C ) - v * w' - * - IF( MYROW.EQ.ICROW1 ) -- $ CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ), -+ $ CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ), - $ MAX( 1, NQC2 ), C( IOFFC1 ), LDC ) -- CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ), -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1, -+ $ WORK( IPW ), 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -648,9 +648,9 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - IF( MYROW.EQ.ICROW2 ) THEN - * -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -671,12 +671,12 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ ICCOL2 ) - * - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK, 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK, 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK, 1, -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK, 1, - $ V( IOFFV ), LDV, C( IOFFC2 ), LDC ) - END IF - * -@@ -699,9 +699,9 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - IPW = NQV+1 - CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW, - $ MYCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -720,13 +720,14 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), - $ RDEST, ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -- $ C( IOFFC1 ), 1 ) -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), -+ $ WORK( IPW ), 1, WORK, 1, -+ $ C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -751,17 +752,17 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, - $ TAU( JJV ), 1 ) -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, - $ 1, MYROW, IVCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -780,13 +781,13 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, -- $ WORK, 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), -+ $ 1, WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -@@ -810,18 +811,18 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - WORK( IPW ) = TAU( IIV ) - CALL ZGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW ) -- TAULOC = DCONJG( TAU( IIV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( IIV ) ) - * - ELSE - * - IPW = NQV+1 - CALL ZGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1, - $ WORK, IPW, IVROW, MYCOL ) -- TAULOC = DCONJG( WORK( IPW ) ) -+ TAULOC( 1 ) = DCONJG( WORK( IPW ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -841,13 +842,13 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - ELSE -@@ -866,17 +867,17 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - * - CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ), - $ 1 ) -- TAULOC = DCONJG( TAU( JJV ) ) -+ TAULOC( 1 ) = DCONJG( TAU( JJV ) ) - * - ELSE - * - CALL ZGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, 1, - $ MYROW, IVCOL ) -- TAULOC = DCONJG( TAULOC ) -+ TAULOC( 1 ) = DCONJG( TAULOC( 1 ) ) - * - END IF - * -- IF( TAULOC.NE.ZERO ) THEN -+ IF( TAULOC( 1 ).NE.ZERO ) THEN - * - * w := sub( C ) * v - * -@@ -895,13 +896,13 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C, - $ WORK( IPW ), MAX( 1, MPC2 ), RDEST, - $ ICCOL2 ) - IF( MYCOL.EQ.ICCOL1 ) -- $ CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1, -+ $ CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1, - $ C( IOFFC1 ), 1 ) - * - * sub( C ) := sub( C ) - w * v' - * -- CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK, -- $ 1, C( IOFFC2 ), LDC ) -+ CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1, -+ $ WORK, 1, C( IOFFC2 ), LDC ) - END IF - * - END IF -diff --git a/SRC/pzlattrs.f b/SRC/pzlattrs.f -index 819e476..5a54209 100644 ---- a/SRC/pzlattrs.f -+++ b/SRC/pzlattrs.f -@@ -271,8 +271,9 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - $ JINC, JLAST, LDA, LDX, MB, MYCOL, MYROW, NB, - $ NPCOL, NPROW, RSRC - DOUBLE PRECISION BIGNUM, GROW, REC, SMLNUM, TJJ, TMAX, TSCAL, -- $ XBND, XJ, XMAX -+ $ XBND, XJ - COMPLEX*16 CSUMJ, TJJS, USCAL, XJTMP, ZDUM -+ DOUBLE PRECISION XMAX( 1 ) - * .. - * .. External Functions .. - LOGICAL LSAME -@@ -391,11 +392,11 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - * Compute a bound on the computed solution vector to see if the - * Level 2 PBLAS routine PZTRSV can be used. - * -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - CALL PZAMAX( N, ZDUM, IMAX, X, IX, JX, DESCX, 1 ) -- XMAX = CABS2( ZDUM ) -+ XMAX( 1 ) = CABS2( ZDUM ) - CALL DGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1, -1, -1 ) -- XBND = XMAX -+ XBND = XMAX( 1 ) - * - IF( NOTRAN ) THEN - * -@@ -590,16 +591,16 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - * - * Use a Level 1 PBLAS solve, scaling intermediate results. - * -- IF( XMAX.GT.BIGNUM*HALF ) THEN -+ IF( XMAX( 1 ).GT.BIGNUM*HALF ) THEN - * - * Scale X so that its components are less than or equal to - * BIGNUM in absolute value. - * -- SCALE = ( BIGNUM*HALF ) / XMAX -+ SCALE = ( BIGNUM*HALF ) / XMAX( 1 ) - CALL PZDSCAL( N, SCALE, X, IX, JX, DESCX, 1 ) -- XMAX = BIGNUM -+ XMAX( 1 ) = BIGNUM - ELSE -- XMAX = XMAX*TWO -+ XMAX( 1 ) = XMAX( 1 )*TWO - END IF - * - IF( NOTRAN ) THEN -@@ -651,7 +652,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * X( J ) = ZLADIV( X( J ), TJJS ) -@@ -682,7 +683,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - * X( J ) = ZLADIV( X( J ), TJJS ) - * XJ = CABS1( X( J ) ) -@@ -706,7 +707,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - XJTMP = CONE - XJ = ONE - SCALE = ZERO -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - END IF - 90 CONTINUE - * -@@ -715,7 +716,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - * - IF( XJ.GT.ONE ) THEN - REC = ONE / XJ -- IF( CNORM( J ).GT.( BIGNUM-XMAX )*REC ) THEN -+ IF( CNORM( J ).GT.( BIGNUM-XMAX( 1 ) )*REC ) THEN - * - * Scale x by 1/(2*abs(x(j))). - * -@@ -724,7 +725,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - XJTMP = XJTMP*REC - SCALE = SCALE*REC - END IF -- ELSE IF( XJ*CNORM( J ).GT.( BIGNUM-XMAX ) ) THEN -+ ELSE IF( XJ*CNORM( J ).GT.( BIGNUM-XMAX( 1 ) ) ) THEN - * - * Scale x by 1/2. - * -@@ -743,7 +744,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PZAXPY( J-1, ZDUM, A, IA, JA+J-1, DESCA, 1, X, - $ IX, JX, DESCX, 1 ) - CALL PZAMAX( J-1, ZDUM, IMAX, X, IX, JX, DESCX, 1 ) -- XMAX = CABS1( ZDUM ) -+ XMAX( 1 ) = CABS1( ZDUM ) - CALL DGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1, - $ -1, -1 ) - END IF -@@ -757,7 +758,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PZAXPY( N-J, ZDUM, A, IA+J, JA+J-1, DESCA, 1, - $ X, IX+J, JX, DESCX, 1 ) - CALL PZAMAX( N-J, ZDUM, I, X, IX+J, JX, DESCX, 1 ) -- XMAX = CABS1( ZDUM ) -+ XMAX( 1 ) = CABS1( ZDUM ) - CALL DGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1, - $ -1, -1 ) - END IF -@@ -785,7 +786,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - END IF - XJ = CABS1( XJTMP ) - USCAL = DCMPLX( TSCAL ) -- REC = ONE / MAX( XMAX, ONE ) -+ REC = ONE / MAX( XMAX( 1 ), ONE ) - IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN - * - * If x(j) could overflow, scale x by 1/(2*XMAX). -@@ -820,7 +821,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * -@@ -924,7 +925,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * X( J ) = ZLADIV( X( J ), TJJS ) -@@ -945,7 +946,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - * X( J ) = ZLADIV( X( J ), TJJS ) - XJTMP = ZLADIV( XJTMP, TJJS ) -@@ -966,7 +967,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - END IF - XJTMP = CONE - SCALE = ZERO -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - END IF - 110 CONTINUE - ELSE -@@ -981,7 +982,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - X( IROWX ) = XJTMP - END IF - END IF -- XMAX = MAX( XMAX, CABS1( XJTMP ) ) -+ XMAX( 1 ) = MAX( XMAX( 1 ), CABS1( XJTMP ) ) - 120 CONTINUE - * - ELSE -@@ -1004,7 +1005,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - END IF - XJ = CABS1( XJTMP ) - USCAL = TSCAL -- REC = ONE / MAX( XMAX, ONE ) -+ REC = ONE / MAX( XMAX( 1 ), ONE ) - IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN - * - * If x(j) could overflow, scale x by 1/(2*XMAX). -@@ -1039,7 +1040,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * -@@ -1145,7 +1146,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - END IF - * X( J ) = ZLADIV( X( J ), TJJS ) -@@ -1164,7 +1165,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 ) - XJTMP = XJTMP*REC - SCALE = SCALE*REC -- XMAX = XMAX*REC -+ XMAX( 1 ) = XMAX( 1 )*REC - END IF - * X( J ) = ZLADIV( X( J ), TJJS ) - XJTMP = ZLADIV( XJTMP, TJJS ) -@@ -1181,7 +1182,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - $ X( IROWX ) = CONE - XJTMP = CONE - SCALE = ZERO -- XMAX = ZERO -+ XMAX( 1 ) = ZERO - END IF - 130 CONTINUE - ELSE -@@ -1194,7 +1195,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA, - IF( ( MYROW.EQ.ITMP1X ) .AND. ( MYCOL.EQ.ITMP2X ) ) - $ X( IROWX ) = XJTMP - END IF -- XMAX = MAX( XMAX, CABS1( XJTMP ) ) -+ XMAX( 1 ) = MAX( XMAX( 1 ), CABS1( XJTMP ) ) - 140 CONTINUE - END IF - SCALE = SCALE / TSCAL -diff --git a/SRC/pzlawil.f b/SRC/pzlawil.f -index e89a9a3..7e502ef 100644 ---- a/SRC/pzlawil.f -+++ b/SRC/pzlawil.f -@@ -124,11 +124,10 @@ SUBROUTINE PZLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - $ MODKM1, MYCOL, MYROW, NPCOL, NPROW, NUM, RIGHT, - $ RSRC, UP - DOUBLE PRECISION S -- COMPLEX*16 CDUM, H11, H12, H21, H22, H33S, H44S, V1, V2, -- $ V3 -+ COMPLEX*16 CDUM, H22, H33S, H44S, V1, V2 - * .. - * .. Local Arrays .. -- COMPLEX*16 BUF( 4 ) -+ COMPLEX*16 BUF( 4 ), H11( 1 ), H12( 1 ), H21( 1 ), V3( 1 ) - * .. - * .. External Subroutines .. - EXTERNAL BLACS_GRIDINFO, INFOG2L, ZGERV2D, ZGESD2D -@@ -181,18 +180,18 @@ SUBROUTINE PZLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - IF( NPCOL.GT.1 ) THEN - CALL ZGERV2D( CONTXT, 1, 1, V3, 1, MYROW, LEFT ) - ELSE -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - IF( NUM.GT.1 ) THEN - CALL ZGERV2D( CONTXT, 4, 1, BUF, 4, UP, LEFT ) -- H11 = BUF( 1 ) -- H21 = BUF( 2 ) -- H12 = BUF( 3 ) -+ H11( 1 ) = BUF( 1 ) -+ H21( 1 ) = BUF( 2 ) -+ H12( 1 ) = BUF( 3 ) - H22 = BUF( 4 ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) - END IF - END IF -@@ -225,20 +224,20 @@ SUBROUTINE PZLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - IF( NUM.GT.1 ) THEN - CALL ZGERV2D( CONTXT, 1, 1, H11, 1, UP, LEFT ) - ELSE -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) - END IF - IF( NPROW.GT.1 ) THEN - CALL ZGERV2D( CONTXT, 1, 1, H12, 1, UP, MYCOL ) - ELSE -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - END IF - IF( NPCOL.GT.1 ) THEN - CALL ZGERV2D( CONTXT, 1, 1, H21, 1, MYROW, LEFT ) - ELSE -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) - END IF - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - END IF - IF( ( MYROW.NE.II ) .OR. ( MYCOL.NE.JJ ) ) -@@ -247,24 +246,24 @@ SUBROUTINE PZLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V ) - IF( MODKM1.GT.1 ) THEN - CALL INFOG2L( M+2, M+2, DESCA, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, RSRC, JSRC ) -- H11 = A( ( ICOL-3 )*LDA+IROW-2 ) -- H21 = A( ( ICOL-3 )*LDA+IROW-1 ) -- H12 = A( ( ICOL-2 )*LDA+IROW-2 ) -+ H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 ) -+ H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 ) -+ H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 ) - H22 = A( ( ICOL-2 )*LDA+IROW-1 ) -- V3 = A( ( ICOL-2 )*LDA+IROW ) -+ V3( 1 ) = A( ( ICOL-2 )*LDA+IROW ) - END IF - * -- H44S = H44 - H11 -- H33S = H33 - H11 -- V1 = ( H33S*H44S-H43H34 ) / H21 + H12 -- V2 = H22 - H11 - H33S - H44S -- S = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 ) -+ H44S = H44 - H11( 1 ) -+ H33S = H33 - H11( 1 ) -+ V1 = ( H33S*H44S-H43H34 ) / H21( 1 ) + H12( 1 ) -+ V2 = H22 - H11( 1 ) - H33S - H44S -+ S = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3( 1 ) ) - V1 = V1 / S - V2 = V2 / S -- V3 = V3 / S -+ V3( 1 ) = V3( 1 ) / S - V( 1 ) = V1 - V( 2 ) = V2 -- V( 3 ) = V3 -+ V( 3 ) = V3( 1 ) - * - RETURN - * -diff --git a/SRC/pztrevc.f b/SRC/pztrevc.f -index 0536475..3b27286 100644 ---- a/SRC/pztrevc.f -+++ b/SRC/pztrevc.f -@@ -218,11 +218,12 @@ SUBROUTINE PZTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL, - $ ITMP2, J, K, KI, LDT, LDVL, LDVR, LDW, MB, - $ MYCOL, MYROW, NB, NPCOL, NPROW, RSRC - REAL SELF -- DOUBLE PRECISION OVFL, REMAXD, SCALE, SMIN, SMLNUM, ULP, UNFL -+ DOUBLE PRECISION OVFL, REMAXD, SCALE, SMLNUM, ULP, UNFL - COMPLEX*16 CDUM, REMAXC, SHIFT - * .. - * .. Local Arrays .. - INTEGER DESCW( DLEN_ ) -+ DOUBLE PRECISION SMIN( 1 ) - * .. - * .. External Functions .. - LOGICAL LSAME -@@ -355,13 +356,13 @@ SUBROUTINE PZTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL, - $ GO TO 70 - END IF - * -- SMIN = ZERO -+ SMIN( 1 ) = ZERO - SHIFT = CZERO - CALL INFOG2L( KI, KI, DESCT, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, ITMP1, ITMP2 ) - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - SHIFT = T( ( ICOL-1 )*LDT+IROW ) -- SMIN = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) -+ SMIN( 1 ) = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) - END IF - CALL DGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SMIN, 1, -1, -1 ) - CALL ZGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SHIFT, 1, -1, -1 ) -@@ -396,8 +397,9 @@ SUBROUTINE PZTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL, - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - T( ( ICOL-1 )*LDT+IROW ) = T( ( ICOL-1 )*LDT+IROW ) - - $ SHIFT -- IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN ) THEN -- T( ( ICOL-1 )*LDT+IROW ) = DCMPLX( SMIN ) -+ IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN( 1 ) ) -+ $ THEN -+ T( ( ICOL-1 )*LDT+IROW ) = DCMPLX( SMIN( 1 ) ) - END IF - END IF - 50 CONTINUE -@@ -467,13 +469,13 @@ SUBROUTINE PZTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL, - $ GO TO 110 - END IF - * -- SMIN = ZERO -+ SMIN( 1 ) = ZERO - SHIFT = CZERO - CALL INFOG2L( KI, KI, DESCT, NPROW, NPCOL, MYROW, MYCOL, - $ IROW, ICOL, ITMP1, ITMP2 ) - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - SHIFT = T( ( ICOL-1 )*LDT+IROW ) -- SMIN = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) -+ SMIN( 1 ) = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM ) - END IF - CALL DGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SMIN, 1, -1, -1 ) - CALL ZGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SHIFT, 1, -1, -1 ) -@@ -507,8 +509,8 @@ SUBROUTINE PZTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL, - IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN - T( ( ICOL-1 )*LDT+IROW ) = T( ( ICOL-1 )*LDT+IROW ) - - $ SHIFT -- IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN ) -- $ T( ( ICOL-1 )*LDT+IROW ) = DCMPLX( SMIN ) -+ IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN( 1 ) ) -+ $ T( ( ICOL-1 )*LDT+IROW ) = DCMPLX( SMIN( 1 ) ) - END IF - 90 CONTINUE - * - -From 189c84001bcd564296a475c5c757afc9f337e828 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Tiziano=20M=C3=BCller?= <tiziano.mueller@chem.uzh.ch> -Date: Thu, 25 Jun 2020 18:37:34 +0200 -Subject: [PATCH] use -std=legacy for tests with GCC-10+ - ---- - BLACS/TESTING/CMakeLists.txt | 10 +++++++--- - PBLAS/TESTING/CMakeLists.txt | 7 ++++--- - PBLAS/TIMING/CMakeLists.txt | 5 +++-- - TESTING/EIG/CMakeLists.txt | 3 +++ - TESTING/LIN/CMakeLists.txt | 4 ++++ - 5 files changed, 21 insertions(+), 8 deletions(-) - -diff --git a/BLACS/TESTING/CMakeLists.txt b/BLACS/TESTING/CMakeLists.txt -index d8846b5..4e91ac2 100644 ---- a/BLACS/TESTING/CMakeLists.txt -+++ b/BLACS/TESTING/CMakeLists.txt -@@ -1,10 +1,14 @@ --set(FTestObj -+set(FTestObj - blacstest.f btprim.f tools.f) - -+if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) -+ set_source_files_properties(blacstest.f PROPERTIES COMPILE_FLAGS "-std=legacy") -+endif() -+ - add_executable(xFbtest ${FTestObj}) - target_link_libraries(xFbtest scalapack) - --set(CTestObj -+set(CTestObj - Cbt.c) - - set_property( -@@ -46,4 +50,4 @@ add_test(xFbtest - -DRUNTIMEDIR=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} - -DSOURCEDIR=${CMAKE_CURRENT_SOURCE_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/runtest.cmake -- ) -\ No newline at end of file -+ ) -diff --git a/PBLAS/TESTING/CMakeLists.txt b/PBLAS/TESTING/CMakeLists.txt -index e60f5e4..ee77091 100644 ---- a/PBLAS/TESTING/CMakeLists.txt -+++ b/PBLAS/TESTING/CMakeLists.txt -@@ -10,7 +10,7 @@ set (zpbtcom pzblastst.f dlamch.f ${pbtcom}) - - set_property( - SOURCE ${PblasErrorHandler} -- APPEND PROPERTY COMPILE_DEFINITIONS TestingPblas -+ APPEND PROPERTY COMPILE_DEFINITIONS TestingPblas - ) - - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/PBLAS/TESTING) -@@ -74,5 +74,6 @@ add_test(dpb3tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./dpb3tst) - add_test(cpb3tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./cpb3tst) - add_test(zpb3tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./zpb3tst) - -- -- -+if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) -+ set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" ) # local to this directory -+endif() -diff --git a/PBLAS/TIMING/CMakeLists.txt b/PBLAS/TIMING/CMakeLists.txt -index 763330f..208bbc3 100644 ---- a/PBLAS/TIMING/CMakeLists.txt -+++ b/PBLAS/TIMING/CMakeLists.txt -@@ -74,5 +74,6 @@ add_test(dpb3tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./dpb3tim) - add_test(cpb3tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./cpb3tim) - add_test(zpb3tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./zpb3tim) - -- -- -+if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) -+ set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" ) # local to this directory -+endif() -diff --git a/TESTING/EIG/CMakeLists.txt b/TESTING/EIG/CMakeLists.txt -index 97c7036..19a1f34 100644 ---- a/TESTING/EIG/CMakeLists.txt -+++ b/TESTING/EIG/CMakeLists.txt -@@ -97,3 +97,6 @@ target_link_libraries(xzheevr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) - target_link_libraries(xshseqr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) - target_link_libraries(xdhseqr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) - -+if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) -+ set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" ) # local to this directory -+endif() -diff --git a/TESTING/LIN/CMakeLists.txt b/TESTING/LIN/CMakeLists.txt -index 55a53e9..65f169b 100644 ---- a/TESTING/LIN/CMakeLists.txt -+++ b/TESTING/LIN/CMakeLists.txt -@@ -110,3 +110,7 @@ target_link_libraries(xsls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) - target_link_libraries(xdls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) - target_link_libraries(xcls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) - target_link_libraries(xzls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) -+ -+if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) -+ set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" ) # local to this directory -+endif() diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 6858322c34..fba81bdc6d 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2016, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net> -;;; Copyright © 2016-2022, 2024 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016-2022, 2024, 2025 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co> ;;; Copyright © 2016, 2018, 2020, 2021 Roel Janssen <roel@gnu.org> @@ -5359,7 +5359,7 @@ type.") (define-public perl-file-find-rule (package (name "perl-file-find-rule") - (version "0.34") + (version "0.35") (source (origin (method url-fetch) @@ -5367,10 +5367,10 @@ type.") "File-Find-Rule-" version ".tar.gz")) (sha256 (base32 - "1znachnhmi1w5pdqx8dzgfa892jb7x8ivrdy4pzjj7zb6g61cvvy")))) + "10hcrwx30g161fmwm08ydwj0s1dhn25ja0s8wwpasi3dk8l5dm9b")))) (build-system perl-build-system) (propagated-inputs - (list perl-text-glob perl-number-compare)) + (list perl-number-compare perl-text-glob)) (home-page "https://metacpan.org/release/File-Find-Rule") (synopsis "Alternative interface to File::Find") (description "File::Find::Rule is a friendlier interface to File::Find. diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm index 376ae67570..f01a71f2d0 100644 --- a/gnu/packages/python-science.scm +++ b/gnu/packages/python-science.scm @@ -29,6 +29,7 @@ ;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr> ;;; Copyright © 2024 Rick Huijzer <ikbenrickhuyzer@gmail.com> ;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr> +;;; Copyright © 2025 Mark Walker <mark.damon.walker@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -553,6 +554,58 @@ allows arithmetic operations between them and conversions from and to different units.") (license license:bsd-3))) +(define-public python-pyzx + (package + (name "python-pyzx") + (version "0.9.0") + (source + (origin + (method git-fetch) ; no tests in PyPI + (uri (git-reference + (url "https://github.com/zxcalc/pyzx") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1bnmz08w1bmipir1wnn1k3fw64rply7891xns22qfj6yh0j1n6rj")))) + (build-system pyproject-build-system) + (arguments (list #:test-flags + #~(list + ;; Ignore long running tests + "--ignore=tests/long_test.py" + "--ignore=tests/long_scalar_test.py") + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'pre-check + (lambda* (#:key inputs outputs #:allow-other-keys) + (setenv "HOME" "/tmp") + ;; Matplotlib needs to be able to write its + ;; configuration file somewhere. + (setenv "MPLCONFIGDIR" "/tmp")))))) + (native-inputs (list python-pytest + python-setuptools + python-wheel)) + (propagated-inputs (list python-ipywidgets + python-lark + python-numpy + python-pyperclip + python-tqdm)) + (home-page "https://github.com/zxcalc/pyzx") + (synopsis "Quantum circuit rewriting and optimisation using the ZX-calculus") + (description + "PyZX is a Python tool implementing the theory of ZX-calculus for the +creation, visualisation, and automated rewriting of large-scale quantum +circuits. PyZX currently allows you to: + +@itemize +@item Read in quantum circuits in the file format of QASM, Quipper or Quantomatic; +@item Rewrite circuits into a pseudo-normal form using the ZX-calculus; +@item Extract new simplified circuits from these reduced graphs; +@item Visualise the ZX-graphs and rewrites using either Matplotlib, Quantomatic +or as a TikZ file for use in LaTeX documents; +@item Output the optimised circuits in QASM, QC or QUIPPER format. +@end itemize") + (license license:asl2.0))) + (define-public python-qdldl (package (name "python-qdldl") diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index ebb3970c3a..fcff7dbe34 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -1112,6 +1112,27 @@ similar XML files, in the same way the @command{diff} utility does it.") Library.") (license license:expat))) +(define-public python-jaconv + (package + (name "python-jaconv") + (version "0.4.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "jaconv" version)) + (sha256 + (base32 "0qc1dx21vwlarhsg19l5rdjpjf7j7lamrcynaadf0xpj8yr79nij")))) + (build-system pyproject-build-system) + (native-inputs (list python-setuptools python-wheel python-nose)) + (home-page "https://github.com/ikegami-yukino/jaconv") + (synopsis + "Pure-Python Japanese character interconverter for Hiragana, Katakana, +Hankaku, Zenkaku") + (description + "jaconv (Japanese Converter) is interconverter for Hiragana, Katakana, +Hankaku (half-width character) and Zenkaku (full-width character)") + (license license:expat))) + (define-public python-janus (package (name "python-janus") @@ -7079,6 +7100,30 @@ something else) to Python data-types.") (base32 "10zqvpaky51kgb8nd42bk7jwl8cn2zvayxjpdc1wwmpybj92x67s")))))) +(define-public python-kconfiglib + (package + (name "python-kconfiglib") + (version "14.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "kconfiglib" version)) + (sha256 + (base32 "0g690bk789hsry34y4ahvly5c8w8imca90ss4njfqf7m2qicrlmy")))) + (build-system pyproject-build-system) + (native-inputs + (list python-setuptools + python-wheel + `(,python "tk"))) + (home-page "https://github.com/ulfalizer/Kconfiglib") + (synopsis + "Flexible Python library for parsing and creating Linux Kconfig files") + (description + "Kconfiglib is a Python implementation of a parser for Linux Kconfig files. +It can be used as a Python library or as a standalone terminal or GUI menuconfig +interface.") + (license license:isc))) + (define-public python-kitchen (package (name "python-kitchen") @@ -31428,6 +31473,38 @@ structure.") for YAML and JSON.") (license license:expat))) +(define-public python-pykakasi + (package + (name "python-pykakasi") + (version "2.3.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pykakasi" version)) + (sha256 + (base32 "18dhcw7myw5idajnfynjbvqxmyf9m0cygfwsavbbi7zmcf72l1gs")))) + (build-system pyproject-build-system) + (arguments (list #:test-flags ''("-k" "not test_aozora"))) + (propagated-inputs (list python-deprecated python-importlib-resources + python-jaconv)) + (native-inputs (list python-coverage + python-py-cpuinfo + python-pytest + python-pytest-benchmark + python-setuptools + python-setuptools-scm + python-wheel)) + (home-page "https://codeberg.org/miurahr/pykakasi") + (synopsis "Kana kanji simple inversion library") + (description + "pykakasi is a Python Natural Language Processing @acronym{NLP, Natural +Language Processing} library to transliterate hiragana, katakana and +kanji (Japanese text) into rōmaji (Latin/Roman alphabet). It can handle +characters in NFC form. + +Its algorithms are based on the kakasi library, which is written in C.") + (license license:gpl3+))) + (define-public python-dbus-python (package (name "python-dbus-python") diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm index 5262f7277f..a1abfa11fa 100644 --- a/gnu/packages/racket.scm +++ b/gnu/packages/racket.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013-2016, 2018, 2020-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz> -;;; Copyright © 2021-2024 Philip McGrath <philip@philipmcgrath.com> +;;; Copyright © 2021-2025 Philip McGrath <philip@philipmcgrath.com> ;;; Copyright © 2021 jgart <jgart@dismail.de> ;;; ;;; This file is part of GNU Guix. @@ -201,7 +201,7 @@ ;; ;; CODE: -(define %racket-version "8.15") ; Remember to update chez-scheme-for-racket! +(define %racket-version "8.17") ; Remember to update chez-scheme-for-racket! (define %racket-commit (string-append "v" %racket-version)) (define %racket-origin @@ -211,7 +211,7 @@ (url "https://github.com/racket/racket") (commit %racket-commit))) (sha256 - (base32 "1lci426vvi64s077vwkxdgpkda4aggafxz52k7km2p8ngwmg9f78")) + (base32 "1zbpsa6nrp2mzflylag250dj8b937y1ivs7kgx99bix92kh8zcz2")) (file-name (git-file-name "racket" %racket-version)) (patches (search-patches "racket-chez-scheme-bin-sh.patch" "racket-launcher-config-dir.patch" @@ -243,7 +243,7 @@ (define-public zuo (package (name "zuo") - (version "1.10") ; defined in racket/src/zuo/zuo.c or the following + (version "1.12") ; defined in racket/src/zuo/zuo.c or the following #;(displayln (~a (hash-ref (runtime-env) 'version) "." (hash-ref (runtime-env) 'minor-version))) (source (origin @@ -252,7 +252,7 @@ (url "https://github.com/racket/zuo") (commit (string-append "v" version)))) (sha256 - (base32 "007bjbhxbw3dq75klaa6f6ljhri2qxi43q6n74wyy50vr9yhx4s1")) + (base32 "053zn230v4bgfrf7clrqcp5d614fh4sv00hr5qw3vdvnl006shh5")) (file-name (git-file-name name version)) (patches (search-patches "zuo-bin-sh.patch")))) (outputs '("out" "debug")) @@ -695,6 +695,7 @@ DrRacket IDE, are not included.") ("racket-index" "pkgs/racket-index") ("scheme-doc" "pkgs/scheme-doc") ("sandbox-lib" "pkgs/sandbox-lib") + ("sequence-tools-lib" "pkgs/sequence-tools-lib") ("zo-lib" "pkgs/zo-lib"))) (simple-racket-origin "cext-lib" (base32 "01dirj5nq9s384xqpzh1p07la38vcycsim0k1ls04a52sgyglgwc") @@ -703,7 +704,7 @@ DrRacket IDE, are not included.") "class-iop" (base32 "08z57q83cr7wnh6g8ah3hdhmsmf9zp1jfs7yvxv188l3hzvygy5l") '("class-iop-lib")) (simple-racket-origin - "compatibility" (base32 "1fwssnz6himnkb45ngd48ngkh01xl940y0ivdk7kpkpi0qla7glp") + "compatibility" (base32 "1d1py9wizi4jnzak7b6d0p9filxv1x9mlx5gsp3yhcjajigq182p") '("compatibility" "compatibility-doc" "compatibility-lib")) (simple-racket-origin "contract-profile" (base32 "1xm2z8g0dpv5d9h2sg680vx1a8ix9gbsdpxxb8qv1w7akp73paj3") @@ -715,20 +716,26 @@ DrRacket IDE, are not included.") "datalog" (base32 "0nf6cy4djpyhfvgpa6yn72apbz9s83gp0qg95pzjd0az4v6qwq1s") '(("datalog" "."))) (simple-racket-origin - "db" (base32 "16jyl0snw2f52mbpzf5rlccwl5cm7bfsiy8mbqlr1slmli84z5yx") + "db" (base32 "0ijiha9cmwa61srrzr0g9rvxplfih9pbmrw619vj3hgzka2z0myz") '("db" "db-doc" "db-lib")) (simple-racket-origin - "deinprogramm" (base32 "05l643h1mc4v7jhs4fq7yi84zl24nk1zx6ld07a6zgn85kik3vzb") - '("deinprogramm" "deinprogramm-signature")) + "deinprogramm" (base32 "0wwv5zphc3sm5n0vv8v1hlbkf85m1m2c5kkf13ll1awc6yv8z1kv") + '("deinprogramm" + "deinprogramm-doc" + "deinprogramm-lib" + "deinprogramm-signature" + "deinprogramm-tool")) (simple-racket-origin "distributed-places" (base32 "1dajpkj9balqcpv6cdk9hwjz592h1vq8rrx5vncariiac4vbdpa0") '("distributed-places" "distributed-places-doc" "distributed-places-lib")) (simple-racket-origin - "draw" (base32 "1h7mckay8yjcgmj3r0jkf1csn430gn43n8jl1l956q9gcprlmncl") + "draw" (base32 "0f980ggciy09y1adm2a428p1vpgp20m7zrhqwqvbqy2n6mnvxnxd") '("draw" "draw-doc" "draw-lib")) (simple-racket-origin - "drracket" (base32 "0ixxr3a2xwanfira43349pmqc1fqs10s5ssd7an9wclr8n6aab4g") + "drracket" (base32 "11shkj39bfjr8bkabdlw757f31q7znbjgph49zfm0pndq4zmgbkd") '("drracket" + "drracket-core" + "drracket-core-lib" "drracket-plugin-lib" "drracket-tool" "drracket-tool-doc" @@ -747,7 +754,7 @@ DrRacket IDE, are not included.") "errortrace" (base32 "0l9k2rx6z4jkid7kxhbs763s66pxbzvfrgxajykbrmqkv77lhb3w") '("errortrace" "errortrace-doc" "errortrace-lib")) (simple-racket-origin - "expeditor" (base32 "0m9ga4scg49pbv60gnl0ky5al72012psa4dfgnkzq0bnf5lwwm2i") + "expeditor" (base32 "0dyxsg727wsrni4mjaj72q7r6l8q9frc0hh3axc03y9j44andx86") '("expeditor" "expeditor-doc" "expeditor-lib")) (simple-racket-origin "frtime" (base32 "0ydz2yn8vvv6z7brwlswcyx0f31a6y6d443i89rysfvd2xkhpfd5") @@ -761,13 +768,13 @@ DrRacket IDE, are not included.") "games" (base32 "13z7fnbr48s98lmfxc0nbfhbqkd4hphymy2r63hqm783xzn6ylzi") '(("games" "."))) (simple-racket-origin - "gui" (base32 "1vzyfjxch2pzfj7w0gm0zx65afc7xckx6v79xz3kkp7v5bn4cx1l") + "gui" (base32 "12fqk1pc9x1hmlrbzh5afcm4xmk0m5jqydixzibcp1q211san310") '("gui" "gui-doc" "gui-lib" "tex-table")) (simple-racket-origin - "gui-pkg-manager" (base32 "1ji9448d723nklqvycwdswj0ni28sabrncag14f9mx47did5myb5") + "gui-pkg-manager" (base32 "024880k3wmvkqhjc954prrkavwv3bgafcw00ajz7h2llygh0aqpl") '("gui-pkg-manager-lib")) (simple-racket-origin - "htdp" (base32 "17nbsnqr4wb9j2slhpk78cz3r38286vpm4j79ql0k9b57x5fwgz5") + "htdp" (base32 "1y1sf3k704q0p25bxgqnplzpm4hfcy8czgfcf1zakqa287w693d9") '("htdp" "htdp-doc" "htdp-lib")) (simple-racket-origin "html" (base32 "18n1jnjgzfknc8nv8dppi85nb8q08gqdwkg6hfjk08x0p00anx2x") @@ -776,7 +783,7 @@ DrRacket IDE, are not included.") "icons" (base32 "1s5a6j11fg3fdr6b7vm2q7q178d7q8b8igy73bs211r27qrd1gg7") '(("icons" "."))) (simple-racket-origin - "images" (base32 "0rpjxqw34bq5m08kh1ldl1mr7s9z1lyydxxcyzb292kqh9qiqvfl") + "images" (base32 "0ckg53nzq4zdv8qc4f5nim9wsgsnif56w1wmji5w2czfm0j7frln") '("images" "images-doc" "images-gui-lib" "images-lib")) (simple-racket-origin "lazy" (base32 "0rn8kd0ih7aw6fj1g7jdvi5978a6q4hyd6gbh89nb6j5ijvlgn43") @@ -791,7 +798,7 @@ DrRacket IDE, are not included.") "make" (base32 "10852fj30bz5r46c3d99s37fkgy5yh44gb01j29sf3kxnhi0g2sa") '(("make" "."))) (simple-racket-origin - "math" (base32 "0nldjgzn4aw8n5pw8cj5q3y1ycr9g4vzsxzkyjvd86v9whnyzhcm") + "math" (base32 "1xlqbwnsbyc62dfmnn9whccq3fr3iwkvl0y4ykzrkzf6a74j75jc") '("math" "math-doc" "math-lib")) (simple-racket-origin "mysterx" (base32 "11p9jzrafw0hizhl0cs4sxx7rv281185q8hryic2rpk0kzjdyr48") @@ -832,16 +839,16 @@ DrRacket IDE, are not included.") "parser-tools" (base32 "0i822p7ik6q03l7mrlf0qb63xdxvx06yl5lg1g1qri5wmi5xj0pb") '("parser-tools" "parser-tools-doc" "parser-tools-lib")) (simple-racket-origin - "pconvert" (base32 "00czi0p399mmyrvxyrs5kniizpkqfxyz2ncxqi2jy79a7wk79pb1") - '("pconvert-lib")) + "pconvert" (base32 "0xw9f9692v2qp16fwmwmwmrb118kpz259vmx8cq6s9vsw0112zpq") + '("pconvert-lib" "pconvert-doc")) (simple-racket-origin - "pict" (base32 "1swnwihfnbsz9k11515i0fbfhx1gn7qcygn1dxkrdvb89g4h1pf3") + "pict" (base32 "0xy5hf12wds4gvx29pgcd9z4a60q6pfnl0qw5gphcplhg2bzm4rr") '("pict" "pict-doc" "pict-lib")) (simple-racket-origin "pict-snip" (base32 "081nwiy4a0n4f7xws16hqbhf0j3kz5alizndi3nnyr3chm4kng6x") '("pict-snip" "pict-snip-doc" "pict-snip-lib")) (simple-racket-origin - "picturing-programs" (base32 "1g6xr39hx1j03gb3d4dljm3v91xcj2gfpq3dgy5xvplzr6cmmxgr") + "picturing-programs" (base32 "1a3d6nw9n827b4711nvgrnw7w47k4fxvk8c2a8br6a1l748kxkwy") '(("picturing-programs" "."))) (simple-racket-origin "plai" (base32 "1vcplmrzk2wr0n0m4fa0nq9ir986d5nk3dvcd7h1rv2jvhkcqdaq") @@ -856,7 +863,7 @@ DrRacket IDE, are not included.") "preprocessor" (base32 "1p5aid58ifnjy4xl0ysh85cq39k25661v975jrpk182z3k5621mg") '(("preprocessor" "."))) (simple-racket-origin - "profile" (base32 "179i86lyby29nywz60l4vnadi02w8b12h7501nm5h5g4pq9jjmbb") + "profile" (base32 "10lv3iz58hqk043llnbqrkmjnm1pbvr4j1j188g85zg798rqyjzs") '("profile" "profile-doc" "profile-lib")) (racket-packages-origin "quickscript" (origin @@ -865,14 +872,14 @@ DrRacket IDE, are not included.") (url "https://github.com/Metaxal/quickscript") (commit %racket-commit))) (sha256 (base32 - "1ahznb9rhgaixd3fqn0pxighw4zbflwqc84r2yvn5nsfbp0mrq9b")) + "1r7i4g39hfkn0wb34dylzcp43ys1zl7ra9wmbzly07an7891xmns")) (file-name (git-file-name "Metaxal-quickscript" %racket-version))) '(("quickscript" "."))) (simple-racket-origin - "r5rs" (base32 "0iciz6khmynly0901kl9m7rnd1d3nxrin0rl6d9rjwvsks30aqad") + "r5rs" (base32 "06rw7aihq4wdr27nan42mfg13fs9lh8d0hf7m9g8m5vmnkd3h2pn") '("r5rs" "r5rs-doc" "r5rs-lib")) (simple-racket-origin - "r6rs" (base32 "1mgcxd88s67w47a2z1i6snz8qhbngjbmr6rs4pchpnrfap96ssgl") + "r6rs" (base32 "1ildnf12i369drf1j24rclyhhpa9p3zjrfkbkb8ggdrajbwkrvsm") '("r6rs" "r6rs-doc" "r6rs-lib")) (racket-packages-origin "racket-cheat" (origin @@ -881,7 +888,7 @@ DrRacket IDE, are not included.") (url "https://github.com/jeapostrophe/racket-cheat") (commit %racket-commit))) (sha256 (base32 - "06wcj558rzkbl2bwkmikyspya9v1f4iwlzwnwxpkc33h2xapwabr")) + "1q0da3hm64fj64f713yxdlg7x1hp162fnn3mc7al2hzk098w242w")) (file-name (git-file-name "jeapostrophe-racket-cheat" %racket-version))) '(("racket-cheat" "."))) @@ -889,7 +896,7 @@ DrRacket IDE, are not included.") "racklog" (base32 "0fr8xij0sssfnmwn6dfdi4jj3l62f2yj3jrjljv13kaycrfls032") '(("racklog" "."))) (simple-racket-origin - "rackunit" (base32 "0g6912vc97djsck4jxwkxnijzskx340r1y541rrn3q1ga0p5s80d") + "rackunit" (base32 "0csfxzbrk7jic4hjj0ljiry88sh9vp6rh6z0600zsybhs3vgrxsj") '("rackunit" "rackunit-doc" "rackunit-gui" @@ -905,7 +912,7 @@ DrRacket IDE, are not included.") "realm" (base32 "0rlvwyd6rpyl0zda4a5p8dp346fvqzc8555dgfnrhliymkxb6x4g") '(("realm" "."))) (simple-racket-origin - "redex" (base32 "1ws2wycv84yjp1dz58lbc603hpk53yfvcmx5qgjn2x5sij2l1bd1") + "redex" (base32 "1m7dimbf5raxhw9d9c5iinslijzgdnhdwd46wb7w62l0vv975pgz") '("redex" "redex-benchmark" "redex-doc" @@ -920,7 +927,7 @@ DrRacket IDE, are not included.") "scheme-lib" (base32 "0pcf0y8rp4qyjhaz5ww5sr5diq0wpcdfrrnask7zapyklzx1jx8x") '(("scheme-lib" "."))) (simple-racket-origin - "scribble" (base32 "16rd0lgy193q1j737lyfqdy1xxi2dgn0ld5q0m294qpmi7554i7m") + "scribble" (base32 "1cy763syzvhgxyrln9d8ns6m7x7sf1x430ip10skdd2id71xrzh8") '("scribble" "scribble-doc" "scribble-html-lib" @@ -946,13 +953,13 @@ DrRacket IDE, are not included.") "slatex" (base32 "0pkm2isbbdk63slrbsxcql7rr0wdrw5kapw1xq4ps5k8dhlzv8x0") '(("slatex" "."))) (simple-racket-origin - "slideshow" (base32 "14kvw09y0i9l3330rqgd0085p5csp6r877bqjh2jg7caig4zch5w") + "slideshow" (base32 "0zagamjigvw6z66q7v7jf2xffg34clqjf0k1f1fzhcgiy9g0skw7") '("slideshow" "slideshow-doc" "slideshow-exe" "slideshow-lib" "slideshow-plugin")) (simple-racket-origin "snip" (base32 "1jpy5728w9bszgsjczlzrjjxsvqlcn4ah6gd3rp0plp8zzk9mq0s") '("snip" "snip-lib")) (simple-racket-origin - "typed-racket" (base32 "172j080vyqkv23jfxs207smk2m2bkykr54aw9fnqwjrax1pjwac9") + "typed-racket" (base32 "1h27qc44vzar0ngllqimza02zj7b46bwj059jcblrxvhmqb2vi3p") '("source-syntax" "typed-racket" "typed-racket-compatibility" @@ -963,7 +970,7 @@ DrRacket IDE, are not included.") "srfi" (base32 "0z7kchsz9m6cb4qmbznzqs2px45fz1g81amg9zn7n1sa31x3jzch") '("srfi" "srfi-doc" "srfi-lib" "srfi-lite-lib")) (simple-racket-origin - "string-constants" (base32 "0qgj8qfwy2fyswh5raqi05r96gjij9228i8r0g8vr5dmnwp6gfg7") + "string-constants" (base32 "0b08xjniwnirwr55jnvbc93jsqyb2smsy9h2214w01f20x51i0na") '("string-constants" "string-constants-doc" "string-constants-lib")) (simple-racket-origin "swindle" (base32 "1q8vdxpzczzwdw2mys2caab45yvadmqkixsr29k8pl03n8dsg8j9") @@ -972,7 +979,7 @@ DrRacket IDE, are not included.") "syntax-color" (base32 "1h1nrxs5l8kbx3qc6nf6jvfpjasn2h2rz6grskgqbxwja7wvhfca") '("syntax-color" "syntax-color-doc" "syntax-color-lib")) (simple-racket-origin - "trace" (base32 "070ihla5j796hdarn5wxdwn4xj0xnkm50shgh49jy994mribvhia") + "trace" (base32 "1zx0kfbacidg5rllbvx842x949ra22n004irs3vm1hqmwmixy3is") '(("trace" "."))) (simple-racket-origin "unix-socket" (base32 "02dfwas5ynbpyz74w9kwb4wgb37y5wys7svrlmir8k0n9ph9vq0y") diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm index 6c1bd0dc17..954e8a0c55 100644 --- a/gnu/packages/shellutils.scm +++ b/gnu/packages/shellutils.scm @@ -754,7 +754,8 @@ Latin script and other languages.") "0p6n9zi3p9frj3ndnpdc1cz51hq0nkyjc9b1rqg7967l8vhdr8f6")))) (build-system go-build-system) (arguments - (list #:import-path "github.com/direnv/direnv" + (list #:install-source? #f + #:import-path "github.com/direnv/direnv" #:phases #~(modify-phases %standard-phases (add-after 'install 'install-manpages diff --git a/gnu/packages/swig.scm b/gnu/packages/swig.scm index d852f40f51..856d760034 100644 --- a/gnu/packages/swig.scm +++ b/gnu/packages/swig.scm @@ -79,7 +79,7 @@ you tailor the wrapping process to suit your application.") (package (inherit swig) (name "swig") - (version "4.3.0") + (version "4.3.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/" name "/" name "/" @@ -87,5 +87,10 @@ you tailor the wrapping process to suit your application.") name "-" version ".tar.gz")) (sha256 (base32 - "17ma0iwan81hnmd1wqx9g8dx7l6b6ri8218cqy3gj6pnjvvkw87p")))) + "1f31xjxymq0nwlis0jn2xjcnd29qmfn6jk9bb9ipvqgif2gq5z24")))) + (native-inputs (list boost + pcre2 ; for pcre2-config + ;; The following are for tests and examples: + guile-3.0 + perl)) (inputs (list pcre2)))) diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm index 61220bb9fe..e8d4d09a56 100644 --- a/gnu/packages/syndication.scm +++ b/gnu/packages/syndication.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016, 2017, 2019-2024 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2019-2025 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018, 2019, 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020, 2023 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net> @@ -294,7 +294,7 @@ cards.") rust-section-testing-0.0.5) #:phases #~(modify-phases %standard-phases - #$@(if (not (this-package-native-input "asciidoctor")) + #$@(if (not (this-package-native-input "ruby-asciidoctor")) #~((add-after 'unpack 'dont-use-asciidoctor (lambda _ (substitute* "config.sh" diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index 40193e12de..23faaa9d8e 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -990,10 +990,10 @@ minimalistic.") (home-page "https://www.uninformativ.de/git/xiate/file/README.html") (license license:expat)))) -(define-public go-github-com-junegunn-fzf +(define-public fzf (package - (name "go-github-com-junegunn-fzf") - (version "0.60.2") + (name "fzf") + (version "0.62.0") (source (origin (method git-fetch) @@ -1002,59 +1002,36 @@ minimalistic.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "1c18h9326i8g9ksbfrpzrxpz8xlym2a35fpjsi7dn1dv6rr3jayn")))) + (base32 "1kwia7dmsaq08048h3s6avrczvca2mpd8sa3m4r1y28wjqjxmkbk")))) (build-system go-build-system) (arguments - `(#:import-path "github.com/junegunn/fzf")) - (inputs - (list go-github-com-charlievieth-fastwalk - go-github-com-gdamore-tcell-v2 - go-github-com-junegunn-go-shellwords - go-github-com-mattn-go-isatty - go-github-com-rivo-uniseg - go-golang-org-x-sys - go-golang-org-x-term)) - (home-page "https://github.com/junegunn/fzf") - (synopsis "Command-line fuzzy-finder") - (description "This package provides an interactive command-line filter -usable with any list--including files, command history, processes and more.") - (license license:expat))) - -(define-public fzf - (package - (inherit go-github-com-junegunn-fzf) - (name "fzf") - (arguments - (ensure-keyword-arguments - (package-arguments go-github-com-junegunn-fzf) - `(#:install-source? #f - #:phases - (modify-phases %standard-phases + (list + #:install-source? #f + #:import-path "github.com/junegunn/fzf" + #:phases + #~(modify-phases %standard-phases (add-after 'install 'copy-binaries - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (with-directory-excursion "src/github.com/junegunn/fzf" - (install-file "bin/fzf-tmux" - (string-append out "/bin")))))) + (lambda* (#:key import-path #:allow-other-keys) + (with-directory-excursion (string-append "src/" import-path) + (install-file "bin/fzf-tmux" (string-append #$output "/bin"))))) (add-after 'copy-binaries 'wrap-programs - (lambda* (#:key outputs inputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (findutils (assoc-ref inputs "findutils")) - (ncurses (assoc-ref inputs "ncurses"))) + (lambda _ + (let* ((bin (string-append #$output "/bin")) + (findutils #$(this-package-input "findutils")) + (ncurses #$(this-package-input "ncurses"))) (wrap-program (string-append bin "/fzf") `("PATH" ":" prefix (,(string-append findutils "/bin")))) (wrap-program (string-append bin "/fzf-tmux") `("PATH" ":" prefix (,(string-append ncurses "/bin"))))))) (add-after 'install 'install-completions - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bash-completion (string-append out "/etc/bash_completion.d")) + (lambda* (#:key import-path #:allow-other-keys) + (let* ((bash-completion + (string-append #$output "/etc/bash_completion.d")) (fish-functions - (string-append out "/share/fish/vendor_functions.d")) - (zsh-completion (string-append out "/share/zsh/site-functions"))) - (with-directory-excursion "src/github.com/junegunn/fzf" + (string-append #$output "/share/fish/vendor_functions.d")) + (zsh-completion + (string-append #$output "/share/zsh/site-functions"))) + (with-directory-excursion (string-append "src/" import-path) (mkdir-p bash-completion) (copy-file "shell/completion.bash" (string-append bash-completion "/fzf")) @@ -1063,12 +1040,24 @@ usable with any list--including files, command history, processes and more.") (string-append fish-functions "/fzf_key_bindings.fish")) (mkdir-p zsh-completion) (copy-file "shell/completion.zsh" - (string-append zsh-completion "/_fzf")))))))))) + (string-append zsh-completion "/_fzf"))))))))) + (native-inputs + (list go-github-com-charlievieth-fastwalk + go-github-com-gdamore-tcell-v2 + go-github-com-junegunn-go-shellwords + go-github-com-mattn-go-isatty + go-github-com-rivo-uniseg + go-golang-org-x-sys + go-golang-org-x-term)) (inputs - `(,@(package-inputs go-github-com-junegunn-fzf) - ("bash" ,bash-minimal) ; for wrap-program - ("findutils" ,findutils) - ("ncurses" ,ncurses))))) + (list bash-minimal + findutils + ncurses)) + (home-page "https://github.com/junegunn/fzf") + (synopsis "Command-line fuzzy-finder") + (description "This package provides an interactive command-line filter +usable with any list--including files, command history, processes and more.") + (license license:expat))) (define-public python-pyte (package @@ -1800,3 +1789,50 @@ support. It's based on VTE and aimed at power users.") (home-page "https://realh.github.io/roxterm/en/index.html") ;; src/gresources.c is under LGPL 2.1+ (license (list license:gpl2+ license:lgpl2.1+)))) + +(define-public fbterm + (package + (name "fbterm") + (version "1.7") + (source + (origin + (method git-fetch) + (uri (git-reference (url "https://salsa.debian.org/debian/fbterm.git") + (commit (string-append "upstream/" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1nl9z169a59akgb8b5j2pw5fp3bbkmv553rryffkfz45d1cxskvq")))) + (build-system gnu-build-system) + (arguments + (list #:make-flags #~(list (string-append "prefix=" #$output) + "HOME=/tmp" + + ;; Silence "narrow conversion" errors. + "CXXFLAGS=-Wno-narrowing -O2 -g"))) + (inputs (list freetype fontconfig ncurses gpm)) + (native-inputs (list pkg-config)) + (home-page "https://salsa.debian.org/debian/fbterm") + (synopsis "Fast and lightweight framebuffer-based terminal emulator for Linux") + (description "FbTerm is a fast terminal emulator for Linux with frame +buffer device or VESA video card. Features include: + +@itemize +@item mostly as fast as terminal of Linux kernel while accelerated scrolling +is enabled; +@item select font with fontconfig and draw text with freetype2, same as +Qt/Gtk+ based GUI apps; +@item dynamically create/destroy up to 10 windows initially running default +shell; +@item record scrollback history for every window; +@item auto-detect current locale and convert text encoding, support double +width scripts like Chinese, Japanese etc; +@item switch between configurable additional text encodings with hot keys on +the fly; +@item copy/paste selected text between windows with mouse when gpm server is +running; +@item change the orientation of screen display, a.k.a. screen rotation; +@item lightweight input method framework with client-server architecture; +@item background image for eye candy. +@end itemize") + (license license:gpl2+))) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index f0a0e73eb0..8f2e1f5245 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -1193,7 +1193,7 @@ provides an integration with GitHub and GitLab.") (define-public got (package (name "got") - (version "0.112") + (version "0.113") (source (origin (method url-fetch) (uri @@ -1202,7 +1202,7 @@ provides an integration with GitHub and GitLab.") version ".tar.gz")) (sha256 (base32 - "12gx59ki610a9iydscg9jf3m7qcnyx34wmsah26by4hix57njdp3")))) + "00bgqmjd62jsyxl08fcj872hl08dq1dmj1r8jfx2myimk8dqlii9")))) (inputs (list libevent `(,util-linux "lib") diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index f1c9b30afa..ee789d1c2c 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -70,6 +70,8 @@ ;;; Copyright © 2023, 2024 Zheng Junjie <873216071@qq.com> ;;; Copyright © 2024 Artyom V. Poptsov <poptsov.artyom@gmail.com> ;;; Copyright © 2024 aurtzy <aurtzy@gmail.com> +;;; Copyright © 2025 Formbi <formbi@protonmail.com> +;;; Copyright © 2025 Sharlatan Hellseher <sharlatanus@gmail.ccom> ;;; ;;; This file is part of GNU Guix. ;;; @@ -154,6 +156,8 @@ #:use-module (gnu packages gnome) #:use-module (gnu packages gnunet) #:use-module (gnu packages gnupg) + #:use-module (gnu packages golang-build) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages haskell-xyz) @@ -3108,7 +3112,7 @@ YouTube.com and many more sites.") (define-public yt-dlp (package (name "yt-dlp") - (version "2025.05.22") + (version "2025.06.09") (source (origin (method git-fetch) @@ -3120,7 +3124,7 @@ YouTube.com and many more sites.") (snippet '(substitute* "pyproject.toml" (("^.*Programming Language :: Python :: 3\\.13.*$") ""))) (sha256 - (base32 "0sgiwah8qcinc9idvn8garnmqd9rj07cjfndy7z1qvakczknw5q2")))) + (base32 "0iv42r09y47bicx6w6r3lhpxh4p4lk1hl4pasif273shjiwh6pwp")))) (build-system pyproject-build-system) (arguments `(#:tests? ,(not (%current-target-system)) @@ -3341,6 +3345,51 @@ Both command-line and GTK2 interface are available.") playlists.") (license license:gpl3+))) +(define-public ytarchive + (package + (name "ytarchive") + (version "0.5.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Kethsar/ytarchive") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1mx7w423rr6s4zvv65sbzl5rifj67rb0pzxjpi2y69l9p1vynmv3")))) + (build-system go-build-system) + (arguments + (list + #:install-source? #f + #:import-path "github.com/Kethsar/ytarchive" + #:embed-files #~(list "children" "nodes" "text") + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'wrap + (lambda _ + (wrap-program (string-append #$output "/bin/ytarchive") + `("PATH" ":" prefix + (,(string-append #$(this-package-input "ffmpeg") + "/bin/ffmpeg"))))))))) + (native-inputs + (list go-github-com-alessio-shellescape + go-github-com-dannav-hhmmss + go-github-com-mattn-go-colorable + go-github-com-xhit-go-str2duration-v2 + go-golang-org-x-net + go-golang-org-x-sys)) + (inputs + (list ffmpeg)) + (home-page "https://github.com/Kethsar/ytarchive") + (synopsis "Youtube livestream downloader") + (description + "Attempt to archive a given Youtube livestream from the start. This is +most useful for streams that have already started and you want to download, +but can also be used to wait for a scheduled stream and start downloading as +soon as it starts.") + (license license:expat))) + (define-public libbluray (package (name "libbluray") diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 1610c05013..22369cd3f5 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -10,7 +10,7 @@ ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org> -;;; Copyright © 2016-2024 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016-2025 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016, 2023 Clément Lassieur <clement@lassieur.org> @@ -5618,7 +5618,7 @@ It uses the uwsgi protocol for all the networking/interprocess communications.") (define-public jq (package (name "jq") - (version "1.7.1") + (version "1.8.0") (source (origin (method url-fetch) @@ -5626,18 +5626,18 @@ It uses the uwsgi protocol for all the networking/interprocess communications.") "/releases/download/jq-" version "/jq-" version ".tar.gz")) (sha256 - (base32 "1hl0wppdwwrqf3gzg3xwc260s7i1br2lnc97zr1k8bpx56hrr327")) + (base32 "171i5dnw15gx4ah3xv05vhlq8b5pr7zbzhjhzyan36hxz5vib0ci")) (modules '((guix build utils))) (snippet ;; Remove bundled onigurama. - '(delete-file-recursively "modules")))) + '(delete-file-recursively "vendor/oniguruma")))) (inputs (list oniguruma)) (native-inputs (append ;; TODO: fix gems to generate documentation ;(list ruby bundler) - '() + (list tzdata-for-tests) ; needed for tests (if (member (%current-system) (package-supported-systems valgrind/pinned)) (list valgrind/pinned) diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 38ff218735..b4bbddff14 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -369,7 +369,10 @@ users are allowed." (define %standard-geoclue-applications (list (geoclue-application "gnome-datetime-panel" #:system? #t) (geoclue-application "epiphany" #:system? #f) - (geoclue-application "firefox" #:system? #f))) + (geoclue-application "firefox" #:system? #f) + (geoclue-application "librewolf" #:system? #f) + (geoclue-application "icecat" #:system? #f) + (geoclue-application "redshift" #:system? #f))) ;; TODO: Use define-configuration and export accessors. (define-record-type* <geoclue-configuration> diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 4bda102986..52e37d20ab 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -455,14 +455,17 @@ record instead of a package. Please adjust your configuration accordingly.")) (dhcp-client-configuration (package package)))))) -(define dhcp-client-service-type +(define-deprecated dhcp-client-service-type + dhcpcd-service-type (service-type (name 'dhcp-client) (extensions (list (service-extension shepherd-root-service-type dhcp-client-shepherd-service))) (default-value (dhcp-client-configuration)) (description "Run @command{dhcp}, a Dynamic Host Configuration -Protocol (DHCP) client, on all the non-loopback network interfaces."))) +Protocol (DHCP) client, on all the non-loopback network interfaces. + +This services is deprecated as ISC's DHCP client reached its end-of-life."))) (define-record-type* <dhcpd-configuration> dhcpd-configuration make-dhcpd-configuration diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc index 47e93d1a21..afdcd9518b 100644 --- a/nix/libstore/build.cc +++ b/nix/libstore/build.cc @@ -336,9 +336,9 @@ void addToWeakGoals(WeakGoals & goals, GoalPtr p) { // FIXME: necessary? // FIXME: O(n) - foreach (WeakGoals::iterator, i, goals) - if (i->lock() == p) return; - goals.push_back(p); + bool b = std::none_of(goals.begin(), goals.end(), + [p](WeakGoalPtr i) { return i.lock() == p; }); + if (b) goals.push_back(p); else return; } @@ -367,11 +367,11 @@ void Goal::waiteeDone(GoalPtr waitee, ExitCode result) /* If we failed and keepGoing is not set, we remove all remaining waitees. */ - foreach (Goals::iterator, i, waitees) { - GoalPtr goal = *i; + for (auto& i : waitees) { + GoalPtr goal = i; WeakGoals waiters2; - foreach (WeakGoals::iterator, j, goal->waiters) - if (j->lock() != shared_from_this()) waiters2.push_back(*j); + for (auto& j : goal->waiters) + if (j.lock() != shared_from_this()) waiters2.push_back(j); goal->waiters = waiters2; } waitees.clear(); @@ -387,8 +387,8 @@ void Goal::amDone(ExitCode result) assert(exitCode == ecBusy); assert(result == ecSuccess || result == ecFailed || result == ecNoSubstituters || result == ecIncompleteClosure); exitCode = result; - foreach (WeakGoals::iterator, i, waiters) { - GoalPtr goal = i->lock(); + for (auto& i : waiters) { + GoalPtr goal = i.lock(); if (goal) goal->waiteeDone(shared_from_this(), result); } waiters.clear(); @@ -498,13 +498,13 @@ void UserLock::acquire() /* Find a user account that isn't currently in use for another build. */ - foreach (Strings::iterator, i, users) { - debug(format("trying user `%1%'") % *i); + for (auto& i : users) { + debug(format("trying user `%1%'") % i); - struct passwd * pw = getpwnam(i->c_str()); + struct passwd * pw = getpwnam(i.c_str()); if (!pw) throw Error(format("the user `%1%' in the group `%2%' does not exist") - % *i % settings.buildUsersGroup); + % i % settings.buildUsersGroup); createDirs(settings.nixStateDir + "/userpool"); @@ -522,7 +522,7 @@ void UserLock::acquire() if (lockFile(fd, ltWrite, false)) { fdUserLock = fd.borrow(); lockedPaths.insert(fnUserLock); - user = *i; + user = i; uid = pw->pw_uid; /* Sanity check... */ @@ -576,12 +576,12 @@ typedef map<string, string> HashRewrites; string rewriteHashes(string s, const HashRewrites & rewrites) { - foreach (HashRewrites::const_iterator, i, rewrites) { - assert(i->first.size() == i->second.size()); + for (auto& i : rewrites) { + assert(i.first.size() == i.second.size()); size_t j = 0; - while ((j = s.find(i->first, j)) != string::npos) { + while ((j = s.find(i.first, j)) != string::npos) { debug(format("rewriting @ %1%") % j); - s.replace(j, i->second.size(), i->second); + s.replace(j, i.second.size(), i.second); } } return s; @@ -884,9 +884,9 @@ void DerivationGoal::addWantedOutputs(const StringSet & outputs) wantedOutputs.clear(); needRestart = true; } else - foreach (StringSet::const_iterator, i, outputs) - if (wantedOutputs.find(*i) == wantedOutputs.end()) { - wantedOutputs.insert(*i); + for (const auto& i : outputs) + if (wantedOutputs.find(i) == wantedOutputs.end()) { + wantedOutputs.insert(i); needRestart = true; } } @@ -933,8 +933,8 @@ void DerivationGoal::haveDerivation() /* Get the derivation. */ drv = derivationFromPath(worker.store, drvPath); - foreach (DerivationOutputs::iterator, i, drv.outputs) - worker.store.addTempRoot(i->second.path); + for (auto& i : drv.outputs) + worker.store.addTempRoot(i.second.path); /* Check what outputs paths are not already valid. */ PathSet invalidOutputs = checkPathValidity(false, buildMode == bmRepair); @@ -947,15 +947,15 @@ void DerivationGoal::haveDerivation() /* Check whether any output previously failed to build. If so, don't bother. */ - foreach (PathSet::iterator, i, invalidOutputs) - if (pathFailed(*i)) return; + for (auto& i : invalidOutputs) + if (pathFailed(i)) return; /* We are first going to try to create the invalid output paths through substitutes. If that doesn't work, we'll build them. */ if (settings.useSubstitutes && substitutesAllowed(drv)) - foreach (PathSet::iterator, i, invalidOutputs) - addWaitee(worker.makeSubstitutionGoal(*i, buildMode == bmRepair)); + for (auto& i : invalidOutputs) + addWaitee(worker.makeSubstitutionGoal(i, buildMode == bmRepair)); if (waitees.empty()) /* to prevent hang (no wake-up event) */ outputsSubstituted(); @@ -1004,11 +1004,11 @@ void DerivationGoal::outputsSubstituted() wantedOutputs = PathSet(); /* The inputs must be built before we can build this goal. */ - foreach (DerivationInputs::iterator, i, drv.inputDrvs) - addWaitee(worker.makeDerivationGoal(i->first, i->second, buildMode == bmRepair ? bmRepair : bmNormal)); + for (auto& i : drv.inputDrvs) + addWaitee(worker.makeDerivationGoal(i.first, i.second, buildMode == bmRepair ? bmRepair : bmNormal)); - foreach (PathSet::iterator, i, drv.inputSrcs) - addWaitee(worker.makeSubstitutionGoal(*i)); + for (auto& i : drv.inputSrcs) + addWaitee(worker.makeSubstitutionGoal(i)); if (waitees.empty()) /* to prevent hang (no wake-up event) */ inputsRealised(); @@ -1026,14 +1026,14 @@ void DerivationGoal::repairClosure() /* Get the output closure. */ PathSet outputClosure; - foreach (DerivationOutputs::iterator, i, drv.outputs) { - if (!wantOutput(i->first, wantedOutputs)) continue; - computeFSClosure(worker.store, i->second.path, outputClosure); + for (auto& i : drv.outputs) { + if (!wantOutput(i.first, wantedOutputs)) continue; + computeFSClosure(worker.store, i.second.path, outputClosure); } /* Filter out our own outputs (which we have already checked). */ - foreach (DerivationOutputs::iterator, i, drv.outputs) - outputClosure.erase(i->second.path); + for (auto& i : drv.outputs) + outputClosure.erase(i.second.path); /* Get all dependencies of this derivation so that we know which derivation is responsible for which path in the output @@ -1041,21 +1041,21 @@ void DerivationGoal::repairClosure() PathSet inputClosure; computeFSClosure(worker.store, drvPath, inputClosure); std::map<Path, Path> outputsToDrv; - foreach (PathSet::iterator, i, inputClosure) - if (isDerivation(*i)) { - Derivation drv = derivationFromPath(worker.store, *i); - foreach (DerivationOutputs::iterator, j, drv.outputs) - outputsToDrv[j->second.path] = *i; + for (auto& i : inputClosure) + if (isDerivation(i)) { + Derivation drv = derivationFromPath(worker.store, i); + for (auto& j : drv.outputs) + outputsToDrv[j.second.path] = i; } /* Check each path (slow!). */ PathSet broken; - foreach (PathSet::iterator, i, outputClosure) { - if (worker.store.pathContentsGood(*i)) continue; - printMsg(lvlError, format("found corrupted or missing path `%1%' in the output closure of `%2%'") % *i % drvPath); - Path drvPath2 = outputsToDrv[*i]; + for (auto& i : outputClosure) { + if (worker.store.pathContentsGood(i)) continue; + printMsg(lvlError, format("found corrupted or missing path `%1%' in the output closure of `%2%'") % i % drvPath); + Path drvPath2 = outputsToDrv[i]; if (drvPath2 == "") - addWaitee(worker.makeSubstitutionGoal(*i, true)); + addWaitee(worker.makeSubstitutionGoal(i, true)); else addWaitee(worker.makeDerivationGoal(drvPath2, PathSet(), bmRepair)); } @@ -1099,32 +1099,32 @@ void DerivationGoal::inputsRealised() running the build hook. */ /* The outputs are referenceable paths. */ - foreach (DerivationOutputs::iterator, i, drv.outputs) { - debug(format("building path `%1%'") % i->second.path); - allPaths.insert(i->second.path); + for (auto& i : drv.outputs) { + debug(format("building path `%1%'") % i.second.path); + allPaths.insert(i.second.path); } /* Determine the full set of input paths. */ /* First, the input derivations. */ - foreach (DerivationInputs::iterator, i, drv.inputDrvs) { + for (auto& i : drv.inputDrvs) { /* Add the relevant output closures of the input derivation `*i' as input paths. Only add the closures of output paths that are specified as inputs. */ - assert(worker.store.isValidPath(i->first)); - Derivation inDrv = derivationFromPath(worker.store, i->first); - foreach (StringSet::iterator, j, i->second) - if (inDrv.outputs.find(*j) != inDrv.outputs.end()) - computeFSClosure(worker.store, inDrv.outputs[*j].path, inputPaths); + assert(worker.store.isValidPath(i.first)); + Derivation inDrv = derivationFromPath(worker.store, i.first); + for (auto& j : i.second) + if (inDrv.outputs.find(j) != inDrv.outputs.end()) + computeFSClosure(worker.store, inDrv.outputs[j].path, inputPaths); else throw Error( format("derivation `%1%' requires non-existent output `%2%' from input derivation `%3%'") - % drvPath % *j % i->first); + % drvPath % j % i.first); } /* Second, the input sources. */ - foreach (PathSet::iterator, i, drv.inputSrcs) - computeFSClosure(worker.store, *i, inputPaths); + for (auto& i : drv.inputSrcs) + computeFSClosure(worker.store, i, inputPaths); debug(format("added input paths %1%") % showPaths(inputPaths)); @@ -1186,10 +1186,10 @@ void DerivationGoal::tryToBuild() (It can't happen between here and the lockPaths() call below because we're not allowing multi-threading.) If so, put this goal to sleep until another goal finishes, then try again. */ - foreach (DerivationOutputs::iterator, i, drv.outputs) - if (pathIsLockedByMe(i->second.path)) { + for (auto& i : drv.outputs) + if (pathIsLockedByMe(i.second.path)) { debug(format("putting derivation `%1%' to sleep because `%2%' is locked by another goal") - % drvPath % i->second.path); + % drvPath % i.second.path); worker.waitForAnyGoal(shared_from_this()); return; } @@ -1222,12 +1222,12 @@ void DerivationGoal::tryToBuild() missingPaths = outputPaths(drv); if (buildMode != bmCheck) - foreach (PathSet::iterator, i, validPaths) missingPaths.erase(*i); + for (auto& i : validPaths) missingPaths.erase(i); /* If any of the outputs already exist but are not valid, delete them. */ - foreach (DerivationOutputs::iterator, i, drv.outputs) { - Path path = i->second.path; + for (auto& i : drv.outputs) { + Path path = i.second.path; if (worker.store.isValidPath(path)) continue; if (!pathExists(path)) continue; debug(format("removing invalid path `%1%'") % path); @@ -1237,8 +1237,8 @@ void DerivationGoal::tryToBuild() /* Check again whether any output previously failed to build, because some other process may have tried and failed before we acquired the lock. */ - foreach (DerivationOutputs::iterator, i, drv.outputs) - if (pathFailed(i->second.path)) return; + for (auto& i : drv.outputs) + if (pathFailed(i.second.path)) return; /* Don't do a remote build if the derivation has the attribute `preferLocalBuild' set. Also, check and repair modes are only @@ -1415,11 +1415,11 @@ void DerivationGoal::buildDone() /* Move paths out of the chroot for easier debugging of build failures. */ if (useChroot && buildMode == bmNormal) - foreach (PathSet::iterator, i, missingPaths) - if (pathExists(chrootRootDir + *i)) { + for (auto& i : missingPaths) + if (pathExists(chrootRootDir + i)) { try { - secureFilePerms(chrootRootDir + *i); - rename((chrootRootDir + *i).c_str(), i->c_str()); + secureFilePerms(chrootRootDir + i); + rename((chrootRootDir + i).c_str(), i.c_str()); } catch(Error & e) { printMsg(lvlError, e.msg()); } @@ -1436,8 +1436,8 @@ void DerivationGoal::buildDone() /* Replace the output, if it exists, by a fresh copy of itself to make sure that there's no stale file descriptor pointing to it (CVE-2024-27297). */ - foreach (DerivationOutputs::iterator, i, drv.outputs) { - Path output = chrootRootDir + i->second.path; + for (auto& i : drv.outputs) { + Path output = chrootRootDir + i.second.path; if (pathExists(output)) { Path pivot = output + ".tmp"; copyFileRecursively(output, pivot, true); @@ -1454,8 +1454,8 @@ void DerivationGoal::buildDone() registerOutputs(); /* Delete unused redirected outputs (when doing hash rewriting). */ - foreach (RedirectedOutputs::iterator, i, redirectedOutputs) - if (pathExists(i->second)) deletePath(i->second); + for (auto& i : redirectedOutputs) + if (pathExists(i.second)) deletePath(i.second); /* Delete the chroot (if we were using one). */ autoDelChroot.reset(); /* this runs the destructor */ @@ -1516,8 +1516,8 @@ void DerivationGoal::buildDone() Hook errors (like communication problems with the remote machine) shouldn't be cached either. */ if (settings.cacheFailure && !fixedOutput && !diskFull) - foreach (DerivationOutputs::iterator, i, drv.outputs) - worker.store.registerFailedPath(i->second.path); + for (auto& i : drv.outputs) + worker.store.registerFailedPath(i.second.path); } done(st, e.msg()); @@ -1554,7 +1554,7 @@ HookReply DerivationGoal::tryBuildHook() required from the build machine. (The hook could parse the drv file itself, but this is easier.) */ Strings features = tokenizeString<Strings>(get(drv.env, "requiredSystemFeatures")); - foreach (Strings::iterator, i, features) checkStoreName(*i); /* !!! abuse */ + for (auto& i : features) checkStoreName(i); /* !!! abuse */ /* Send the request to the hook. */ writeLine(worker.hook->toAgent.writeSide, (format("%1% %2% %3% %4%") @@ -1596,13 +1596,13 @@ HookReply DerivationGoal::tryBuildHook() computeFSClosure(worker.store, drvPath, allInputs); string s; - foreach (PathSet::iterator, i, allInputs) { s += *i; s += ' '; } + for (auto& i : allInputs) { s += i; s += ' '; } writeLine(hook->toAgent.writeSide, s); /* Tell the hooks the missing outputs that have to be copied back from the remote system. */ s = ""; - foreach (PathSet::iterator, i, missingPaths) { s += *i; s += ' '; } + for (auto& i : missingPaths) { s += i; s += ' '; } writeLine(hook->toAgent.writeSide, s); hook->toAgent.writeSide.close(); @@ -1698,8 +1698,8 @@ void DerivationGoal::startBuilder() env["NIX_BUILD_CORES"] = (format("%d") % settings.buildCores).str(); /* Add all bindings specified in the derivation. */ - foreach (StringPairs::iterator, i, drv.env) - env[i->first] = i->second; + for (auto& i : drv.env) + env[i.first] = i.second; /* Create a temporary directory where the build will take place. */ @@ -1752,7 +1752,7 @@ void DerivationGoal::startBuilder() already know the cryptographic hash of the output). */ if (fixedOutput) { Strings varNames = tokenizeString<Strings>(get(drv.env, "impureEnvVars")); - foreach (Strings::iterator, i, varNames) env[*i] = getEnv(*i); + for (auto& i : varNames) env[i] = getEnv(i); } /* The `exportReferencesGraph' feature allows the references graph @@ -1788,11 +1788,11 @@ void DerivationGoal::startBuilder() computeFSClosure(worker.store, storePath, paths); paths2 = paths; - foreach (PathSet::iterator, j, paths2) { - if (isDerivation(*j)) { - Derivation drv = derivationFromPath(worker.store, *j); - foreach (DerivationOutputs::iterator, k, drv.outputs) - computeFSClosure(worker.store, k->second.path, paths); + for (auto& j : paths2) { + if (isDerivation(j)) { + Derivation drv = derivationFromPath(worker.store, j); + for (auto& k : drv.outputs) + computeFSClosure(worker.store, k.second.path, paths); } } @@ -1896,10 +1896,10 @@ void DerivationGoal::startBuilder() /* Make the closure of the inputs available in the chroot, rather than the whole store. This prevents any access to undeclared dependencies. */ - foreach (PathSet::iterator, i, inputPaths) { + for (auto& i : inputPaths) { struct stat st; - if (lstat(i->c_str(), &st)) - throw SysError(format("getting attributes of path `%1%'") % *i); + if (lstat(i.c_str(), &st)) + throw SysError(format("getting attributes of path `%1%'") % i); if (S_ISLNK(st.st_mode)) { /* Since bind-mounts follow symlinks, thus representing their @@ -1907,12 +1907,12 @@ void DerivationGoal::startBuilder() symlinks. XXX: When running unprivileged, TARGET can be deleted by the build process. Use 'open_tree' & co. when it's more widely available. */ - Path target = chrootRootDir + *i; - if (symlink(readLink(*i).c_str(), target.c_str()) == -1) - throw SysError(format("failed to create symlink '%1%' to '%2%'") % target % readLink(*i)); + Path target = chrootRootDir + i; + if (symlink(readLink(i).c_str(), target.c_str()) == -1) + throw SysError(format("failed to create symlink '%1%' to '%2%'") % target % readLink(i)); } else - dirsInChroot[*i] = *i; + dirsInChroot[i] = i; } /* If we're repairing, checking or rebuilding part of a @@ -1943,16 +1943,16 @@ void DerivationGoal::startBuilder() contents of the new outputs to replace the dummy strings with the actual hashes. */ if (validPaths.size() > 0) - foreach (PathSet::iterator, i, validPaths) - addHashRewrite(*i); + for (auto i : validPaths) + addHashRewrite(i); /* If we're repairing, then we don't want to delete the corrupt outputs in advance. So rewrite them as well. */ if (buildMode == bmRepair) - foreach (PathSet::iterator, i, missingPaths) - if (worker.store.isValidPath(*i) && pathExists(*i)) { - addHashRewrite(*i); - redirectedBadOutputs.insert(*i); + for (auto& i : missingPaths) + if (worker.store.isValidPath(i) && pathExists(i)) { + addHashRewrite(i); + redirectedBadOutputs.insert(i); } } @@ -2186,10 +2186,10 @@ void DerivationGoal::runChild() /* Bind-mount all the directories from the "host" filesystem that we want in the chroot environment. */ - foreach (DirsInChroot::iterator, i, dirsInChroot) { + for (auto& i : dirsInChroot) { struct stat st; - Path source = i->second; - Path target = chrootRootDir + i->first; + Path source = i.second; + Path target = chrootRootDir + i.first; if (source == "/proc") continue; // backwards compatibility if (stat(source.c_str(), &st) == -1) throw SysError(format("getting attributes of path `%1%'") % source); @@ -2340,8 +2340,8 @@ void DerivationGoal::runChild() /* Fill in the environment. */ Strings envStrs; - foreach (Environment::const_iterator, i, env) - envStrs.push_back(rewriteHashes(i->first + "=" + i->second, rewritesToTmp)); + for (const auto& i : env) + envStrs.push_back(rewriteHashes(i.first + "=" + i.second, rewritesToTmp)); /* If we are running in `build-users' mode, then switch to the user we allocated above. Make sure that we drop all root @@ -2420,8 +2420,8 @@ void DerivationGoal::runChild() /* Fill in the arguments. */ Strings args; args.push_back(builderBasename); - foreach (Strings::iterator, i, drv.args) - args.push_back(rewriteHashes(*i, rewritesToTmp)); + for (auto& i : drv.args) + args.push_back(rewriteHashes(i, rewritesToTmp)); /* If DRV targets the same operating system kernel, try to execute it: there might be binfmt_misc set up for user-land emulation of other @@ -2468,14 +2468,14 @@ PathSet parseReferenceSpecifiers(const Derivation & drv, string attr) { PathSet result; Paths paths = tokenizeString<Paths>(attr); - foreach (Strings::iterator, i, paths) { - if (isStorePath(*i)) - result.insert(*i); - else if (drv.outputs.find(*i) != drv.outputs.end()) - result.insert(drv.outputs.find(*i)->second.path); + for (auto& i : paths) { + if (isStorePath(i)) + result.insert(i); + else if (drv.outputs.find(i) != drv.outputs.end()) + result.insert(drv.outputs.find(i)->second.path); else throw BuildError( format("derivation contains an invalid reference specifier `%1%'") - % *i); + % i); } return result; } @@ -2488,8 +2488,8 @@ void DerivationGoal::registerOutputs() to do anything here. */ if (hook) { bool allValid = true; - foreach (DerivationOutputs::iterator, i, drv.outputs) - if (!worker.store.isValidPath(i->second.path)) allValid = false; + for (auto& i : drv.outputs) + if (!worker.store.isValidPath(i.second.path)) allValid = false; if (allValid) return; } @@ -2505,8 +2505,8 @@ void DerivationGoal::registerOutputs() /* Check whether the output paths were created, and grep each output path to determine what other paths it references. Also make all output paths read-only. */ - foreach (DerivationOutputs::iterator, i, drv.outputs) { - Path path = i->second.path; + for (auto& i : drv.outputs) { + Path path = i.second.path; if (missingPaths.find(path) == missingPaths.end()) continue; Path actualPath = path; @@ -2568,10 +2568,10 @@ void DerivationGoal::registerOutputs() /* Check that fixed-output derivations produced the right outputs (i.e., the content hash should match the specified hash). */ - if (i->second.hash != "") { + if (i.second.hash != "") { bool recursive; HashType ht; Hash h; - i->second.parseHashInfo(recursive, ht, h); + i.second.parseHashInfo(recursive, ht, h); if (!recursive) { /* The output path should be a regular file without @@ -2586,7 +2586,7 @@ void DerivationGoal::registerOutputs() if (h != h2) { if (settings.printBuildTrace) printMsg(lvlError, format("@ hash-mismatch %1% %2% %3% %4%") - % path % i->second.hashAlgo + % path % i.second.hashAlgo % printHash16or32(h) % printHash16or32(h2)); throw BuildError(format("hash mismatch for store item '%1%'") % path); } @@ -2650,12 +2650,12 @@ void DerivationGoal::registerOutputs() /* For debugging, print out the referenced and unreferenced paths. */ - foreach (PathSet::iterator, i, inputPaths) { - PathSet::iterator j = references.find(*i); + for (auto& i : inputPaths) { + PathSet::iterator j = references.find(i); if (j == references.end()) - debug(format("unreferenced input: `%1%'") % *i); + debug(format("unreferenced input: `%1%'") % i); else - debug(format("referenced input: `%1%'") % *i); + debug(format("referenced input: `%1%'") % i); } /* Enforce `allowedReferences' and friends. */ @@ -2985,12 +2985,12 @@ void DerivationGoal::handleEOF(int fd) PathSet DerivationGoal::checkPathValidity(bool returnValid, bool checkHash) { PathSet result; - foreach (DerivationOutputs::iterator, i, drv.outputs) { - if (!wantOutput(i->first, wantedOutputs)) continue; + for (auto& i : drv.outputs) { + if (!wantOutput(i.first, wantedOutputs)) continue; bool good = - worker.store.isValidPath(i->second.path) && - (!checkHash || worker.store.pathContentsGood(i->second.path)); - if (good == returnValid) result.insert(i->second.path); + worker.store.isValidPath(i.second.path) && + (!checkHash || worker.store.pathContentsGood(i.second.path)); + if (good == returnValid) result.insert(i.second.path); } return result; } @@ -3186,9 +3186,9 @@ void SubstitutionGoal::tryNext() /* To maintain the closure invariant, we first have to realise the paths referenced by this one. */ - foreach (PathSet::iterator, i, info.references) - if (*i != storePath) /* ignore self-references */ - addWaitee(worker.makeSubstitutionGoal(*i)); + for (auto& i : info.references) + if (i != storePath) /* ignore self-references */ + addWaitee(worker.makeSubstitutionGoal(i)); if (waitees.empty()) /* to prevent hang (no wake-up event) */ referencesValid(); @@ -3207,9 +3207,9 @@ void SubstitutionGoal::referencesValid() return; } - foreach (PathSet::iterator, i, info.references) - if (*i != storePath) /* ignore self-references */ - assert(worker.store.isValidPath(*i)); + for (auto& i : info.references) + if (i != storePath) /* ignore self-references */ + assert(worker.store.isValidPath(i)); state = &SubstitutionGoal::tryToRun; worker.wakeUp(shared_from_this()); @@ -3521,8 +3521,8 @@ void Worker::removeGoal(GoalPtr goal) } /* Wake up goals waiting for any goal to finish. */ - foreach (WeakGoals::iterator, i, waitingForAnyGoal) { - GoalPtr goal = i->lock(); + for (auto& i : waitingForAnyGoal) { + GoalPtr goal = i.lock(); if (goal) wakeUp(goal); } @@ -3575,8 +3575,8 @@ void Worker::childTerminated(pid_t pid, bool wakeSleepers) if (wakeSleepers) { /* Wake up goals waiting for a build slot. */ - foreach (WeakGoals::iterator, i, wantingToBuild) { - GoalPtr goal = i->lock(); + for (auto& i : wantingToBuild) { + GoalPtr goal = i.lock(); if (goal) wakeUp(goal); } @@ -3611,7 +3611,7 @@ void Worker::waitForAWhile(GoalPtr goal) void Worker::run(const Goals & _topGoals) { - foreach (Goals::iterator, i, _topGoals) topGoals.insert(*i); + for (auto& i : _topGoals) topGoals.insert(i); startNest(nest, lvlDebug, format("entered goal loop")); @@ -3677,12 +3677,12 @@ void Worker::waitForInput() deadline for any child. */ assert(sizeof(time_t) >= sizeof(long)); time_t nearest = LONG_MAX; // nearest deadline - foreach (Children::iterator, i, children) { - if (!i->second.respectTimeouts) continue; + for (auto& i : children) { + if (!i.second.respectTimeouts) continue; if (settings.maxSilentTime != 0) - nearest = std::min(nearest, i->second.lastOutput + settings.maxSilentTime); + nearest = std::min(nearest, i.second.lastOutput + settings.maxSilentTime); if (settings.buildTimeout != 0) - nearest = std::min(nearest, i->second.timeStarted + settings.buildTimeout); + nearest = std::min(nearest, i.second.timeStarted + settings.buildTimeout); } if (nearest != LONG_MAX) { timeout.tv_sec = std::max((time_t) 1, nearest - before); @@ -3707,10 +3707,10 @@ void Worker::waitForInput() fd_set fds; FD_ZERO(&fds); int fdMax = 0; - foreach (Children::iterator, i, children) { - foreach (set<int>::iterator, j, i->second.fds) { - FD_SET(*j, &fds); - if (*j >= fdMax) fdMax = *j + 1; + for (auto& i : children) { + for (auto& j : i.second.fds) { + FD_SET(j, &fds); + if (j >= fdMax) fdMax = j + 1; } } @@ -3728,34 +3728,34 @@ void Worker::waitForInput() careful that we don't keep iterators alive across calls to timedOut(). */ set<pid_t> pids; - foreach (Children::iterator, i, children) pids.insert(i->first); + for (auto& i : children) pids.insert(i.first); - foreach (set<pid_t>::iterator, i, pids) { + for (auto& i : pids) { checkInterrupt(); - Children::iterator j = children.find(*i); + Children::iterator j = children.find(i); if (j == children.end()) continue; // child destroyed GoalPtr goal = j->second.goal.lock(); assert(goal); set<int> fds2(j->second.fds); - foreach (set<int>::iterator, k, fds2) { - if (FD_ISSET(*k, &fds)) { + for (auto& k : fds2) { + if (FD_ISSET(k, &fds)) { unsigned char buffer[4096]; - ssize_t rd = read(*k, buffer, sizeof(buffer)); + ssize_t rd = read(k, buffer, sizeof(buffer)); if (rd == -1) { if (errno != EINTR) throw SysError(format("reading from %1%") % goal->getName()); } else if (rd == 0) { debug(format("%1%: got EOF") % goal->getName()); - goal->handleEOF(*k); - j->second.fds.erase(*k); + goal->handleEOF(k); + j->second.fds.erase(k); } else { printMsg(lvlVomit, format("%1%: read %2% bytes") % goal->getName() % rd); string data((char *) buffer, rd); j->second.lastOutput = after; - goal->handleChildOutput(*k, data); + goal->handleChildOutput(k, data); } } } @@ -3785,8 +3785,8 @@ void Worker::waitForInput() if (!waitingForAWhile.empty() && lastWokenUp + settings.pollInterval <= after) { lastWokenUp = after; - foreach (WeakGoals::iterator, i, waitingForAWhile) { - GoalPtr goal = i->lock(); + for (auto& i : waitingForAWhile) { + GoalPtr goal = i.lock(); if (goal) wakeUp(goal); } waitingForAWhile.clear(); @@ -3811,22 +3811,22 @@ void LocalStore::buildPaths(const PathSet & drvPaths, BuildMode buildMode) Worker worker(*this); Goals goals; - foreach (PathSet::const_iterator, i, drvPaths) { - DrvPathWithOutputs i2 = parseDrvPathWithOutputs(*i); + for (auto& i : drvPaths) { + DrvPathWithOutputs i2 = parseDrvPathWithOutputs(i); if (isDerivation(i2.first)) goals.insert(worker.makeDerivationGoal(i2.first, i2.second, buildMode)); else - goals.insert(worker.makeSubstitutionGoal(*i, buildMode)); + goals.insert(worker.makeSubstitutionGoal(i, buildMode)); } worker.run(goals); PathSet failed; - foreach (Goals::iterator, i, goals) - if ((*i)->getExitCode() == Goal::ecFailed) { - DerivationGoal * i2 = dynamic_cast<DerivationGoal *>(i->get()); + for (auto& i : goals) + if (i->getExitCode() == Goal::ecFailed) { + DerivationGoal * i2 = dynamic_cast<DerivationGoal *>(i.get()); if (i2) failed.insert(i2->getDrvPath()); - else failed.insert(dynamic_cast<SubstitutionGoal *>(i->get())->getStorePath()); + else failed.insert(dynamic_cast<SubstitutionGoal *>(i.get())->getStorePath()); } if (!failed.empty()) diff --git a/nix/libstore/derivations.cc b/nix/libstore/derivations.cc index d316f6c7bf..0c3a249228 100644 --- a/nix/libstore/derivations.cc +++ b/nix/libstore/derivations.cc @@ -31,8 +31,8 @@ Path writeDerivation(StoreAPI & store, { PathSet references; references.insert(drv.inputSrcs.begin(), drv.inputSrcs.end()); - foreach (DerivationInputs::const_iterator, i, drv.inputDrvs) - references.insert(i->first); + for (const auto& i : drv.inputDrvs) + references.insert(i.first); /* Note that the outputs of a derivation are *not* references (that can be missing (of course) and should not necessarily be held during a garbage collection). */ @@ -155,21 +155,21 @@ string unparseDerivation(const Derivation & drv) s += "Derive(["; bool first = true; - foreach (DerivationOutputs::const_iterator, i, drv.outputs) { + for (const auto& i : drv.outputs) { if (first) first = false; else s += ','; - s += '('; printString(s, i->first); - s += ','; printString(s, i->second.path); - s += ','; printString(s, i->second.hashAlgo); - s += ','; printString(s, i->second.hash); + s += '('; printString(s, i.first); + s += ','; printString(s, i.second.path); + s += ','; printString(s, i.second.hashAlgo); + s += ','; printString(s, i.second.hash); s += ')'; } s += "],["; first = true; - foreach (DerivationInputs::const_iterator, i, drv.inputDrvs) { + for (const auto& i : drv.inputDrvs) { if (first) first = false; else s += ','; - s += '('; printString(s, i->first); - s += ','; printStrings(s, i->second.begin(), i->second.end()); + s += '('; printString(s, i.first); + s += ','; printStrings(s, i.second.begin(), i.second.end()); s += ')'; } @@ -182,10 +182,10 @@ string unparseDerivation(const Derivation & drv) s += ",["; first = true; - foreach (StringPairs::const_iterator, i, drv.env) { + for (const auto& i : drv.env) { if (first) first = false; else s += ','; - s += '('; printString(s, i->first); - s += ','; printString(s, i->second); + s += '('; printString(s, i.first); + s += ','; printString(s, i.second); s += ')'; } @@ -246,15 +246,15 @@ Hash hashDerivationModulo(StoreAPI & store, Derivation drv) /* For other derivations, replace the inputs paths with recursive calls to this function.*/ DerivationInputs inputs2; - foreach (DerivationInputs::const_iterator, i, drv.inputDrvs) { - Hash h = drvHashes[i->first]; + for (const auto& i : drv.inputDrvs) { + Hash h = drvHashes[i.first]; if (h.type == htUnknown) { - assert(store.isValidPath(i->first)); - Derivation drv2 = readDerivation(i->first); + assert(store.isValidPath(i.first)); + Derivation drv2 = readDerivation(i.first); h = hashDerivationModulo(store, drv2); - drvHashes[i->first] = h; + drvHashes[i.first] = h; } - inputs2[printHash(h)] = i->second; + inputs2[printHash(h)] = i.second; } drv.inputDrvs = inputs2; diff --git a/nix/libstore/gc.cc b/nix/libstore/gc.cc index 261ea79ab3..1766a68412 100644 --- a/nix/libstore/gc.cc +++ b/nix/libstore/gc.cc @@ -349,9 +349,9 @@ static void addAdditionalRoots(StoreAPI & store, PathSet & roots) StringSet paths = tokenizeString<StringSet>(result, "\n"); - foreach (StringSet::iterator, i, paths) { - if (isInStore(*i)) { - Path path = toStorePath(*i); + for (auto i : paths) { + if (isInStore(i)) { + Path path = toStorePath(i); if (roots.find(path) == roots.end() && store.isValidPath(path)) { debug(format("got additional root `%1%'") % path); roots.insert(path); @@ -414,8 +414,8 @@ void LocalStore::deletePathRecursive(GCState & state, const Path & path) if (isValidPath(path)) { PathSet referrers; queryReferrers(path, referrers); - foreach (PathSet::iterator, i, referrers) - if (*i != path) deletePathRecursive(state, *i); + for (auto& i : referrers) + if (i != path) deletePathRecursive(state, i); size = queryPathInfo(path).narSize; invalidatePathChecked(path); } @@ -505,22 +505,22 @@ bool LocalStore::canReachRoot(GCState & state, PathSet & visited, const Path & p don't delete the derivation if any of the outputs are alive. */ if (state.gcKeepDerivations && isDerivation(path)) { PathSet outputs = queryDerivationOutputs(path); - foreach (PathSet::iterator, i, outputs) - if (isValidPath(*i) && queryDeriver(*i) == path) - incoming.insert(*i); + for (auto& i : outputs) + if (isValidPath(i) && queryDeriver(i) == path) + incoming.insert(i); } /* If gc-keep-outputs is set, then don't delete this path if there are derivers of this path that are not garbage. */ if (state.gcKeepOutputs) { PathSet derivers = queryValidDerivers(path); - foreach (PathSet::iterator, i, derivers) - incoming.insert(*i); + for (auto& i : derivers) + incoming.insert(i); } - foreach (PathSet::iterator, i, incoming) - if (*i != path) - if (canReachRoot(state, visited, *i)) { + for (auto& i : incoming) + if (i != path) + if (canReachRoot(state, visited, i)) { state.alive.insert(path); return true; } @@ -664,7 +664,7 @@ void LocalStore::collectGarbage(const GCOptions & options, GCResults & results) printMsg(lvlError, format("finding garbage collector roots...")); Roots rootMap = options.ignoreLiveness ? Roots() : findRoots(); - foreach (Roots::iterator, i, rootMap) state.roots.insert(i->second); + for (auto& i : rootMap) state.roots.insert(i.second); /* Add additional roots returned by 'guix gc --list-busy'. This is typically used to add running programs to the set of roots (to prevent @@ -700,11 +700,11 @@ void LocalStore::collectGarbage(const GCOptions & options, GCResults & results) if (options.action == GCOptions::gcDeleteSpecific) { - foreach (PathSet::iterator, i, options.pathsToDelete) { - assertStorePath(*i); - tryToDelete(state, *i); - if (state.dead.find(*i) == state.dead.end()) - throw Error(format("cannot delete path `%1%' since it is still alive") % *i); + for (auto& i : options.pathsToDelete) { + assertStorePath(i); + tryToDelete(state, i); + if (state.dead.find(i) == state.dead.end()) + throw Error(format("cannot delete path `%1%' since it is still alive") % i); } } else if (options.maxFreed > 0) { @@ -750,8 +750,8 @@ void LocalStore::collectGarbage(const GCOptions & options, GCResults & results) std::default_random_engine generator(seeder()); std::shuffle(entries_.begin(), entries_.end(), generator); - foreach (vector<Path>::iterator, i, entries_) - tryToDelete(state, *i); + for (auto& i : entries_) + tryToDelete(state, i); } catch (GCLimitReached & e) { } diff --git a/nix/libstore/globals.cc b/nix/libstore/globals.cc index 89add1f107..10c60f6106 100644 --- a/nix/libstore/globals.cc +++ b/nix/libstore/globals.cc @@ -188,12 +188,12 @@ template<class N> void Settings::_get(N & res, const string & name) string Settings::pack() { string s; - foreach (SettingsMap::iterator, i, settings) { - if (i->first.find('\n') != string::npos || - i->first.find('=') != string::npos || - i->second.find('\n') != string::npos) + for (auto& i : settings) { + if (i.first.find('\n') != string::npos || + i.first.find('=') != string::npos || + i.second.find('\n') != string::npos) throw Error("invalid option name/value"); - s += i->first; s += '='; s += i->second; s += '\n'; + s += i.first; s += '='; s += i.second; s += '\n'; } return s; } diff --git a/nix/libstore/local-store.cc b/nix/libstore/local-store.cc index d544253add..50ef707fdf 100644 --- a/nix/libstore/local-store.cc +++ b/nix/libstore/local-store.cc @@ -474,19 +474,19 @@ void LocalStore::checkDerivationOutputs(const Path & drvPath, const Derivation & else { Derivation drvCopy(drv); - foreach (DerivationOutputs::iterator, i, drvCopy.outputs) { - i->second.path = ""; - drvCopy.env[i->first] = ""; + for (auto& i : drvCopy.outputs) { + i.second.path = ""; + drvCopy.env[i.first] = ""; } Hash h = hashDerivationModulo(*this, drvCopy); - foreach (DerivationOutputs::const_iterator, i, drv.outputs) { - Path outPath = makeOutputPath(i->first, h, drvName); - StringPairs::const_iterator j = drv.env.find(i->first); - if (i->second.path != outPath || j == drv.env.end() || j->second != outPath) + for (const auto& i : drv.outputs) { + Path outPath = makeOutputPath(i.first, h, drvName); + StringPairs::const_iterator j = drv.env.find(i.first); + if (i.second.path != outPath || j == drv.env.end() || j->second != outPath) throw Error(format("derivation `%1%' has incorrect output `%2%', should be `%3%'") - % drvPath % i->second.path % outPath); + % drvPath % i.second.path % outPath); } } } @@ -670,8 +670,8 @@ PathSet LocalStore::queryValidPaths(const PathSet & paths) { return retrySQLite<PathSet>([&]() { PathSet res; - foreach (PathSet::const_iterator, i, paths) - if (isValidPath_(*i)) res.insert(*i); + for (const auto& i : paths) + if (isValidPath_(i)) res.insert(i); return res; }); } @@ -854,8 +854,8 @@ PathSet LocalStore::querySubstitutablePaths(const PathSet & paths) Agent & run = *substituter(); string s = "have "; - foreach (PathSet::const_iterator, j, paths) - if (res.find(*j) == res.end()) { s += *j; s += " "; } + for (const auto& j : paths) + if (res.find(j) == res.end()) { s += j; s += " "; } writeLine(run.toAgent.writeSide, s); while (true) { /* FIXME: we only read stderr when an error occurs, so @@ -889,8 +889,8 @@ void LocalStore::querySubstitutablePathInfos(PathSet & paths, SubstitutablePathI Agent & run = *substituter(); string s = "info "; - foreach (PathSet::const_iterator, i, paths) - if (infos.find(*i) == infos.end()) { s += *i; s += " "; } + for (const auto& i : paths) + if (infos.find(i) == infos.end()) { s += i; s += " "; } writeLine(run.toAgent.writeSide, s); while (true) { @@ -949,13 +949,13 @@ void LocalStore::registerValidPaths(const ValidPathInfos & infos) SQLiteTxn txn(db); PathSet paths; - foreach (ValidPathInfos::const_iterator, i, infos) { - assert(i->hash.type == htSHA256); - if (isValidPath_(i->path)) - updatePathInfo(*i); + for (const auto& i : infos) { + assert(i.hash.type == htSHA256); + if (isValidPath_(i.path)) + updatePathInfo(i); else - addValidPath(*i, false); - paths.insert(i->path); + addValidPath(i, false); + paths.insert(i.path); } for (auto & i : infos) { @@ -967,12 +967,12 @@ void LocalStore::registerValidPaths(const ValidPathInfos & infos) /* Check that the derivation outputs are correct. We can't do this in addValidPath() above, because the references might not be valid yet. */ - foreach (ValidPathInfos::const_iterator, i, infos) - if (isDerivation(i->path)) { + for (const auto& i : infos) + if (isDerivation(i.path)) { // FIXME: inefficient; we already loaded the // derivation in addValidPath(). - Derivation drv = readDerivation(i->path); - checkDerivationOutputs(i->path, drv); + Derivation drv = readDerivation(i.path); + checkDerivationOutputs(i.path, drv); } /* Do a topological sort of the paths. This will throw an @@ -1465,8 +1465,8 @@ bool LocalStore::verifyStore(bool checkContents, bool repair) PathSet validPaths2 = queryAllValidPaths(), validPaths, done; - foreach (PathSet::iterator, i, validPaths2) - verifyPath(*i, store, done, validPaths, repair, errors); + for (auto& i : validPaths2) + verifyPath(i, store, done, validPaths, repair, errors); /* Release the GC lock so that checking content hashes (which can take ages) doesn't block the GC or builds. */ @@ -1478,33 +1478,33 @@ bool LocalStore::verifyStore(bool checkContents, bool repair) Hash nullHash(htSHA256); - foreach (PathSet::iterator, i, validPaths) { + for (auto& i : validPaths) { try { - ValidPathInfo info = queryPathInfo(*i); + ValidPathInfo info = queryPathInfo(i); /* Check the content hash (optionally - slow). */ - printMsg(lvlTalkative, format("checking contents of `%1%'") % *i); - HashResult current = hashPath(info.hash.type, *i); + printMsg(lvlTalkative, format("checking contents of `%1%'") % i); + HashResult current = hashPath(info.hash.type, i); if (info.hash != nullHash && info.hash != current.first) { printMsg(lvlError, format("path `%1%' was modified! " "expected hash `%2%', got `%3%'") - % *i % printHash(info.hash) % printHash(current.first)); - if (repair) repairPath(*i); else errors = true; + % i % printHash(info.hash) % printHash(current.first)); + if (repair) repairPath(i); else errors = true; } else { bool update = false; /* Fill in missing hashes. */ if (info.hash == nullHash) { - printMsg(lvlError, format("fixing missing hash on `%1%'") % *i); + printMsg(lvlError, format("fixing missing hash on `%1%'") % i); info.hash = current.first; update = true; } /* Fill in missing narSize fields (from old stores). */ if (info.narSize == 0) { - printMsg(lvlError, format("updating size field on `%1%' to %2%") % *i % current.second); + printMsg(lvlError, format("updating size field on `%1%' to %2%") % i % current.second); info.narSize = current.second; update = true; } @@ -1516,7 +1516,7 @@ bool LocalStore::verifyStore(bool checkContents, bool repair) } catch (Error & e) { /* It's possible that the path got GC'ed, so ignore errors on invalid paths. */ - if (isValidPath(*i)) + if (isValidPath(i)) printMsg(lvlError, format("error: %1%") % e.msg()); else printMsg(lvlError, format("warning: %1%") % e.msg()); @@ -1548,10 +1548,10 @@ void LocalStore::verifyPath(const Path & path, const PathSet & store, first, then we can invalidate this path as well. */ bool canInvalidate = true; PathSet referrers; queryReferrers(path, referrers); - foreach (PathSet::iterator, i, referrers) - if (*i != path) { - verifyPath(*i, store, done, validPaths, repair, errors); - if (validPaths.find(*i) != validPaths.end()) + for (auto& i : referrers) + if (i != path) { + verifyPath(i, store, done, validPaths, repair, errors); + if (validPaths.find(i) != validPaths.end()) canInvalidate = false; } diff --git a/nix/libstore/misc.cc b/nix/libstore/misc.cc index d4e6d1b4af..bc5dec88bf 100644 --- a/nix/libstore/misc.cc +++ b/nix/libstore/misc.cc @@ -28,15 +28,15 @@ void computeFSClosure(StoreAPI & store, const Path & path, if (includeOutputs) { PathSet derivers = store.queryValidDerivers(path); - foreach (PathSet::iterator, i, derivers) - edges.insert(*i); + for (auto& i : derivers) + edges.insert(i); } if (includeDerivers && isDerivation(path)) { PathSet outputs = store.queryDerivationOutputs(path); - foreach (PathSet::iterator, i, outputs) - if (store.isValidPath(*i) && store.queryDeriver(*i) == path) - edges.insert(*i); + for (auto& i : outputs) + if (store.isValidPath(i) && store.queryDeriver(i) == path) + edges.insert(i); } } else { @@ -44,8 +44,8 @@ void computeFSClosure(StoreAPI & store, const Path & path, if (includeOutputs && isDerivation(path)) { PathSet outputs = store.queryDerivationOutputs(path); - foreach (PathSet::iterator, i, outputs) - if (store.isValidPath(*i)) edges.insert(*i); + for (auto& i : outputs) + if (store.isValidPath(i)) edges.insert(i); } if (includeDerivers) { @@ -54,8 +54,8 @@ void computeFSClosure(StoreAPI & store, const Path & path, } } - foreach (PathSet::iterator, i, edges) - computeFSClosure(store, *i, paths, flipDirection, includeOutputs, includeDerivers); + for (auto& i : edges) + computeFSClosure(store, i, paths, flipDirection, includeOutputs, includeDerivers); } @@ -74,11 +74,11 @@ static void dfsVisit(StoreAPI & store, const PathSet & paths, if (store.isValidPath(path)) store.queryReferences(path, references); - foreach (PathSet::iterator, i, references) + for (auto& i : references) /* Don't traverse into paths that don't exist. That can happen due to substitutes for non-existent paths. */ - if (*i != path && paths.find(*i) != paths.end()) - dfsVisit(store, paths, *i, visited, sorted, parents); + if (i != path && paths.find(i) != paths.end()) + dfsVisit(store, paths, i, visited, sorted, parents); sorted.push_front(path); parents.erase(path); @@ -89,8 +89,8 @@ Paths topoSortPaths(StoreAPI & store, const PathSet & paths) { Paths sorted; PathSet visited, parents; - foreach (PathSet::const_iterator, i, paths) - dfsVisit(store, paths, *i, visited, sorted, parents); + for (const auto& i : paths) + dfsVisit(store, paths, i, visited, sorted, parents); return sorted; } diff --git a/nix/libstore/optimise-store.cc b/nix/libstore/optimise-store.cc index 9fd6f3cb35..8d5bf28da9 100644 --- a/nix/libstore/optimise-store.cc +++ b/nix/libstore/optimise-store.cc @@ -103,8 +103,8 @@ void LocalStore::optimisePath_(OptimiseStats & stats, const Path & path, InodeHa if (S_ISDIR(st.st_mode)) { Strings names = readDirectoryIgnoringInodes(path, inodeHash); - foreach (Strings::iterator, i, names) - optimisePath_(stats, path + "/" + *i, inodeHash); + for (auto& i : names) + optimisePath_(stats, path + "/" + i, inodeHash); return; } @@ -244,11 +244,11 @@ void LocalStore::optimiseStore(OptimiseStats & stats) PathSet paths = queryAllValidPaths(); InodeHash inodeHash = loadInodeHash(); - foreach (PathSet::iterator, i, paths) { - addTempRoot(*i); - if (!isValidPath(*i)) continue; /* path was GC'ed, probably */ - startNest(nest, lvlChatty, format("hashing files in `%1%'") % *i); - optimisePath_(stats, *i, inodeHash); + for (auto& i : paths) { + addTempRoot(i); + if (!isValidPath(i)) continue; /* path was GC'ed, probably */ + startNest(nest, lvlChatty, format("hashing files in `%1%'") % i); + optimisePath_(stats, i, inodeHash); } } diff --git a/nix/libstore/pathlocks.cc b/nix/libstore/pathlocks.cc index 9797ddd7ab..c07f047192 100644 --- a/nix/libstore/pathlocks.cc +++ b/nix/libstore/pathlocks.cc @@ -60,7 +60,7 @@ bool lockFile(int fd, LockType lockType, bool wait) while (fcntl(fd, F_SETLK, &lock) != 0) { checkInterrupt(); if (errno == EACCES || errno == EAGAIN) return false; - if (errno != EINTR) + if (errno != EINTR) throw SysError(format("acquiring/releasing lock")); } } @@ -94,7 +94,7 @@ bool PathLocks::lockPaths(const PathSet & _paths, const string & waitMsg, bool wait) { assert(fds.empty()); - + /* Note that `fds' is built incrementally so that the destructor will only release those locks that we have already acquired. */ @@ -102,11 +102,11 @@ bool PathLocks::lockPaths(const PathSet & _paths, the same order, thus preventing deadlocks. */ Paths paths(_paths.begin(), _paths.end()); paths.sort(); - + /* Acquire the lock for each path. */ - foreach (Paths::iterator, i, paths) { + for (auto& i : paths) { checkInterrupt(); - Path path = *i; + Path path = i; Path lockPath = path + ".lock"; debug(format("locking path `%1%'") % path); @@ -115,7 +115,7 @@ bool PathLocks::lockPaths(const PathSet & _paths, throw Error("deadlock: trying to re-acquire self-held lock"); AutoCloseFD fd; - + while (1) { /* Open/create the lock file. */ @@ -172,15 +172,15 @@ PathLocks::~PathLocks() void PathLocks::unlock() { - foreach (list<FDPair>::iterator, i, fds) { - if (deletePaths) deleteLockFile(i->second, i->first); + for (auto& i : fds) { + if (deletePaths) deleteLockFile(i.second, i.first); - lockedPaths.erase(i->second); - if (close(i->first) == -1) + lockedPaths.erase(i.second); + if (close(i.first) == -1) printMsg(lvlError, - format("error (ignored): cannot close lock file on `%1%'") % i->second); + format("error (ignored): cannot close lock file on `%1%'") % i.second); - debug(format("lock released on `%1%'") % i->second); + debug(format("lock released on `%1%'") % i.second); } fds.clear(); @@ -199,5 +199,5 @@ bool pathIsLockedByMe(const Path & path) return lockedPaths.find(lockPath) != lockedPaths.end(); } - + } diff --git a/nix/libstore/references.cc b/nix/libstore/references.cc index 282b848938..d9c8a9fbe3 100644 --- a/nix/libstore/references.cc +++ b/nix/libstore/references.cc @@ -13,7 +13,7 @@ namespace nix { static unsigned int refLength = 32; /* characters */ -static void search(const unsigned char * s, unsigned int len, +static void search(const unsigned char * s, unsigned int len, StringSet & hashes, StringSet & seen) { static bool initialised = false; @@ -24,7 +24,7 @@ static void search(const unsigned char * s, unsigned int len, isBase32[(unsigned char) base32Chars[i]] = true; initialised = true; } - + for (unsigned int i = 0; i + refLength <= len; ) { int j; bool match = true; @@ -56,7 +56,7 @@ struct RefScanSink : Sink string tail; RefScanSink() : hashSink(htSHA256) { } - + void operator () (const unsigned char * data, size_t len); }; @@ -89,17 +89,17 @@ PathSet scanForReferences(const string & path, /* For efficiency (and a higher hit rate), just search for the hash part of the file name. (This assumes that all references have the form `HASH-bla'). */ - foreach (PathSet::const_iterator, i, refs) { - string baseName = baseNameOf(*i); + for (const auto& i : refs) { + string baseName = baseNameOf(i); string::size_type pos = baseName.find('-'); if (pos == string::npos) - throw Error(format("bad reference `%1%'") % *i); + throw Error(format("bad reference `%1%'") % i); string s = string(baseName, 0, pos); assert(s.size() == refLength); assert(backMap.find(s) == backMap.end()); // parseHash(htSHA256, s); sink.hashes.insert(s); - backMap[s] = *i; + backMap[s] = i; } /* Look for the hashes in the NAR dump of the path. */ @@ -107,14 +107,14 @@ PathSet scanForReferences(const string & path, /* Map the hashes found back to their store paths. */ PathSet found; - foreach (StringSet::iterator, i, sink.seen) { + for (auto& i : sink.seen) { std::map<string, Path>::iterator j; - if ((j = backMap.find(*i)) == backMap.end()) abort(); + if ((j = backMap.find(i)) == backMap.end()) abort(); found.insert(j->second); } hash = sink.hashSink.finish(); - + return found; } diff --git a/nix/libstore/store-api.cc b/nix/libstore/store-api.cc index 38a1403a71..7282188fb3 100644 --- a/nix/libstore/store-api.cc +++ b/nix/libstore/store-api.cc @@ -62,14 +62,14 @@ void checkStoreName(const string & name) reasons (e.g., "." and ".."). */ if (string(name, 0, 1) == ".") throw Error(format("invalid name: `%1%' (can't begin with dot)") % name); - foreach (string::const_iterator, i, name) - if (!((*i >= 'A' && *i <= 'Z') || - (*i >= 'a' && *i <= 'z') || - (*i >= '0' && *i <= '9') || - validChars.find(*i) != string::npos)) + for (const auto& i : name) + if (!((i >= 'A' && i <= 'Z') || + (i >= 'a' && i <= 'z') || + (i >= '0' && i <= '9') || + validChars.find(i) != string::npos)) { throw Error(format("invalid character `%1%' in name `%2%'") - % *i % name); + % i % name); } } @@ -81,22 +81,22 @@ void checkStoreName(const string & name) where <store> = the location of the store, usually /gnu/store - + <name> = a human readable name for the path, typically obtained from the name attribute of the derivation, or the name of the source file from which the store path is created. For derivation outputs other than the default "out" output, the string "-<id>" is suffixed to <name>. - + <h> = base-32 representation of the first 160 bits of a SHA-256 hash of <s>; the hash part of the store name - + <s> = the string "<type>:sha256:<h2>:<store>:<name>"; note that it includes the location of the store as well as the name to make sure that changes to either of those are reflected in the hash (e.g. you won't get /nix/store/<h>-name1 and /nix/store/<h>-name2 with equal hash parts). - + <type> = one of: "text:<r1>:<r2>:...<rN>" for plain text files written to the store using @@ -188,9 +188,9 @@ Path computeStorePathForText(const string & name, const string & s, hacky, but we can't put them in `s' since that would be ambiguous. */ string type = "text"; - foreach (PathSet::const_iterator, i, references) { + for (const auto& i : references) { type += ":"; - type += *i; + type += i; } return makeStorePath(type, hash, name); } @@ -203,11 +203,11 @@ string StoreAPI::makeValidityRegistration(const PathSet & paths, bool showDerivers, bool showHash) { string s = ""; - - foreach (PathSet::iterator, i, paths) { - s += *i + "\n"; - ValidPathInfo info = queryPathInfo(*i); + for (auto& i : paths) { + s += i + "\n"; + + ValidPathInfo info = queryPathInfo(i); if (showHash) { s += printHash(info.hash) + "\n"; @@ -219,8 +219,8 @@ string StoreAPI::makeValidityRegistration(const PathSet & paths, s += (format("%1%\n") % info.references.size()).str(); - foreach (PathSet::iterator, j, info.references) - s += *j + "\n"; + for (auto& j : info.references) + s += j + "\n"; } return s; @@ -229,9 +229,9 @@ string StoreAPI::makeValidityRegistration(const PathSet & paths, string showPaths(const PathSet & paths) { string s; - foreach (PathSet::const_iterator, i, paths) { + for (const auto& i : paths) { if (s.size() != 0) s += ", "; - s += "`" + *i + "'"; + s += "`" + i + "'"; } return s; } @@ -247,7 +247,7 @@ Path readStorePath(Source & from) template<class T> T readStorePaths(Source & from) { T paths = readStrings<T>(from); - foreach (typename T::iterator, i, paths) assertStorePath(*i); + for (auto& i : paths) assertStorePath(i); return paths; } diff --git a/nix/libutil/serialise.cc b/nix/libutil/serialise.cc index 6f04ab1591..01aeea25c0 100644 --- a/nix/libutil/serialise.cc +++ b/nix/libutil/serialise.cc @@ -188,8 +188,8 @@ void writeString(const string & s, Sink & sink) template<class T> void writeStrings(const T & ss, Sink & sink) { writeInt(ss.size(), sink); - foreach (typename T::const_iterator, i, ss) - writeString(*i, sink); + for (auto& i : ss) + writeString(i, sink); } template void writeStrings(const Paths & ss, Sink & sink); diff --git a/nix/libutil/util.cc b/nix/libutil/util.cc index 398f61841f..74f7a97cc4 100644 --- a/nix/libutil/util.cc +++ b/nix/libutil/util.cc @@ -1158,9 +1158,9 @@ template vector<string> tokenizeString(const string & s, const string & separato string concatStringsSep(const string & sep, const Strings & ss) { string s; - foreach (Strings::const_iterator, i, ss) { + for (const auto& i : ss) { if (s.size() != 0) s += sep; - s += *i; + s += i; } return s; } @@ -1169,9 +1169,9 @@ string concatStringsSep(const string & sep, const Strings & ss) string concatStringsSep(const string & sep, const StringSet & ss) { string s; - foreach (StringSet::const_iterator, i, ss) { + for (const auto& i : ss) { if (s.size() != 0) s += sep; - s += *i; + s += i; } return s; } diff --git a/nix/libutil/util.hh b/nix/libutil/util.hh index 176247e699..a07c3be6eb 100644 --- a/nix/libutil/util.hh +++ b/nix/libutil/util.hh @@ -16,13 +16,6 @@ namespace nix { -#define foreach(it_type, it, collection) \ - for (it_type it = (collection).begin(); it != (collection).end(); ++it) - -#define foreach_reverse(it_type, it, collection) \ - for (it_type it = (collection).rbegin(); it != (collection).rend(); ++it) - - /* Return an environment variable. */ string getEnv(const string & key, const string & def = ""); diff --git a/nix/nix-daemon/nix-daemon.cc b/nix/nix-daemon/nix-daemon.cc index b43bcf7fc6..9fff31a587 100644 --- a/nix/nix-daemon/nix-daemon.cc +++ b/nix/nix-daemon/nix-daemon.cc @@ -679,12 +679,12 @@ static void performOp(bool trusted, unsigned int clientVersion, store->querySubstitutablePathInfos(paths, infos); stopWork(); writeInt(infos.size(), to); - foreach (SubstitutablePathInfos::iterator, i, infos) { - writeString(i->first, to); - writeString(i->second.deriver, to); - writeStrings(i->second.references, to); - writeLongLong(i->second.downloadSize, to); - writeLongLong(i->second.narSize, to); + for (auto& i : infos) { + writeString(i.first, to); + writeString(i.second.deriver, to); + writeStrings(i.second.references, to); + writeLongLong(i.second.downloadSize, to); + writeLongLong(i.second.narSize, to); } break; } |