Commit Graph

73 Commits

Author SHA1 Message Date
cperciva
7d9a4be39e Fix bug in deleting files: If two ports had the same tarball and one of
them changed (or was removed from the tree) then portsnap would delete
that file.  This happened earlier today when one of two empty port
directories was removed.  Uniquifying the lists of needed files fixes
this.

9.2-RELEASE candidate.

MFC after:	3 days
2013-07-11 22:19:18 +00:00
delphij
cf69e9d6c1 Make 'portsnap alfred' overwrite ports tree if it's not created by a
portsnap.

Discussed with:	alfred
Reviewed by:	cperciva
2013-06-07 20:21:30 +00:00
joel
d1ce45a46f mdoc sweep 2013-05-13 18:13:50 +00:00
joel
05a725b2d7 mdoc sweep. 2013-05-12 22:22:12 +00:00
alfred
ed59b019d4 Change progress indicator for downloading patches.
Use a percent style indicator instead of emitting one
long line of patch numbers.
2012-12-13 01:39:49 +00:00
eadler
ece1c03fda Avoid changing IFS in a global context as this can sometimes cause
errors later on.

PR:		bin/172715
Submitted by:	Matthew D.Fuller <fullermd@over-yonder.net> (older
version)
Submitted by:	dteske
Approved by:	cperciva
MFC after:	1 week
2012-10-24 12:49:03 +00:00
joel
576f668282 Remove cvs/cvsup reference. 2012-10-14 10:12:32 +00:00
issyl0
9546d5704f Change "only only" to "only" in portsnap(8).
Spotted by:	Ruslan Mahmatkhanov
Approved by:	gabor (mentor, implicit)
2012-09-28 11:40:59 +00:00
issyl0
025fb75eb6 Add a note to portsnap(8) about the behaviour of the example cron command.
PR:		docs/171759
Submitted by:	Paul Hoffman (phoffman at proper dot com)
Approved by:	cperciva, gabor (mentor)
MFC after:	3 days
2012-09-28 11:11:42 +00:00
eadler
d26d8ba30e Add interactive option to override portsnap's automagical detection of
a terminal.

Submitted by:	Hannes h2+fbsdports@fsfe.org
Approved by:	cperciva
MFC after:	1 week
2012-08-05 21:13:21 +00:00
eadler
b9dff5c3f7 make it easier for users used to a VCS that allows up to be a shortcut
for update.

PR:		bin/152856
Approved by:	cperciva
MFC after:	3 days
2012-05-09 21:56:10 +00:00
alfred
6280e6aab3 Fix spelling of extract.
Pointed out by: gcooper
2011-11-13 06:39:49 +00:00
alfred
3e2fdc5998 Utilize shell's IFS instead of forking ~6 processes to
handle splitting input files on a '|'.  This greatly
reduces the time taken to process several databases
during the update process.

Additionally add some more debug logging.
2011-11-13 03:18:57 +00:00
jilles
56aec06683 portsnap: Detect error immediately if we can't fetch the snapshot metadata.
Also add some quotes around command substitution where useful and possible.

Reviewed by:	cperciva
MFC after:	1 week
2011-10-04 22:28:06 +00:00
simon
b19345a9d7 Add --numeric-owner to tar extract operations in portsnap.
This is done to speed up extraction significantly (both for portsnap
extract and update) in the case of slow NSS modules (like nss_ldap) as
it avoids having to look up uid and gid for root / wheel.

The reason this is a bigger problem for portsnap than for many other
system operations, is that portsnap executes tar(1) once for each port
so the internal uid/gid caching in tar(1) only helps a bit, resulting
in many user lookup calls.

Discussed with:	cperciva
2010-12-19 23:09:42 +00:00
uqs
8ae3afcfad mdoc: drop redundant .Pp and .LP calls
They have no effect when coming in pairs, or before .Bl/.Bd
2010-10-08 12:40:16 +00:00
joel
dd1fff9bcb Fix typos, spelling, formatting and mdoc mistakes found by Nobuyuki while
translating these manual pages.  Minor corrections by me.

Submitted by:	Nobuyuki Koganemaru <n-kogane@syd.odn.ne.jp>
2010-08-16 15:18:30 +00:00
ed
073cafdd42 The last big commit: let usr.sbin/ use WARNS=6 by default. 2010-01-02 11:07:44 +00:00
cperciva
0fabff56c2 Add undocumented 'portsnap alfred' command, which runs (fetch|cron)
based on whether fd 0 is a terminal, and then runs (extract|update)
based on whether ${PORTSDIR} exists.

Requested by:	alfred
MFC after:	1 month
2009-12-30 06:28:47 +00:00
cperciva
8e78b05618 Set SO_NOSIGPIPE on sockets used by phttpget. Without this, if
(1) phttpget is attempting to download enough files that it can't send
all the requests at once, and
(2) the remote server forcibly closes the connection, resulting in RST
packets being sent,
phttpget will receive a SIGPIPE and terminate without downloading all
of the files.

This is probably responsible for a number of hard-to-reproduce errors
with portsnap and freebsd-update.

MFC after:	3 days
2009-04-03 21:13:18 +00:00
danger
03499dabc8 - remove superfluous word
PR:		docs/127401
Submitted by:	Mick Charles Beaver <mick@cs.wisc.edu>
MFC after:	1 week
2008-09-15 16:30:06 +00:00
cperciva
55aafae3bb Add support for specifying which INDEX files to build via portsnap.conf.
Requested by:	brooks
Reminded by:	brooks, about halfway through his BSDCan talk
2008-05-17 16:26:27 +00:00
cperciva
5525e95af0 Improve conformance to the HTTP specification by using case-insensitive
comparisons for header keywords.  Apparently some proxies use creative
capitalization.

Weird proxy found by:	brooks
MFC after:		3 days
2008-02-13 20:46:23 +00:00
cperciva
4ddafa9af1 Attempt to reduce the rate of foot-shooting injuries by adding a new
paragraph clarifying that portsnap does not behave the same way as
cvs and cvsup where local modifications are concerned.

Submitted by:	peter
Feet shot:	peter, kris, obrien, + many others
2007-12-28 20:39:18 +00:00
cperciva
9a3cd4196d When generating ports INDEX files from downloaded "describes" data, build
an index for FreeBSD 7.x too.

MFC After:	1 week
Approved by:	re (hrs)
2007-08-02 02:05:23 +00:00
cperciva
64e90b3614 Add support for HTTP/1.0 Persistent Connections to phttpget. Requests are
be marked as HTTP/1.1 but "Connection: Keep-Alive" is added; this convinces
HTTP/1.0 servers and proxies to hold the TCP connection open despite not
being able to use HTTP pipelining.

This dramatically cuts down on the number of TCP connections (and thus port
numbers) used by portsnap when talking to an HTTP/1.0 proxy (e.g., squid),
and has the side benefit of improving performance in those cases.

Tested by:	simon
Approved by:	re (kensmith)
MFC After:	1 week
2007-06-30 19:48:28 +00:00
cperciva
b9e58fd6df Add support for the HTTP_TIMEOUT environment variable (integer number
of seconds, just like in fetch(1)).

Submitted by:	rdivacky
2006-11-07 09:18:09 +00:00
cperciva
09db1858a7 Set LC_ALL=C in order to avoid problems with character ranges and
sorting.

PR:		bin/104505
MFC after:	3 days
2006-10-21 11:04:34 +00:00
ru
081fcce9b9 Markup fixes. 2006-09-29 17:57:04 +00:00
cperciva
83b65bce01 s/MAN8/MAN/
Pointed out by:	ru
2006-09-01 09:49:09 +00:00
cperciva
682aa440b5 Use some features of sh(1) which I didn't know about until today ("read"
can read two variables at once; and suffix pattern deletion) to make the
extract command fork fewer processes.

With the portsnap snapshot and the ports tree in swap-backed memory
disks on my 1.4GHz laptop, this reduces 178800 processes and 195/56/126
seconds of real/user/sys time to 44600 processes and 103/34/60 seconds.
2006-05-30 07:08:41 +00:00
cperciva
fd3a903ce1 Fix typo.
Pointed out by:	ceri
2006-05-13 18:04:48 +00:00
cperciva
2407c865b7 Add a mechanism for constructing INDEX files which include local ports.
Requested by:	brooks
2006-05-13 15:56:35 +00:00
cperciva
c1762f0053 Use 'rm -rf foo/bar' to remove a port instead of 'rm -rf foo/bar/'.
When /usr/ports/foo/bar is a symlink pointing outside the tree, this
deletes the symlink instead of the directory it points to.

Requested by:	delphij
2006-05-12 10:42:40 +00:00
cperciva
13f1ac162a Allow the HTTP_PROXY environment variable to be (mis)spelled as
"http_proxy", since some people apparently do this and fetch(3)
allows it.
2006-05-05 04:47:00 +00:00
cperciva
3d03d7498a Fix the test for whether ${HTTP_PROXY} is set -- I got it backwards.
Pointy hat to:	cperciva
Pointed out by:	pjd
2006-05-05 03:44:13 +00:00
cperciva
a3a49903f7 Remove two lines of debugging which I forgot to remove before the last
commit.

Noticed by:     simon
2006-05-03 22:09:42 +00:00
cperciva
6a63b482f7 The approach portsnap uses of "pick a random HTTP mirror" doesn't
interact very nicely with HTTP proxies: Since proxies do not know
that all the files on portsnap1.freebsd.org are identical to the
files with the same names on portsnap2.freebsd.org, said proxies end
up downloading and storing files in duplicate.

This commit uses the HTTP_PROXY environment variable, if set, to
generate a random number seed for use in selecting a mirror.  This
means that if several systems all have the same HTTP_PROXY value set,
they will ask the proxy to fetch files from the same mirror (unless
that mirror fails, in which case all the systems will use the same
second choice, et cetera).

Portsnap still doesn't interact very well with "transparent" HTTP
proxies, but there's nothing I can do about those.

Requested by:	simon
Sponsored by:   FreeBSD security development fundraiser
2006-05-03 21:29:01 +00:00
cperciva
160fd830be Instead of selecting a mirror and failing if it is inaccessible, keep
track of which mirrors we have tried and try a different mirror if we
fail when trying to download the SSL public key or the snapshot
signature.

Failures later in the download process will not result in switching to
a different mirror, for two reasons:
1. If is very unlikely that a mirror will fail partway through the
process of downloading updates.
2. If we switched from a more recently updated mirror to a less
recently updated mirror partway through the download process, we would
end up failing anyway because we would be trying to fetch files which
the second mirror didn't have yet.

PR:		bin/96288
Requested by:	lots of people
Sponsored by:	FreeBSD security development fundraiser
2006-05-03 21:19:43 +00:00
cperciva
d8e06a4a6a Teach portsnap to parse the output of the host(1) in BIND 8 as well as
the host(1) from BIND 9.  This doesn't matter for HEAD, but will help
people who install portsnap from the ports tree onto older versions of
FreeBSD.

PR:		ports/93901
Sponsored by:	FreeBSD security development fundraiser
2006-05-02 05:27:30 +00:00
ru
388e590f95 Reimplementation of world/kernel build options. For details, see:
http://lists.freebsd.org/pipermail/freebsd-current/2006-March/061725.html

The src.conf(5) manpage is to follow in a few days.

Brought to you by:	imp, jhb, kris, phk, ru (all bugs are mine)
2006-03-17 18:54:44 +00:00
ume
2647a2ffc5 Remove trailing dot from the servername in the serverlist to be able
to use portsnap from behind a http proxy.  Some HTTP proxy don't like
trailing dot in the servername.

Approved by:	cperciva
MFC after:	2 days
2006-03-07 19:13:00 +00:00
ume
cf60b0b3b1 Correct handling of HTTP_PROXY_AUTH. A password may have `:'.
Approved by:	cperciva
MFC after:	2 days
2006-03-07 19:04:16 +00:00
wkoszek
b17521a067 Reference sha256(1) instead of sha256(8), which doesn't exist.
Approved by:	cognet (mentor)
MFC after:	3 days
2006-02-26 22:59:40 +00:00
joel
87dcb0582d Expand contractions. 2006-02-01 14:33:14 +00:00
cperciva
abe2470791 Merge from accidental commit to RELENG_5:
Correctly identify the host and port values on a failed
  getaddrinfo lookup.
2006-01-27 14:42:15 +00:00
cperciva
a7424435f6 Replace "fetch" with "fetch -r" when downloading the initial ~38MB
snapshot in order to avoid unnecessary re-downloading.

Remove the earlier "rm -f ${SNAPSHOTHASH}.tgz" to make this work.

Suggested by:	Lars Engels
MFC after:	7 days
2006-01-22 23:48:07 +00:00
cperciva
e042fa9ba2 Mention that the random time slept by "portsnap cron" is between 1 and
3600 seconds.

Suggested by:	Niki Denev
MFC after:	3 days
2006-01-17 03:02:44 +00:00
cperciva
a95e158b6d Make "portsnap extract" automatically create ${PORTSDIR} if necessary
instead of complaining that "Directory does not exist or is not
writable".

Suggested by:	{tlp, siep} via IRC
MFC after:	1 week
2006-01-06 20:39:11 +00:00
cperciva
19caa85abd Make "missing dependency" errors more useful by indicating which port
is trying to depend upon the non-existent port.

Suggested by:	kris
MFC after:	3 days
2005-12-01 22:14:44 +00:00