Xiyue Deng <[email protected]> writes:

> Marc Espie <[email protected]> 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?

Attachment: signature.asc
Description: PGP signature

Reply via email to