Subject: Re: Broken PKG_PATH semantics on pkg_add
To: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
From: David Brownlee <abs@netbsd.org>
List: tech-pkg
Date: 08/29/2002 22:46:52
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-508077184-1030657612=:21266
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Wed, 28 Aug 2002, YAMAMOTO Takashi wrote:

> From: David Brownlee <abs@netbsd.org>
> Date: Tue, 27 Aug 2002 17:39:56 +0100 (BST)
> >
> > 	Updated patch attached. Its calls getcwd() for every relative
> > 	path given on the command line, which may be a net win in some
> > 	cases :), but otherwise feels pretty reasonable.
>
> please don't add '.' to path blindly in the no-'/' case.
> it isn't safe because PKG_PATH may not contain
> current directory.

	Makes a lot of sense - apologies for missing that. Updated
	and also renamed path_remove_first() to path_prepend_clear().

> in addition, if you do pkg_add somedir/pkg (a relative path),
> ./somedir/somedir/pkg will be searched.
> i think it isn't your intent.
>
	path_new_entry() calls getcwd() in that case so it still gets
	an absolute path.

> path_prepend_from_pkgname and path_remove_first are
> a little hackish, IMO. i think what to do is:
> 1. dynamically alloc a temporary pathhead instead of using
>    one global PkgPath.
> 2. add a new temporary entry from pkgname to it.
> 3. then pass it to installprereq.
> 4. free a temporary pathhead.

	I think I might be missing something? That seems quite similar
	to the existing code, except called once per prereq packages to
	be installed rather than once per pkg_do(). Presumably its still
	going to be calling path_new_entry() so it doesn't duplicate
	the path parsing, and then pushing it onto the start of the list?
	Do you mean to change the original code to pass PkgPath around
	everywhere its used and to create a local copy and prepend the
	path to that?

	Oh if only the original code has just bundled everything up in
	nice object like structs and passed them around :)


-- 
		David/absolute          -- www.netbsd.org: No hype required --

--0-508077184-1030657612=:21266
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=diff
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.NEB.4.44.0208292246520.21266@moss.i.formula1.com>
Content-Description: 
Content-Disposition: attachment; filename=diff

PyBhZGQvcGtnX2FkZA0KPyBhZGQvcGtnX2FkZC5jYXQxDQo/IGFkbWluL3Br
Z19hZG1pbg0KPyBhZG1pbi9wa2dfYWRtaW4uY2F0MQ0KPyBjcmVhdGUvcGtn
X2NyZWF0ZQ0KPyBjcmVhdGUvcGtnX2NyZWF0ZS5jYXQxDQo/IGRlbGV0ZS9w
a2dfZGVsZXRlDQo/IGRlbGV0ZS9wa2dfZGVsZXRlLmNhdDENCj8gaW5mby9w
a2dfaW5mbw0KPyBpbmZvL3BrZ19pbmZvLmNhdDENCkluZGV4OiBhZGQvcGVy
Zm9ybS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2
c3Jvb3QvYmFzZXNyYy91c3Iuc2Jpbi9wa2dfaW5zdGFsbC9hZGQvcGVyZm9y
bS5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS43Mg0KZGlmZiAtdSAtQiAt
cjEuNzIgcGVyZm9ybS5jDQotLS0gYWRkL3BlcmZvcm0uYwkyMDAyLzA4LzI3
IDE3OjI3OjI3CTEuNzINCisrKyBhZGQvcGVyZm9ybS5jCTIwMDIvMDgvMjkg
MjE6NDQ6MjENCkBAIC03MjAsNyArNzIwLDcgQEANCiAJCXdoaWxlICgobHBw
ID0gVEFJTFFfRklSU1QocGtncykpICE9IE5VTEwpIHsNCiAJCQlwYXRoX3By
ZXBlbmRfZnJvbV9wa2duYW1lKGxwcC0+bHBfbmFtZSk7DQogCQkJZXJyX2Nu
dCArPSBwa2dfZG8obHBwLT5scF9uYW1lKTsNCi0JCQlwYXRoX3JlbW92ZV9m
aXJzdCgpOw0KKwkJCXBhdGhfcHJlcGVuZF9jbGVhcigpOw0KIAkJCVRBSUxR
X1JFTU9WRShwa2dzLCBscHAsIGxwX2xpbmspOw0KIAkJCWZyZWVfbHBrZyhs
cHApOw0KIAkJfQ0KSW5kZXg6IGxpYi9wYXRoLmMNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NClJDUyBmaWxlOiAvY3Zzcm9vdC9iYXNlc3JjL3Vzci5zYmlu
L3BrZ19pbnN0YWxsL2xpYi9wYXRoLmMsdg0KcmV0cmlldmluZyByZXZpc2lv
biAxLjMNCmRpZmYgLXUgLUIgLXIxLjMgcGF0aC5jDQotLS0gbGliL3BhdGgu
YwkyMDAyLzA4LzI3IDE3OjI3OjMwCTEuMw0KKysrIGxpYi9wYXRoLmMJMjAw
Mi8wOC8yOSAyMTo0NDoyMQ0KQEAgLTM2LDYgKzM2LDcgQEANCiAjaW5jbHVk
ZSAibGliLmgiDQogDQogc3RydWN0IHBhdGhoZWFkIFBrZ1BhdGggPSBUQUlM
UV9IRUFEX0lOSVRJQUxJWkVSKFBrZ1BhdGgpOw0KK3N0YXRpYyBzdHJ1Y3Qg
cGF0aCAqcHJlcGVuZCA9IDA7DQogDQogc3RhdGljIHN0cnVjdCBwYXRoICpw
YXRoX25ld19lbnRyeShjb25zdCBjaGFyICpjcCwgc2l6ZV90IGxlbik7DQog
DQpAQCAtMTM0LDI4ICsxMzUsMjggQEANCiB9DQogDQogLyoNCi0gKiBHaXZl
biBhIHBhY2thZ2UgbmFtZSwgcHVzaCBpdHMgcGF0aCBvbnRvIHRoZSBzdGFy
dCBvZiAnUGtnUGF0aCcNCisgKiBwYXRoX3ByZXBlbmRfZnJvbV9wa2duYW1l
OiBwcmVwZW5kIHRoZSBwYXRoIGZvciBhIHBhY2thZ2Ugb250byAnUGtnUGF0
aCcNCiAgKi8NCiB2b2lkDQogcGF0aF9wcmVwZW5kX2Zyb21fcGtnbmFtZShj
b25zdCBjaGFyICpwa2duYW1lKQ0KIHsNCi0Jc3RydWN0IHBhdGggKm5ldzsN
CiAJY2hhciAqcHRyOw0KLQlpZiAoKHB0ciA9IHN0cnJjaHIocGtnbmFtZSAs
ICcvJykpKQ0KLQkJbmV3ID0gcGF0aF9uZXdfZW50cnkocGtnbmFtZSwgcHRy
IC0gcGtnbmFtZSk7DQotCWVsc2UNCi0JCW5ldyA9IHBhdGhfbmV3X2VudHJ5
KCIuIiwgMSk7DQotDQotCVRBSUxRX0lOU0VSVF9IRUFEKCZQa2dQYXRoLCBu
ZXcsIHBsX2VudHJ5KTsNCisJaWYgKChwdHIgPSBzdHJyY2hyKHBrZ25hbWUg
LCAnLycpKSkgew0KKwkJcHJlcGVuZCA9IHBhdGhfbmV3X2VudHJ5KHBrZ25h
bWUsIHB0ciAtIHBrZ25hbWUpOw0KKwkJVEFJTFFfSU5TRVJUX0hFQUQoJlBr
Z1BhdGgsIHByZXBlbmQsIHBsX2VudHJ5KTsNCisJfQ0KIH0NCiANCiAvKg0K
LSAqIFJlbW92ZSB0aGUgZmlyc3QgZW50cnkgb2YgJ1BrZ1BhdGgnIC0gdXNl
ZCBhZnRlciBwYXRoX3ByZXBlbmRfZnJvbV9wa2duYW1lKCkNCisgKiBwYXRo
X3ByZXBlbmRfY2xlYXI6IFJlbW92ZSBhbnkgcHJlcGVuZGVkIGVudHJ5IGZy
b20gJ1BrZ1BhdGgnDQogICovDQogdm9pZA0KLXBhdGhfcmVtb3ZlX2ZpcnN0
KCkNCitwYXRoX3ByZXBlbmRfY2xlYXIoKQ0KIHsNCi0JVEFJTFFfUkVNT1ZF
KCZQa2dQYXRoLCBUQUlMUV9GSVJTVCgmUGtnUGF0aCksIHBsX2VudHJ5KTsN
CisJaWYgKHByZXBlbmQpIHsNCisJCVRBSUxRX1JFTU9WRSgmUGtnUGF0aCwg
cHJlcGVuZCwgcGxfZW50cnkpOw0KKwkJcHJlcGVuZCA9IDA7DQorCX0NCiB9
DQogDQogLyoNCkluZGV4OiBsaWIvcGF0aC5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQpSQ1MgZmlsZTogL2N2c3Jvb3QvYmFzZXNyYy91c3Iuc2Jpbi9w
a2dfaW5zdGFsbC9saWIvcGF0aC5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24g
MS4yDQpkaWZmIC11IC1CIC1yMS4yIHBhdGguaA0KLS0tIGxpYi9wYXRoLmgJ
MjAwMi8wOC8yNyAxNzoyNzozMQkxLjINCisrKyBsaWIvcGF0aC5oCTIwMDIv
MDgvMjkgMjE6NDQ6MjENCkBAIC0zNiw1ICszNiw1IEBADQogdm9pZCBwYXRo
X2NyZWF0ZShjb25zdCBjaGFyICopOw0KIHZvaWQgcGF0aF9mcmVlKHZvaWQp
Ow0KIHZvaWQgcGF0aF9wcmVwZW5kX2Zyb21fcGtnbmFtZShjb25zdCBjaGFy
ICopOw0KLXZvaWQgcGF0aF9yZW1vdmVfZmlyc3Qodm9pZCk7DQordm9pZCBw
YXRoX3ByZXBlbmRfY2xlYXIodm9pZCk7DQogdm9pZCBwYXRoX3NldGVudihj
b25zdCBjaGFyICopOw0K
--0-508077184-1030657612=:21266--