view contrib/plan9/README @ 45095:8e04607023e5

procutil: ensure that procutil.std{out,err}.write() writes all bytes Python 3 offers different kind of streams and it’s not guaranteed for all of them that calling write() writes all bytes. When Python is started in unbuffered mode, sys.std{out,err}.buffer are instances of io.FileIO, whose write() can write less bytes for platform-specific reasons (e.g. Linux has a 0x7ffff000 bytes maximum and could write less if interrupted by a signal; when writing to Windows consoles, it’s limited to 32767 bytes to avoid the "not enough space" error). This can lead to silent loss of data, both when using sys.std{out,err}.buffer (which may in fact not be a buffered stream) and when using the text streams sys.std{out,err} (I’ve created a CPython bug report for that: https://bugs.python.org/issue41221). Python may fix the problem at some point. For now, we implement our own wrapper for procutil.std{out,err} that calls the raw stream’s write() method until all bytes have been written. We don’t use sys.std{out,err} for larger writes, so I think it’s not worth the effort to patch them.
author Manuel Jacob <me@manueljacob.de>
date Fri, 10 Jul 2020 12:27:58 +0200
parents 4b0fc75f9403
children
line wrap: on
line source

Mercurial for Plan 9 from Bell Labs
===================================

This directory contains support for Mercurial on Plan 9 from Bell Labs
platforms. It is assumed that the version of Python running on these
systems supports the ANSI/POSIX Environment (APE). At the time of this
writing, the bichued/python port is the most commonly installed version
of Python on these platforms. If a native port of Python is ever made,
some minor modification will need to be made to support some of the more
esoteric requirements of the platform rather than those currently made
(cf. posix.py).

By default, installations will have the factotum extension enabled; this
extension permits factotum(4) to act as an authentication agent for
HTTP repositories. Additionally, an extdiff command named 9diff is
enabled which generates diff(1) compatible output suitable for use with
the plumber(4).

Commit messages are plumbed using E if no editor is defined; users must
update the plumbed file to continue, otherwise the hg process must be
interrupted.

Some work remains with regard to documentation. Section 5 manual page
references for hgignore and hgrc need to be re-numbered to section 6 (file
formats) and a new man page writer should be written to support the
Plan 9 man macro set. Until these issues can be resolved, manual pages
are elided from the installation.

Basic install:

  % mk install      # do a system-wide install
  % hg debuginstall # sanity-check setup
  % hg              # see help

A proto(2) file is included in this directory as an example of how a
binary distribution could be packaged, ostensibly with contrib(1).

See https://mercurial-scm.org/ for detailed installation
instructions, platform-specific notes, and Mercurial user information.