aboutsummaryrefslogtreecommitdiff
#pragma once

#include "types.hh"


namespace nix {


/* Open (possibly create) a lock file and return the file descriptor.
   -1 is returned if create is false and the lock could not be opened
   because it doesn't exist.  Any other error throws an exception. */
int openLockFile(const Path & path, bool create);

/* Delete an open lock file. */
void deleteLockFile(const Path & path, int fd);

enum LockType { ltRead, ltWrite, ltNone };

bool lockFile(int fd, LockType lockType, bool wait);


class PathLocks 
{
private:
    typedef std::pair<int, Path> FDPair;
    list<FDPair> fds;
    bool deletePaths;

public:
    PathLocks();
    PathLocks(const PathSet & paths,
        const string & waitMsg = "");
    bool lockPaths(const PathSet & _paths,
        const string & waitMsg = "",
        bool wait = true);
    ~PathLocks();
    void unlock();
    void setDeletion(bool deletePaths);
};


bool pathIsLockedByMe(const Path & path);


}
s/aidc.scm, gnu/packages/algebra.scm, gnu/packages/android.scm, gnu/packages/animation.scm, gnu/packages/arcan.scm, gnu/packages/assembly.scm, gnu/packages/audio.scm, gnu/packages/authentication.scm, gnu/packages/avr.scm, gnu/packages/axoloti.scm, gnu/packages/backup.scm, gnu/packages/bash.scm, gnu/packages/benchmark.scm, gnu/packages/bioconductor.scm, gnu/packages/bioinformatics.scm, gnu/packages/bittorrent.scm, gnu/packages/boost.scm, gnu/packages/build-tools.scm, gnu/packages/c.scm, gnu/packages/calendar.scm, gnu/packages/cdrom.scm, gnu/packages/check.scm, gnu/packages/chemistry.scm, gnu/packages/chez.scm, gnu/packages/clojure.scm, gnu/packages/code.scm, gnu/packages/compression.scm, gnu/packages/compton.scm, gnu/packages/coq.scm, gnu/packages/cpp.scm, gnu/packages/cran.scm, gnu/packages/crypto.scm, gnu/packages/curl.scm, gnu/packages/databases.scm, gnu/packages/datastructures.scm, gnu/packages/debug.scm, gnu/packages/disk.scm, gnu/packages/distributed.scm, gnu/packages/django.scm, gnu/packages/dlang.scm, gnu/packages/dns.scm, gnu/packages/docker.scm, gnu/packages/education.scm, gnu/packages/efi.scm, gnu/packages/elixir.scm, gnu/packages/emacs-xyz.scm, gnu/packages/embedded.scm, gnu/packages/emulators.scm, gnu/packages/engineering.scm, gnu/packages/erlang.scm, gnu/packages/fabric-management.scm, gnu/packages/file-systems.scm, gnu/packages/finance.scm, gnu/packages/firmware.scm, gnu/packages/flashing-tools.scm, gnu/packages/fonts.scm, gnu/packages/fontutils.scm, gnu/packages/fpga.scm, gnu/packages/game-development.scm, gnu/packages/games.scm, gnu/packages/genealogy.scm, gnu/packages/genimage.scm, gnu/packages/geo.scm, gnu/packages/gimp.scm, gnu/packages/gl.scm, gnu/packages/gnome-xyz.scm, gnu/packages/gnome.scm, gnu/packages/gnuzilla.scm, gnu/packages/golang.scm, gnu/packages/gpodder.scm, gnu/packages/graph.scm, gnu/packages/graphics.scm, gnu/packages/graphviz.scm, gnu/packages/groff.scm, gnu/packages/groovy.scm, gnu/packages/gtk.scm, gnu/packages/guile-xyz.scm, gnu/packages/guile.scm, gnu/packages/hardware.scm, gnu/packages/haskell-apps.scm, gnu/packages/haskell-xyz.scm, gnu/packages/hexedit.scm, gnu/packages/i2p.scm, gnu/packages/ibus.scm, gnu/packages/image-processing.scm, gnu/packages/image-viewers.scm, gnu/packages/image.scm, gnu/packages/ipfs.scm, gnu/packages/java-graphics.scm, gnu/packages/java-maths.scm, gnu/packages/java.scm, gnu/packages/javascript.scm, gnu/packages/jrnl.scm, gnu/packages/julia.scm, gnu/packages/jupyter.scm, gnu/packages/kodi.scm, gnu/packages/language.scm, gnu/packages/lego.scm, gnu/packages/less.scm, gnu/packages/libusb.scm, gnu/packages/linux.scm, gnu/packages/lirc.scm, gnu/packages/lisp-xyz.scm, gnu/packages/llvm.scm, gnu/packages/logging.scm, gnu/packages/lolcode.scm, gnu/packages/lua.scm, gnu/packages/lxde.scm, gnu/packages/lxqt.scm, gnu/packages/machine-learning.scm, gnu/packages/mail.scm, gnu/packages/markup.scm, gnu/packages/maths.scm, gnu/packages/maven.scm, gnu/packages/mes.scm, gnu/packages/messaging.scm, gnu/packages/monitoring.scm, gnu/packages/mpd.scm, gnu/packages/music.scm, gnu/packages/networking.scm, gnu/packages/node-xyz.scm, gnu/packages/ocaml.scm, gnu/packages/ocr.scm, gnu/packages/onc-rpc.scm, gnu/packages/opencl.scm, gnu/packages/opencog.scm, gnu/packages/pantheon.scm, gnu/packages/password-utils.scm, gnu/packages/patchutils.scm, gnu/packages/pdf.scm, gnu/packages/perl6.scm, gnu/packages/phabricator.scm, gnu/packages/popt.scm, gnu/packages/printers.scm, gnu/packages/prolog.scm, gnu/packages/protobuf.scm, gnu/packages/pulseaudio.scm, gnu/packages/python-crypto.scm, gnu/packages/python-web.scm, gnu/packages/python-xyz.scm, gnu/packages/qt.scm, gnu/packages/radio.scm, gnu/packages/rails.scm, gnu/packages/rdf.scm, gnu/packages/rednotebook.scm, gnu/packages/rpc.scm, gnu/packages/rsync.scm, gnu/packages/ruby.scm, gnu/packages/rust.scm, gnu/packages/scheme.scm, gnu/packages/screen.scm, gnu/packages/security-token.scm, gnu/packages/selinux.scm, gnu/packages/serialization.scm, gnu/packages/shells.scm, gnu/packages/shellutils.scm, gnu/packages/simh.scm, gnu/packages/sml.scm, gnu/packages/ssh.scm, gnu/packages/statistics.scm, gnu/packages/stenography.scm, gnu/packages/sync.scm, gnu/packages/syncthing.scm, gnu/packages/synergy.scm, gnu/packages/telephony.scm, gnu/packages/terminals.scm, gnu/packages/tex.scm, gnu/packages/texinfo.scm, gnu/packages/text-editors.scm, gnu/packages/textutils.scm, gnu/packages/time.scm, gnu/packages/tmux.scm, gnu/packages/tor.scm, gnu/packages/toys.scm, gnu/packages/version-control.scm, gnu/packages/video.scm, gnu/packages/vim.scm, gnu/packages/virtualization.scm, gnu/packages/vlang.scm, gnu/packages/vnc.scm, gnu/packages/vpn.scm, gnu/packages/web-browsers.scm, gnu/packages/web.scm, gnu/packages/wireservice.scm, gnu/packages/wm.scm, gnu/packages/wxwidgets.scm, gnu/packages/xdisorg.scm, gnu/packages/xml.scm, gnu/packages/xorg.scm, tests/lint.scm: Remove trailing ".git" from 'git-reference' URL. Ludovic Courtès 2020-07-09gnu: m2-planet: Fix typo in description....* gnu/packages/mes.scm (m2-planet)[description]: Fix typo. Tobias Geerinckx-Rice 2020-01-23gnu: mes: Update to 0.22....* gnu/packages/mes.scm (mes): Update to 0.22. Remove store name patch. Add MES_PREFIX to native-search-paths. * gnu/packages/patches/mes-remove-store-name.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Remove it. * gnu/packages/mes.scm (mes-rb5): Depend on gzip instead of xz; this enables unpacking the now unpatched mes source. Update to check bin/mes-mescc-0.21. Jan Nieuwenhuizen 2019-12-07gnu: Add mes-rb5....This guix build --system=i686-linux mes-dcc creates the Reproducible-Builds summit 5's GNU Mes build with sha266sum 9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb that was also built for Debian GNU/Linux and NixOS, with a bit-for-bit identical result. * gnu/packages/mes.scm (mes-ddc): New variable. Jan Nieuwenhuizen 2019-12-07gnu: mes: Add patch to remove store name from binary....* gnu/packages/patches/mes-remove-store-name.patch: New file, from upstream. * gnu/packages/mes.scm (mes): Use it. Add `www.' to homepage. * gnu/local.mk (dist_patch_DATA): Add it. Jan Nieuwenhuizen 2019-11-25gnu: mes: Update to 0.21....* gnu/packages/mes.scm (mes): Update to 0.21. Jan Nieuwenhuizen 2019-11-14gnu: Add m2-planet....* gnu/packages/mes.scm (m2-planet): New variable. Jan Nieuwenhuizen 2019-10-12gnu: mescc-tools: Use 'git-fetch'....* gnu/packages/mes.scm (mescc-tools-0.5.2)[source]: Use 'git-fetch'. (mescc-tools)[source]: Likewise. Ludovic Courtès 2019-09-29bootstrap: mes: Add mes-0.19....* gnu/packages/mes.scm (mes-0.19): New variable. (mes): Inherit it. * gnu/packages/make-bootstrap.scm (%mes-minimal): Likewise. Jan Nieuwenhuizen 2019-09-29bootstrap: mescc-tools: Use mescc-tools-0.5.2, mescc-tools....* gnu/packages/mes.scm (mescc-tools-0.5.2): New variable; rename from mescc-tools. (mescc-tools): Rename from mescc-tools-0.6.1. Fix build. * gnu/packages/make-bootstrap.scm (%mescc-tools-static): Inherit fixed mescc-tools-0.5.2. Jan Nieuwenhuizen 2019-09-17Merge branch 'master' into core-updatesLudovic Courtès 2019-09-09gnu: mes: Update to 0.20....* gnu/packages/mes.scm (mes): Update to 0.20. Use nyacc-0.99.0. Jan Nieuwenhuizen 2019-09-09gnu: mescc-tools: Update to 0.6.1....* gnu/packages/mes.scm (mescc-tools): Update to 0.6.1. Jan Nieuwenhuizen 2019-09-09gnu: nyacc: Update to 0.99.0....* gnu/packages/mes.scm (nyacc): Update to 0.99.0. Jan Nieuwenhuizen 2019-06-13Merge branch 'master' into core-updatesLudovic Courtès 2019-06-13gnu: nyacc: Add 0.94.0....* gnu/packages/mes.scm (nyacc): Rename to... (nyacc-0.86): ... this. (nyacc): New variable. (mes)[propagated-inputs]: Use NYACC-0.86 instead of NYACC. Ludovic Courtès 2019-05-25Merge branch 'staging' into core-updatesMarius Bakke 2019-05-21gnu: mes: Prepare for non-x86 architectures....* gnu/packages/mes.scm (mes)[native-inputs]: Change i686-linux-binutils and i686-linux-gcc conditional inclusion. Danny Milosavljevic