Commit Graph

26 Commits

Author SHA1 Message Date
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
cperciva
87a93f24a5 An empty file does not have a positive number of lines.
Make sure that the number of lines read is non-zero before in order to
avoid dumping core.

Reported by:	Wojciech A. Koszek
Pointy hat to:	cperciva
2005-11-20 00:50:30 +00:00
cperciva
72ee7cf703 Correctly handle a TCP connection being shutdown by the server while
we're reading response headers.  (Handle it as a connection-killing
error, rather than entering an infinite loop reading zero bytes.)

Reported by:	simon
Discovered thanks to:	A not-very-transparent transparent HTTP proxy.
MFC after:	3 days
2005-11-17 11:01:32 +00:00
cperciva
db5a4f6992 Add HTTP proxy authentication, via the HTTP_PROXY_AUTH environment
variable.

Tested by:	Emil Mikulic
X-MFC-After:	6.0-RELEASE
2005-09-22 07:11:27 +00:00
cperciva
f38ccb360f Style fix: "if (pointer)" -> "if (pointer != NULL)" 2005-09-21 18:42:56 +00:00
cperciva
b48ff0ab65 Add a note pointing out that certain information (IP address, list of
files fetched, FreeBSD release level) is transmitted to the portsnap
server when portsnap is run, but that this information is only used
anonymously and in aggregate.
2005-09-18 12:19:32 +00:00
cperciva
c428222e35 Handle circular dependencies properly (via errx(3)) rather than dumping
core.  This bug was made visible by a recent change to the audio/timidity++
port, which now has itself as a run dependency.

Reported by:	Emil Mikulic, Andreas Klemm
2005-09-17 15:30:16 +00:00
cperciva
ba5243d894 Portsnap uses host(1) to search for mirrors, but this is only available
when the base system is not compiled with NO_BIND set.  Before we start
searching for mirrors, make sure that host(1) can be found, and if it
doesn't exist then fallback to the A record instead of the SRV records.

Submitted by:	Luca Morettoni
2005-09-15 13:29:10 +00:00
cperciva
f00504e5fa Fix typo: ${PORTDIR} -> ${PORTSDIR}.
Apologies to everyone who has run portsnap in 7.0-CURRENT since
Tuesday; if there is a file "/.portsnap.INDEX" on your system, you can
delete it (or even better, move it to /usr/ports/.portsnap.INDEX).

Big pointy hat to:	cperciva
Reported that things weren't working properly:	Aleksander Fafula
2005-09-11 12:55:07 +00:00
cperciva
8f3a1adc9f Fix typo: Cowarly -> Cowardly.
Reported by:	Joerg Sonnenberger
2005-09-07 19:32:15 +00:00
cperciva
4c165daa8d Teach portsnap how to ignore unwanted parts of the ports tree. A line
of the form "REFUSE foo" in portsnap.conf will result in parts of the
tree matching "^foo" being (a) not extracted by "portsnap extract", (b)
not updated by "portsnap update", and (c) not having any patches or new
ports downloaded by "portsnap fetch" or "portsnap cron". The example
shown in portsnap.conf demonstrates ignoring all the language categories.

As mentioned in portsnap.conf.5, the use of an imcomplete ports tree is
not officially supported; but this is something which many users have
requested, so I'm adding it anyway.

PR:		bin/85619 (but not the patch provided therein)
MFC after:	1 month
2005-09-06 19:28:37 +00:00
cperciva
e0396a82f2 Spell "cmp > /dev/null" as "cmp -s".
Suggested by:	dougb
2005-08-14 02:45:04 +00:00
cperciva
157c398c7e Correctly exit from extract_run() and update_run() if files needed are
missing from ${WORKDIR}/files/.

This bug was caused by the astonishing interaction of "return" and
pipelines; in the following code, the "return" does not exit the
function, but instead exits the subshell which was spawned for the last
element of the pipeline; consequently, the output produced is "foo".

foo() {
	echo bar | while read baz; do
		if [ ${baz} = "bar" ]; then
			return 1
		fi
	done

	echo foo
}

Reported by:	simon
2005-08-13 21:28:43 +00:00
simon
4f61404d8e Misc mdoc(7) fixes:
- Bump document date for recent updates.
- Use .Fx for FreeBSD.
- Remove EOL whitespace.
- Start new sentences on new lines.

Reviewed by:	cperciva
2005-08-13 19:08:10 +00:00
cperciva
15d7ec1545 Allow multiple commands to be specified on a single command line, e.g.,
"portsnap fetch update" or "portsnap -I cron update".  They will be
executed in the order that they appear, and duplicates are not removed
(so "portsnap fetch fetch fetch fetch" is meaningful, albeit rather
silly).

Requested by:	Roman Divacky
2005-08-13 16:27:13 +00:00
cperciva
4bcaa2acb8 Fix the progress statistics code by printing the right variable. I
missed this when I changed the stats code in the ports -> base
transition.

Pointed out by:	simon
2005-08-13 11:55:29 +00:00
cperciva
b415e0b0dd When using cmp(1) to determine if the ports tree is already up to date,
we want the exit code, but not the actual output; add a redirect to
/dev/null.

Pointy hat to:	cperciva
2005-08-12 04:35:27 +00:00
cperciva
73e9556645 If the ports tree is already up to date when we run portsnap update,
exit early; this avoids spending five seconds rebuilding the INDEX
files.

Requested by:	somebody on IRC, but I can't remember who
2005-08-11 13:48:13 +00:00
cperciva
0f215b41b5 Remove unused variable.
Reported by:	stefanf
2005-08-10 13:45:00 +00:00
cperciva
1e9ecd7ff5 Check that malloc() succeeds in makelist.
Submitted by:	Roman Divacky (who did a very complete review of both
				make_index.c and phttpget.c)
2005-08-09 09:49:01 +00:00
cperciva
32083455b6 Replace INT_MAX with OFF_MAX. I used INT_MAX originally (in ports)
because OFF_MAX wasn't defined on FreeBSD 4.x.
2005-08-09 08:33:27 +00:00
cperciva
b7fa3f9b22 When parsing the HTTP_PROXY environment variable, strip a trailing /
from the port number (if any exists).  This unbreaks
env HTTP_PROXY="http://localhost:3128/" portsnap fetch

While I'm here, list both the host and the port in the error message
output if getaddrinfo() fails, since either of them could be responsible
for the failure.
2005-08-09 03:32:29 +00:00
cperciva
98677d0cbe Add a missing EOL when printing "Latest snapshot on server is older
than what we already have" message. [1]

When operating with the undocumented --debug option, replace "xargs
phttpget" with "xargs -t phttpget", since that might conceivably help
debugging.

Noticed by:	simon [1]
2005-08-09 02:50:14 +00:00
cperciva
7d8af51fdc Add portsnap to the base system. This is a secure, easy to use,
fast, lightweight, and generally good way for users to keep their
ports trees up to date.

This is version 0.9.4 from the ports tree (sysutils/portsnap) with
the following changes:
1. The experimental pipelined http code is enabled.  No seatbelts
in -CURRENT. (^_^)
2. The working directory has moved from /usr/local/portsnap to
/var/db/portsnap (as discussed on -arch two days ago).
3. Portsnap now fetches a list of mirrors (distributed as DNS SRV
records) and selects one randomly.  This should help to avoid the
uneven loading which plagues the cvsup mirror network.
4. The license is now 2-clause BSD instead of 3-clause BSD.
5. Various incidental changes to make portsnap fit into the base
system's build mechanics.

X-MFC-After:    6.0-RELEASE
X-MFC-Before:   5.5-RELEASE
X-MFC-To:       RELENG_6, RELENG_5, ports
discussed on:   -arch and several other places
"yes please" from:      simon, remko, flz, Diane Bruce
thinks this is a great idea:    bsdimp
Hopes he didn't forget any files:       cperciva
2005-08-08 20:10:06 +00:00