Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: sync with 9fans upstream #3

Merged
merged 323 commits into from
Jan 22, 2022
Merged
Changes from 1 commit
Commits
Show all changes
323 commits
Select commit Hold shift + click to select a range
d4e16c8
devdraw: handle windowDidResize on macOS (#212)
pocket7878 Nov 17, 2018
e995a0c
devdraw: cocoa metal screen adds a delayed update (#270)
jxy Jun 19, 2019
7d827b5
auxstats: replace /proc ACPI calls with /sys ones (#245)
ethhics Sep 19, 2019
b9424f6
plumber: fix EOF detection on writes to rules file (#257)
fhs Sep 19, 2019
9389de6
upas/nfs: fix null date when message is sent to plumber (#263)
telephil Sep 19, 2019
f1dd3f0
hoc: don't nest calls to follow() when lexing ++/+= and --/-= (#287)
deepcube Sep 19, 2019
13d40aa
9l: support Linux version 5.0+ (#274)
gnoack Sep 19, 2019
715807d
Teach 9l about FreeBSD ≥ 12; address issue #247. (#249)
francisconti Sep 19, 2019
1309450
awk: split record into runes for empty FS (#292)
fhs Oct 29, 2019
b0aecb4
plumber: add -f (foreground) option (#288)
eraserhd Oct 29, 2019
436ff26
9c, 9l: use $TMPDIR if available (#272)
eraserhd Nov 11, 2019
4660627
page: fix hang for forward-only postscript files
fhs Nov 14, 2019
3d08a06
ed: replace magic number (077776, i.e. 32766) with NBLK-1. (#300)
0branch Dec 9, 2019
01a29ff
page: fix pdf prolog for ghostscript >= 9.27 (#296)
fhs Dec 9, 2019
f7f0512
ed: formatting tweak (remove redundant tab). (#301)
0branch Dec 10, 2019
4af8158
libbio: report Bflush/close error from Bterm
rsc Dec 19, 2019
0b349f6
acme: report close failure during Put
rsc Dec 19, 2019
a1ead67
sam: report close error
rsc Dec 19, 2019
ab6f1ae
cb: fix a null pointer dereference
nsajko May 31, 2016
f77d12f
cmd/rc: fix declarations of some externally linked variables
nsajko Aug 8, 2019
d6f8c23
acme: do not pass null pointers where disallowed
nsajko May 28, 2016
8cd46ae
ls: check that pointer is not nil before calling qsort
nsajko May 28, 2016
d905752
cmd/htmlroff: fix buffer overflow in t2.c getqarg
nsajko Dec 28, 2019
f264bbc
acme(1): update man page to note -a trimming trailing spaces on Put
rsc Jan 6, 2020
6f5bd96
all: sync and dedup the creation of the SYSNAME and OBJTYPE env vars …
nsajko Jan 7, 2020
cf6b778
INSTALL, 9c, 9l: improve handling of *BSD (#302)
Jan 7, 2020
a4e59b3
9term: add a "look" menu item (#299)
fhs Jan 7, 2020
2c97de1
libmach: plug memory leak
nsajko Aug 11, 2019
2897735
libmach: plug another memory leak
nsajko Aug 11, 2019
540caa5
lib9: remove getcallerpc implementations
rsc Jan 7, 2020
e6ed10f
lib9, libndb: exclude terminating null from strncpy bound
nsajko Jan 6, 2020
194178b
9c: Fix case patterns for DragonFly and other BSDs
mkhl Jan 7, 2020
c65d179
mk: fix out of bounds access
nsajko Dec 31, 2019
2738cc3
mk: plan9 style.
Jan 8, 2020
8241eca
libhtml: plug quite a few memory leaks
nsajko Aug 18, 2019
a187417
libhtml: plug a memory leak in addtext
nsajko Aug 18, 2019
323e1a8
lib9: add getcallerpc.c (fixes build)
rsc Jan 9, 2020
5aad8f3
mkfile, mkmk.sh: update for new asm-free getcallerpc
rsc Jan 10, 2020
77a0a5b
src: mv ../buildEnvironmentVariables mkhdr
rsc Jan 10, 2020
fa325e9
Trivial changes: whitespace and modes.
Jan 10, 2020
fafa622
all: fix or silence various gcc warnings
rsc Jan 12, 2020
e0c4896
lib9: make a p9frexp function wrapping system frexp
rsc Jan 9, 2020
0158bce
libthread: run first thread in proc on system stack
rsc Jan 9, 2020
0b6b451
libdraw: fix "mk"
rsc Jan 9, 2020
386bd9c
cmd/venti/srv: split memory allocation call
nsajko Jan 7, 2020
185fd7d
Make venti's doc more accurate
May 23, 2019
cc48e73
fontsrv: allow x11 hinting and disable autohint only (#254)
jxy Jan 13, 2020
fa7fecf
wintext: add tmux support, use in ", ""
rsc Jan 13, 2020
d96e9e5
lib9: fix memory leak in dial of regular file (#284)
jvd23 Jan 13, 2020
7ba9f94
lib9/fmt: avoid racy access to installed fmt formats
rsc Jan 13, 2020
4a3f20b
cmd/yacc: do not create an out of bounds pointer
nsajko Aug 22, 2019
d2fae53
cmd/yacc: check for EOF in string constant in cpyact
nsajko Aug 25, 2019
eb4aea5
cmd/yacc: check that arg is safe to pass to <ctype.h> isX functions
nsajko Aug 25, 2019
bf59f0e
cmd/yacc: correctly detect end of file in gettok
nsajko Aug 25, 2019
cc3d97d
devdraw: update drawclient test program to run again
rsc Jan 9, 2020
f177c0b
devdraw: drop pre-metal macOS support
rsc Jan 9, 2020
db20f89
devdraw: simplify mac file names
rsc Jan 9, 2020
ce27d7b
devdraw: can use libthread directly now on macOS
rsc Jan 9, 2020
933b980
devdraw: use consistent mac-* prefix on macOS files
rsc Jan 9, 2020
88ed92a
devdraw: move Client into devdraw.h and move global state in
rsc Jan 9, 2020
843e5af
devdraw: move per-window globals in mac-screen.m into Client
rsc Jan 9, 2020
b1a086d
devdraw: refactor, clean up mac screen
rsc Jan 10, 2020
41547af
devdraw: more cleanup, clearer locking
rsc Jan 10, 2020
dbf5768
libdraw: connect to devdraw via $wsysid when set
rsc Jan 11, 2020
2cb8589
cmapcube: don't crash on initdraw failure
rsc Jan 11, 2020
892b3c4
devdraw: multiclient mode
rsc Jan 11, 2020
5092342
devdraw: x11 working again
rsc Jan 12, 2020
04da015
devdraw: AUTOFRAMEWORK CoreFoundation on macOS
rsc Jan 13, 2020
be263a7
lib9: rm unused _p9translate.c
rsc Jan 13, 2020
ac6456a
clock: import from plan 9
rsc Jan 13, 2020
93f9789
cmd/9pfuse: ignore FMODE_EXEC open flag
Jul 22, 2019
369923f
libthread: fix nbrecvul, recvul to match man page, Plan 9
rsc Jan 13, 2020
1c78140
TODO: remove, not updated in 15 years
rsc Jan 13, 2020
fa58840
9pfuse: do not fswalk("..")
rsc Jan 13, 2020
59b460f
vac, unvac: allow 128MB cache size, up from 4MB
rsc Jan 13, 2020
d2df5d6
acme: fix crash in X |cat with multiple windows
rsc Jan 13, 2020
9962d91
tmac: fix troff -ms .KS after .1C
rsc Jan 13, 2020
6c17f63
mk: treat X= as empty list in rc shell
rsc Jan 14, 2020
3a62e56
lib9: do not fetch disk size for character devices
rsc Jan 14, 2020
81d992e
acme: factor out tag parsing code
rsc Jan 14, 2020
6bddb06
acme: one more place to use parsetag
rsc Jan 14, 2020
26cae02
mk: fix hash function (#315)
nsajko Jan 14, 2020
7b1c85f
acme: allow spaces in window names
rsc Jan 14, 2020
86bfd60
acme: fix movetodel for spaces in file names
rsc Jan 14, 2020
125cfe1
mouse(3): fix definition of Mousectl
rsc Jan 14, 2020
573169d
acme: fix buffer overflow introduced in parsetag refactor
rsc Jan 14, 2020
481b596
libthread: fix fault in teardown of proc
rsc Jan 14, 2020
b741db6
devdraw: correctly hide Mac menu bar (#335)
jxy Jan 14, 2020
952a9af
INSTALL: do not rm config after setting it up
rsc Jan 14, 2020
3d1382b
devdraw: hide dock in full screen mode
rsc Jan 14, 2020
4c54893
devdraw: do not force-hide menu and dock during full screen on mac
rsc Jan 14, 2020
4ae529d
libdraw: use proper pipe for default font data
rsc Jan 14, 2020
8c573ca
libthread: use mmap to allocate OpenBSD stacks
rsc Jan 14, 2020
a0691bc
tar: remove /bin/ when invoking compressors
phonologus Jan 14, 2020
d28913a
acme: save/restore multiline tags in Dump/Load
rsc Jan 14, 2020
9505cd1
lib9: make formatting lock-free again
rsc Jan 14, 2020
40d787a
libdraw: send hangup to process when window is lost
rsc Jan 14, 2020
1f79949
devdraw: notify window resize promptly on x11
rsc Jan 15, 2020
5c06214
venti/buildindex: fix hang on large indexes
rsc Jan 15, 2020
40685d2
soelim: import from Plan9
phonologus Jan 15, 2020
e0434ae
soelim: manpage fixes.
phonologus Jan 15, 2020
dc24d30
9pfuse: update errortab
lego12239 Jan 15, 2020
a9b4620
winwatch: port based Plan 9 winwatch
markvanatten Jan 15, 2020
0ac4bfe
clock: Remove unused static variable in clock.c
Jan 15, 2020
6510a2d
winwatch: Plan 9-ify.
Jan 15, 2020
cb58f32
compress: import Plan9 compress
phonologus Jan 15, 2020
2c3c821
compress: remove (not distributed) from tar(1) manpage.
phonologus Jan 15, 2020
e75dbb6
factotum: update for new nbrecvul return value
rsc Jan 15, 2020
ba60bab
devdraw: actually send resize event on resize
rsc Jan 15, 2020
fe2b2de
devdraw: set windowrect correctly on x11 if window gets unexpected size
rsc Jan 15, 2020
d460531
libmach: Fix type errors in FreeBSD.c
Jan 15, 2020
4241cae
cmd/rio: xshove: set geometry by window id
Jun 22, 2019
0be5735
devdraw: avoid deadlock in x11 resize
rsc Jan 15, 2020
3ef80ba
lib9: putenv wraps POSIX setenv, not legacy putenv
Jan 16, 2020
7bf2db4
malloc: remove locking
Jan 16, 2020
23a2368
libthread: NetBSD supports pthreads, remove ancient systems in sysofi…
Jan 16, 2020
1d0d432
devdraw: abort alt sequence on window change on macOS
rsc Jan 16, 2020
83b1e7a
9fs: remove tip (dead?), redirect sources to 9p.io
Jan 16, 2020
57157d8
libthread: rm unused ARM (get|set)mcontext (#354)
nsajko Jan 20, 2020
d15607b
libthread: rm OpenBSD.c
rsc Jan 20, 2020
8dcb18f
libthread: rm FreeBSD 4 code
rsc Jan 20, 2020
52397aa
libthread: rm Darwin pre-11.0.0 support
rsc Jan 20, 2020
c181e39
libthread: rm unused sparc-ucontext.h
rsc Jan 20, 2020
8d82cce
libthread: remove Linux 2.4 code
rsc Jan 20, 2020
cb8f735
all: remove Linux 2.4 vs 2.6 detection
rsc Jan 20, 2020
ac8042d
libthread: rm NetBSD pthread reference in sysofiles.sh
rsc Jan 20, 2020
41b3e8b
libthread: use consistent stack calculation code in makecontext
rsc Jan 20, 2020
37e7d24
libthread: rm OpenBSD tas implementations
rsc Jan 20, 2020
4698bde
libthread: clean up sysofiles.sh a bit more
rsc Jan 20, 2020
f6c9f7b
libthread: fix test deps, cleanup in mkfile
rsc Jan 20, 2020
93e2e82
acme: report close failure in Put, this time for sure
rsc Jan 24, 2020
4197af4
libthread: comment stack border a bit more
rsc Jan 24, 2020
f66f0a5
devdraw: fix `cmd-r` to toggle retina vs. non-retina mode on macOS (#…
palmamartin Feb 3, 2020
0237dec
libthread: fix ARM build by renaming file
nsajko Feb 11, 2020
92aa0e1
Fix broken references to plan9.bell-labs.com/plan9
larb0b Feb 22, 2020
4650064
acme: scale window bodies on resize, not including tag space
rsc Mar 30, 2020
c1c1b52
9c: added explicit -fcommon to gcc defaults.
phonologus Apr 29, 2020
47d4646
rc: add recursive descent parser
rsc May 4, 2020
3caf5c2
rc: move newline handling into parser
rsc May 5, 2020
7d6a248
rc: move free carat handling into parser
rsc May 5, 2020
ff74f7c
rc: allow unquoted = in command arguments
rsc May 5, 2020
601e07b
rc: clean up parser levels, disallow free carats on lists
rsc May 5, 2020
b962b25
rc(1): mention /etc/shells in BUGS section
rsc May 5, 2020
acffdcb
9term.app: respect user-set shell instead of forcing bash
rsc May 5, 2020
c3c9c7b
fmt: disable use of stdatomic on AIX XL C and old GCC
rsc May 7, 2020
4982d4e
all: update build scripts to fix AIX XL/C compatibility
bhuntsman May 5, 2020
f84d54a
mk: support Big Archive Format under AIX
bhuntsman May 5, 2020
5802b09
all: fix #includes for AIX, add a few AIX "implementation" files
bhuntsman May 5, 2020
bd6f120
fmt: adjust GCC version check
May 8, 2020
58fdc08
lib9: merge create, open, dirread into open.c
rsc May 17, 2020
6fd4e90
lib9: add close
rsc May 17, 2020
16f6047
lib9: move seek into open.c
rsc May 17, 2020
8cb7308
lib9: use opendir/readdir to read directories
rsc May 18, 2020
154140a
mk: replace overlapping strcpy with memmove
rsc May 18, 2020
9444b8e
9c, 9l: accept CC9FLAGS from config
rsc May 18, 2020
06687f7
INSTALL: build mk all the time
rsc May 18, 2020
baef953
libthread: add pthreadperthread mode and use under ASAN
rsc May 17, 2020
162d0d5
libthread: handle spurious _procsleep wakeups, fix $LIBTHREAD handling
rsc May 18, 2020
94d381e
devdraw: use indirect impl interface
rsc Jan 25, 2020
587933c
devdraw: use global drawlk instead of per-client
rsc Jan 25, 2020
c53ad83
lib9: avoid unportable use of d_namlen in dirread
rsc May 18, 2020
84167be
devdraw: use indirect impl interface in x11
gdiazlo May 18, 2020
d4a4b66
diff: rename class to fix AIX
rsc May 18, 2020
079f5e9
libdiskfs: avoid problematic internal constant names
rsc May 19, 2020
dea4dbd
acme: avoid global named "class"
rsc May 19, 2020
20c841b
rc: avoid problematic internal names "var", "thread"
rsc May 19, 2020
7a371bf
lib9: use __builtin_return_address on IBM XL/C
bhuntsman May 14, 2020
53bf1f1
9l: xlc_r automatically adds -lpthread.
bhuntsman May 18, 2020
fa15726
9c: fix tab
rsc May 19, 2020
6c1235d
build: use installbsd instead of install on AIX
rsc May 19, 2020
b4cc38f
build: drop _XOPEN_SOURCE in u.h on AIX
rsc May 19, 2020
d25d0ca
devdraw, libdraw: handle keyboard runes > U+FFFF
rsc May 19, 2020
bfe4377
man: update man pages to say $HOME when accurate
rsc May 19, 2020
a6ad39a
libdraw: handle larger number of subfonts
rsc May 26, 2020
5f0fa18
fontsrv: handle non-BMP runes on X11
rsc May 26, 2020
2c70acc
fontsrv: scale f->originy to match f->height on x11
dzklaim May 30, 2020
3850e6e
devdraw: accept 5- and 6-byte Unicode hex values
rsc May 30, 2020
95220bf
ed: handle Unicode beyond the BMP correctly in list mode.
phonologus May 21, 2020
01b5056
ed(1): fix documentation for list mode
rsc May 30, 2020
799f330
osxvers: use swvers -productVersion to skip one awk call
rsc May 30, 2020
c3d31ba
fontsrv: fix compilation on X11 (#420)
farhaven Jun 4, 2020
3298311
libthread: use libc functions in ucontext for macOS (#417)
jxy Jun 16, 2020
95ab130
src/cmd: rm dformat
rsc Jun 22, 2020
951446a
draw: use int for Cacheinfo x field
rsc Jul 18, 2020
057d8a7
acme: add font control message
rsc Jul 18, 2020
afa34a7
devdraw, libdraw: fix memory leaks by freeing getns() malloced string…
1g0rb0hm Jul 22, 2020
dd7c4e5
fontsrv(4): update man page for size of fontsrv subfonts
rsc Jul 23, 2020
a1c4307
touch: fix for OpenBSD.
falsifian Aug 8, 2020
977b25a
tmac: introduce real manual reference macro instead of overloading IR
rsc Aug 14, 2020
9843fc0
fontsrv: fix handling of colored glyphs (emoji)
rsc Aug 15, 2020
d32deab
tmac: rename IM (italic manual) to MR (manual reference)
rsc Aug 16, 2020
1f098ef
all: a few more #define tricks for AIX
rsc Aug 16, 2020
291f741
9c, 9l: updates for macOS arm64.
anths Sep 26, 2020
a012d17
time: print 1s of milliseconds
rsc Dec 15, 2020
2991442
libthread: fix use after free of first thread in each proc
rsc Dec 15, 2020
69439fa
9c: use -fcommon for clang
rsc Dec 30, 2020
5b37d91
libthread: delete NetBSD special case
rsc Dec 30, 2020
b3a20a9
libthread: add threadmaybackground
rsc Dec 30, 2020
b73633b
libthread: fix pthreadperthread bugs
rsc Dec 30, 2020
e68f07d
libthread: make pthreadperthread the default
rsc Dec 30, 2020
1857120
libthread: simplify
rsc Dec 30, 2020
8b9aaf2
devdraw: add /usr/X11R7 for NetBSD
rsc Dec 30, 2020
0a7fe60
9term: use openpty on NetBSD
Mar 20, 2020
0bd1478
wintext: use rc not bash
rsc Dec 30, 2020
99dee78
all: remove $OBJTYPE from build
rsc Dec 30, 2020
ebbeff0
.gitignore: enumerate ignored parts of bin/
rsc Dec 30, 2020
0ed5e9f
9a: remove a few mentions
rsc Dec 30, 2020
7457774
tcolors: add threadmaybackground
rsc Dec 30, 2020
4692dd4
9c: drop PLAN9PORT_ASAN
rsc Dec 30, 2020
91ececc
libthread: drop schedlock
rsc Dec 30, 2020
ee9b2a2
.gitignore: more binaries
rsc Dec 30, 2020
f23783c
.gitignore: add LOCAL.config and lib/fortunes.index
rsc Dec 30, 2020
dbc153f
9term: add threadmaybackground
rsc Dec 30, 2020
6c8e44d
wintext: add to moveplan9.files (#470)
jacobvosmaer Dec 30, 2020
ac487c7
acme: allow @ in file names
rsc Dec 30, 2020
7f6458b
stats: add threadmaybackground
rsc Jan 6, 2021
0a513e6
sam: rm dregs
rsc Jan 3, 2021
1c845e0
acme, sam, samterm: remove weird switch usage
rsc Jan 6, 2021
fdcf3d7
auxstats: do not postnote 0
rsc Jan 14, 2021
0cc1faf
lib9: reject postnote with special pids
rsc Jan 14, 2021
c3ae85a
rc: do not exit on EINTR from read
rsc Jan 14, 2021
6a80119
sam: remove backward ?:
rsc Jan 14, 2021
3ccd616
sam: avoid out-of-bounds read in rterm
rsc Jan 14, 2021
52b599a
libthread: call setpgrp in programs that will background
rsc Jan 14, 2021
4056d6b
libhtml: fix array bounds in lex
jxy Jan 29, 2021
20c14ef
xd: fix swizz8 loop counting
jxy Jan 29, 2021
4e6bb20
eqn: enlarge errbuf to account for large tokens
jxy Jan 29, 2021
0144f87
htmlroff: fix array bounds
jxy Jan 29, 2021
36cd4c5
man9: rename IM to MR
fhs Jan 29, 2021
a724788
9p: parse lines in rdwr command
droyo Jan 31, 2021
f62d4c4
9pfuse: support MacFUSE >=4
cptaffe Jan 26, 2021
9097137
mount: find kext with MacFUSE >=4 and macOS >=11
cptaffe Feb 1, 2021
7366140
acme: fix double-free in acmeerrorproc
rsc Jan 18, 2021
a8bd9e9
mk: fix for Unix build
rsc Mar 23, 2021
88a87fa
all: update for new MIT license
rsc Mar 23, 2021
878b30c
fspread: fix buffer overflow
gnoack Aug 17, 2020
93a25a0
install(1): mention libfontconfig1-dev for Debian
rsc Apr 9, 2021
70cc6e5
libthread: use setpgid instead of setpgrp
anths Apr 22, 2021
6c4260f
bin/9c, bin/9l: Re-enable optimization on AIX.
bhuntsman Aug 29, 2021
e9d8c45
libdraw: Fix GUI programs on AIX (#398)
bhuntsman Aug 29, 2021
d356d2a
9term: Skip unnecessary ioctl call on AIX.
bhuntsman Aug 30, 2021
aa01c23
.gitignore: Ignore some more things that get created during compile.
bhuntsman Jul 30, 2021
385a6d5
lib9p: Remove postmountsrv (#505)
bhuntsman Aug 8, 2021
ceb1ab9
lib9p: Fix compile error
alexkapshuk Aug 31, 2021
8cf5269
acme: fix extra print args
rsc Sep 28, 2021
d3ee9f7
sam: fix spurious overwrite message
rsc Sep 30, 2021
e683bdf
mk: provide a mechanism to default to `rc`
Oct 3, 2021
0ac2a10
cmd/auxstats: improve wireless interface name matcher in Linux
nicolagi Oct 17, 2021
7b0b206
cmd/auxstats: improve network device name matcher in Linux
nicolagi Oct 17, 2021
d0d4408
src/cmd/acme: provide info on presense or absence of undo history (#528)
rogpeppe Oct 19, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
install(1): mention libfontconfig1-dev for Debian
Also update install.txt, which mistakenly contained intro(1).

Pointed out by Nicholas Schwartz.
rsc committed Apr 9, 2021
commit 93a25a0f974e659e24767a13790ea4e87aabef22
287 changes: 85 additions & 202 deletions install.txt
Original file line number Diff line number Diff line change
@@ -1,219 +1,102 @@

INTRO(1) INTRO(1)
INSTALL(1) INSTALL(1)

NAME
intro - introduction to Plan 9 from User Space
install - notes about Plan 9 from User Space installation

DESCRIPTION
Plan 9 is a distributed computing environment built at Bell
Labs starting in the late 1980s. The system can be obtained
from Bell Labs at http://9p.io/plan9 and runs
on PCs and a variety of other platforms. Plan 9 became a
convenient platform for experimenting with new ideas, appli-
cations, and services.

Plan 9 from User Space provides many of the ideas, applica-
tions, and services from Plan 9 on Unix-like systems. It
runs on FreeBSD (x86, x86-64), Linux (x86, x86-64, PowerPC
and ARM), Mac OS X (x86, x86-64, and PowerPC), NetBSD (x86
and PowerPC), OpenBSD (x86 and PowerPC), Dragonfly BSD
(x86-64), and SunOS (x86-64 and Sparc).

Commands
Plan 9 from User Space expects its own directory tree, con-
ventionally /usr/local/plan9. When programs need to access
files in the tree, they expect the $PLAN9 environment vari-
able to contain the name of the root of the tree. See
install(1) for details about installation.

Many of the familiar Unix commands, for example cat(1),
ls(1), and wc(1), are present, but in their Plan 9 forms:
cat takes no options, ls does not columnate its output when
printing to a terminal, and wc counts UTF characters. In
some cases, the differences are quite noticeable: grep(1)
and sed(1) expect Plan 9 regular expressions (see
regexp(7)), which are closest to what Unix calls extended
regular expressions. Because of these differences, it is
not recommended to put $PLAN9/bin before the usual system
bin directories in your search path. Instead, put it at the
end of your path and use the 9(1) script when you want to
invoke the Plan 9 version of a traditional Unix command.

Occasionally the Plan 9 programs have been changed to adapt
to Unix. Mk(1) now allows mkfiles to choose their own
shell, and rc(1) has a ulimit builtin and manages $PATH.

Many of the graphical programs from Plan 9 are present,
including sam(1) and acme(1). An X11 window manager rio(1)
mimics Plan 9's window system, with command windows imple-
mented by the external program 9term(1). Following the style
of X Windows, these programs run in new windows rather than
the one in which they are invoked. They all take a -W
option to specify the size and placement of the new window.
The argument is one of widthxheight, widthxheight@xmin,xmax,

Page 1 Plan 9 (printed 12/1/14)

INTRO(1) INTRO(1)

or xmin,ymin,xmax,ymax.

The plumber(4) helps to connect the various Plan 9 programs
together, and fittings like web(1) connect it to external
programs such as web browsers; one can click on a URL in
acme and see the page load in Firefox.

User-level file servers
In Plan 9, user-level file servers present file trees via
the Plan 9 file protocol, 9P. Processes can mount arbitrary
file servers and customize their own name spaces. These
facilities are used to connect programs. Clients interact
with file servers by reading and writing files.

This cannot be done directly on Unix. Instead the servers
listen for 9P connections on Unix domain sockets; clients
connect to these sockets and speak 9P directly using the
9pclient(3) library. Intro(4) tells more of the story. The
effect is not as clean as on Plan 9, but it gets the job
done and still provides a uniform and easy-to-understand
mechanism. The 9p(1) client can be used in shell scripts or
by hand to carry out simple interactions with servers.
Netfiles(1) is an experimental client for acme.

External databases
Some programs rely on large databases that would be cumber-
some to include in every release. Scripts are provided that
download these databases separately. These databases can be
downloaded separately. See $PLAN9/dict/README and
$PLAN9/sky/README.

Programming
The shell scripts 9c and 9l (see 9c(1)) provide a simple
interface to the underlying system compiler and linker, sim-
ilar to the 2c and 2l families on Plan 9. 9c compiles
source files, and 9l links object files into executables.
When using Plan 9 libraries, 9l infers the correct set of
libraries from the object files, so that no -l options are
needed.

The only way to write multithreaded programs is to use the
thread(3) library. Rfork(3) exists but is not as capable as
on Plan 9. There are many unfortunate by necessary prepro-
cessor diversions to make Plan 9 and Unix libraries coexist.
See intro(3) for details.

The debuggers acid(1) and db(1) and the debugging library
mach(3) are works in progress. They are platform-
independent, so that x86 Linux core dumps can be inspected
on PowerPC Mac OS X machines, but they are also fairly
incomplete. The x86 target is the most mature; initial Pow-
erPC support exists; and other targets are unimplemented.

Page 2 Plan 9 (printed 12/1/14)

INTRO(1) INTRO(1)

The debuggers can only inspect, not manipulate, target pro-
cesses. Support for operating system threads and for 64-bit
architectures needs to be rethought. On x86 Linux systems,
acid and db can be relied upon to produce reasonable stack
traces (often in cases when GNU gdb cannot) and dump data
structures, but that it is the extent to which they have
been developed and exercised.

Porting programs
The vast majority of the familiar Plan 9 programs have been
ported, including the Unicode-aware troff(1).

Of the more recent additions to Plan 9, factotum(4),
secstore(1), and secstored(1), vac(1), vacfs(4), and
venti(8) are all ported.

A backup system providing a dump file system built atop
Venti is in progress; see vbackup(8).

Porting to new systems
Porting the tree to new operating systems or architectures
should be straightforward, as system-specific code has been
kept to a minimum. The largest pieces of system-specific
code are <u.h>, which must include the right system files
and set up the right integer type definitions, and
libthread, which must implement spin locks, operating system
thread creation, and context switching routines. Portable
implementations of these using <pthread.h> and <ucontext.h>
already exist. If your system supports them, you may not
need to write any system specific code at all.

There are other smaller system dependencies, such as the
terminal handling code in 9term(1) and the implementation of
getcallerpc(3), but these are usually simple and are not on
the critical path for getting the system up and running.
SYNOPSIS
cd /usr/local/plan9; ./INSTALL [ -b | -c ] [ -r path ]

SEE ALSO
The rest of this manual describes Plan 9 from User Space.
Many of the man pages have been brought from Plan 9, but
they have been updated, and others have been written from
DESCRIPTION
To obtain the Plan 9 tree, use Git (see git(1)) or download
a tar file from https://9fans.github.io/plan9port.

The tree can be unpacked anywhere, but the usual place is
/usr/local/plan9. In the root of the tree, run ./INSTALL.
This script builds the Plan 9 build program mk(1) if neces-
sary, cleans all previously built object files and libraries
out of the tree, rebuilds and installs everything, and then
cleans up.

There are a few files in tree which have the root hard-coded
in them. After the build, INSTALL edits these files to
replace the string /usr/local/plan9 with the name of the
root of the current tree.

Finally, INSTALL builds an HTML version of the manual and
installs it in /usr/local/plan9/man.

The installation can be thought of as two steps: build all
the binaries, and then edit files as necessary to fix the
references to the installation root. If necessary, these
can be run separately. Given the -b flag, INSTALL performs
only the first step. Given the -c flag, INSTALL performs
only the second step. The first step can be done with the
tree in a temporary work directory, but the second step must
be done once the tree is in its final location. If you want
to build the project in one location and then install into
another location, use -r path to specify the final location
of Plan9 tree. These flags are only necessary when trying
to conform to the expectations of certain package management
systems.

At the end of the installation, INSTALL prints suggested
settings for the environment variables $PLAN9 and $PATH.

INSTALL writes various autodetected settings to
/usr/local/plan9/config. The file
/usr/local/plan9/LOCAL.config is appended to config after
this auto-detection and can be used to override the choices.
If LOCAL.config contains a line WSYSTYPE=nowsys then the
system is built without using X11. LOCAL.config may also
list settings for CC9 (the host C compiler) and CC9FLAGS
(any additional flags to pass to the compiler). Values more

Page 1 Plan 9 (printed 4/9/21)

INSTALL(1) INSTALL(1)

complex than single words should be quoted with single
quotes.

On most Linux systems, the X11 header packages need to be
installed to build using X11. On Debian. the required pack-
ages are libfontconfig1-dev, libx11-dev, libxext-dev, and
libxt-dev. On Ubuntu, it suffices to install xorg-dev.

INSTALL can safely be repeated to rebuild the system from
scratch.

The manual pages are in a Unix style tree, with names like
$PLAN9/man/man1/cat.1 instead of Plan 9's simpler
$PLAN9/man/1/cat, so that the Unix man(1) utility can handle
it. Some systems, for example Debian Linux, deduce the man
page locations from the search path, so that adding
$PLAN9/bin to your path is sufficient to cause $PLAN9/man to
be consulted for manual pages using the system man. On other
systems, or to look at manual pages with the same name as a
system page, invoke the Plan 9 man directly, as in 9 man
cat.

Page 3 Plan 9 (printed 12/1/14)

INTRO(1) INTRO(1)

The manual sections follow the Unix numbering conventions,
not the Plan 9 ones.
Once the system is built for the first time, it can be main-
tained and rebuilt using mk(1). To rebuild individual com-
mands or libraries, run mk install and mk clean in the
appropriate source directory (see src(1)).

Section (1) describes general publicly accessible commands.
FILES
/usr/local/plan9/lib/moveplan9.files
the list of files that need to have /usr/local/plan9
edited out of them

Section (3) describes C library functions.
/usr/local/plan9/lib/moveplan9.sh
the script that edits the files

Section (4) describes user-level file servers.
/usr/local/plan9/src/mkmk.sh
the shell script used to build mk(1)

Section (7) describes file formats and protocols. (On Unix,
section (5) is technically for file formats but seems now to
be used for describing specific files.)
/usr/local/plan9/dist/manweb
the shell script that builds the HTML manual

Section (8) describes commands used for system administra-
tion.
/usr/local/plan9/man/index.html
the top-level page in the HTML version of the manual

Section (9p) describes the Plan 9 file protocol 9P.
/usr/local/plan9/install.log
logged output from the last run of INSTALL

These pages describe parts of the system that are new or
different from Plan 9 from Bell Labs:
/usr/local/plan9/install.sum
a summary of install.log

9(1), 9c(1), 9p(1), 9term(1), acidtypes in acid(1),
dial(1), git(1), label(1), the MKSHELL variable in
mk(1), namespace(1), netfiles(1), page(1), psfonts(1),
rio(1), web(1), wintext(1)

intro(3), 9pclient(3), the unix network in dial(3),
exits(3), get9root(3), getns(3), notify(3),
post9pservice(3), rfork(3), searchpath(3), sendfd(3),
udpread(3), venti(3), wait(3), wctl(3)

intro(4), 9pserve(4), import(4),

vbackup(8)

openfd(9p)

DIAGNOSTICS
In Plan 9, a program's exit status is an arbitrary text
string, while on Unix it is an integer. Section (1) of this
manual describes commands as though they exit with string
statuses. In fact, exiting with an empty status corresponds
to exiting with status 0, and exiting with any non-empty
string corresponds to exiting with status 1. See exits(3).
SEE ALSO
intro(1), git(1)

Page 4 Plan 9 (printed 12/1/14)
Page 2 Plan 9 (printed 4/9/21)

2 changes: 1 addition & 1 deletion man/man1/install.1
Original file line number Diff line number Diff line change
@@ -101,7 +101,7 @@ with single quotes.
.PP
On most Linux systems, the X11 header packages need to be installed
to build using X11. On Debian. the required packages are
libx11-dev, libxext-dev, and libxt-dev.
libfontconfig1-dev, libx11-dev, libxext-dev, and libxt-dev.
On Ubuntu, it suffices to install xorg-dev.
.PP
.I INSTALL