Xiyue Deng <manphiz@gmail.com> writes:
> Marc Espie <espie@nerim.net> writes:
>
>> On Sun, Dec 29, 2019 at 02:21:21AM -0800, Xiyue Deng wrote:
>>> Sure thing. It's not very interesting and looks like below:
>>>
>>> $ mount
>>> /dev/wd0a on / type ffs (local, wxallowed, softdep)
>>>
>>> (So basically my whole disk is mounted on /)
>>
>> ... and there was a bug in my logic because I never got a proot straight
>> mounted under /. It's now fixed.
>>
>>
>> Index: proot
>> ===================================================================
>> RCS file: /cvs/ports/infrastructure/bin/proot,v
>> retrieving revision 1.66
>> diff -u -p -r1.66 proot
>> --- proot 6 Dec 2019 13:40:46 -0000 1.66
>> +++ proot 29 Dec 2019 10:34:54 -0000
>> @@ -474,10 +474,15 @@ sub check_mountpoint
>> }
>> }
>> my $mnt = $root;
>> - do {{
>> + while (1) {
>> if (!defined $dev->{$mnt}) {
>> - $mnt = dirname($mnt);
>> - next;
>> + my $up = dirname($mnt);
>> + if ($mnt eq $up) {
>> + last;
>> + } else {
>> + $mnt = $up;
>> + next;
>> + }
>> }
>> $state->errsay("#1 is under #2 which is nodev", $root, $mnt)
>> if $dev->{$mnt} == 0;
>> @@ -485,8 +490,8 @@ sub check_mountpoint
>> $root, $mnt) if $nosuid->{$mnt} == 0;
>> $state->errsay("#1 is under #2 which does not have wxallowed",
>> $root, $mnt) if $wx->{$mnt} == 0;
>> - return;
>> - }} while ($mnt ne dirname($mnt));
>> + return;
>> + }
>> $state->fatal_error("Couldn't find mountpoint for #1 ???", $root);
>> }
>>
>
> It's working now! Thanks Marc for the quick fix!
A follow up question: It seems dpb still cannot use the created chroot
by default. I created the chroot using the following command as
suggested in the man page:
,----
| $ proot -B /build actions=unpopulate_light check_symlinks
`----
The error messages look like below:
,----
| $ sudo /usr/ports/infrastructure/bin/dpb -B /build -P ~/localports -DCOLOR=1
| Password:
| *** Parse error in /: Could not find /usr/ports/infrastructure/mk/bsd.port.mk (<bsd.port.mk>:5)
| dpb: Can't obtain vital information from the ports tree
| Usage: dpb [-acemqrRsuUvx] [-A arch] [-B chroot] [-C plist] [-f m] [-F m]
| [-I pathlist] [-J p] [-j n] [-p parallel] [-P pathlist] [-h hosts]
| [-L logdir] [-l lockdir] [-b log] [-M threshold] [-X pathlist]
| [pathlist ...]
`----
I checked the chroot under /build and it seems
/build/usr/ports/infrastructure does not exist. Maybe the contents of
/usr/ports/infrastructure should be copied over as well? Or am I missing
some options in the dpb command?
No comments:
Post a Comment