Re: git: a8b4678fc925 - main - emulators/virtualbox-ose-70: Fix 15-CURRENT kmod build

From: Vladimir Druzenko <vvd_at_freebsd.org>
Date: Thu, 01 May 2025 00:55:41 UTC
29.04.2025 02:29, Cy Schubert пишет:
> On Tue, 29 Apr 2025 00:59:36 +0300
> Vladimir Druzenko<vvd@freebsd.org> wrote:
>
>> Hello!
>>
>> Thanks for patch, but!
>> 1. What is the purpose of such changes:
>>> -@@ -155,8 +157,6 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
>>> +@@ -155,8 +157,6 @@
>> ?
> Patch regeneration. diff -u produces a new patch.

As already mentioned, according to the handbook, the preferred way to 
create patches is make makepatch, not diff -u. If you look at the 
history of changes to this file, you will see that in the previous 
commit, the patch made by diff -u was replaced with make makepatch.
I insist that this needs to be fixed.

>> 2. AFAIK, I'm the only one in vbox@ (maintainer of all VirtualBox ports)
>> and I'm active. Why did you committed this patch without at least notify me?
> Build fixes are implicitly approved by portmgr. I should have put "approved by: portmgr (break fix)".
>> It isn't "port breakage" - 15 isn't releases yet and we can prepare
> Actually it is port breakage.
>
> --- memuserkernel-r0drv-freebsd.o ---
> --- memobj-r0drv-freebsd.o ---
> /wrkdirs/usr/ports/emulators/virtualbox-ose-kmod-70/work/VirtualBox-7.0.24/out/freebsd.amd64/release/bin/src/vboxdrv/r0drv/freebsd/memobj-r0drv-freebsd.c:474:53: error: member reference type 'int' is not a pointer
>    474 |                 pMemFreeBSD->Core.u.Phys.PhysBase = VM_PAGE_TO_PHYS(vm_page_find_least(pMemFreeBSD->pObject, 0));
>        |                                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/src/sys/vm/vm_page.h:504:42: note: expanded from macro 'VM_PAGE_TO_PHYS'
>    504 | #define VM_PAGE_TO_PHYS(entry)  ((entry)->phys_addr)
>        |                                  ~~~~~~~  ^
> 1 error generated.
> *** [memobj-r0drv-freebsd.o] Error code 1
On which of the supported versions of FreeBSD (14.2, 13.4, 13.5) does 
the port not build?
I'll answer myself - it works on all versions. Therefore "approved by: 
portmgr (break fix)" is not applicable - nothing is broken.
Users of CURRENT know what they are getting into and should be prepared 
to wait a few days after such destructive changes in base.
Things turned out much worse with ports on go several weeks ago.

>> patch several days as was in:
>> https://bugs.freebsd.org/286206
>> https://bugs.freebsd.org/286193
>> https://bugs.freebsd.org/286204
>> If you want, you can join vbox@.
> Sure.
I don't know the exact procedure for joining the working group, but just 
in case I'll say that I'd be only too happy to work together with such 
an experienced ports developer.
>> Otherwise, it is unclear what these groups and maintainers are for, if
>> everyone can commit whatever they want at their own discretion.
> As I understand, break fixes are implicitly approved by portmgr.
>
>> 3. Have you checked other versions of VirtualBox:
>> emulators/virtualbox-ose-kmod and emulators/virtualbox-ose-kmod-legacy?
>> Do they need the same patch?
> They all need the patch since vm_page_find_least() was removed from 15.
> This affected not only the vbox ports but the graphics/drm* ports as
> well.

Let's apply this patch to other versions of VirtualBox (taking into 
account the requirement to use make makepatch).

>> Please either fix the patch taking into account the comments above, and
>> also prepare patches for other versions of VirtualBox, or revert the
>> commit and create a PR with the proposed patch, and I will fix it myself
>> and port it to other versions of VirtualBox (if necessary).
>>
>> If you don't do any of the above, then I, as the maintainer, will do
>> everything myself on May 1st.
> I can apply the same fixes to all the vbox ports if you want or if you
> prefer, that's fine by me as well.
>
> Sorry for stepping on your toes here. It wasn't my intention to take
> over, just to fix a broken port. I'm perfectly fine only opening PRs for
> the vbox ports if you prefer.

Let's start with the fact that we will prepare a corrective patch for 
7.0 using make makepatch. Then for the two remaining ports.
The only thing is that I don't have FreeBSD 15 anywhere to test the 
build, so this task is either on you or I will ask someone else.

I suggest continuing the technical discussion in PR 
https://bugs.freebsd.org/286206.


P.S. Almost all of my answers in this letter were translated using an 
online translator, so there may be errors, but it's still better than if 
I wrote everything myself without using them.

>> 28.04.2025 23:32, Cy Schubert пишет:
>>> The branch main has been updated by cy:
>>>
>>> URL:https://cgit.FreeBSD.org/ports/commit/?id=a8b4678fc9255e3c2c95598c95bf5972941998fd
>>>
>>> commit a8b4678fc9255e3c2c95598c95bf5972941998fd
>>> Author:     Cy Schubert<cy@FreeBSD.org>
>>> AuthorDate: 2025-04-28 17:19:13 +0000
>>> Commit:     Cy Schubert<cy@FreeBSD.org>
>>> CommitDate: 2025-04-28 20:29:16 +0000
>>>
>>>       emulators/virtualbox-ose-70: Fix 15-CURRENT kmod build
>>>       
>>>       One remaining instance of vm_page_find_least(), which was removed in
>>>       15-CURRENT, remained. Replace it with a call to vm_radix_lookup_ge()
>>>       instead.
>>> ---
>>>    ...ox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c | 80 +++++++++++++---------
>>>    1 file changed, 46 insertions(+), 34 deletions(-)
>>>
>>> diff --git a/emulators/virtualbox-ose-70/files/patch-src_VBox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c b/emulators/virtualbox-ose-70/files/patch-src_VBox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c
>>> index 7b8767a8aa58..205c897c818d 100644
>>> --- a/emulators/virtualbox-ose-70/files/patch-src_VBox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c
>>> +++ b/emulators/virtualbox-ose-70/files/patch-src_VBox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c
>>> @@ -1,6 +1,6 @@
>>> ---- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c.orig	2025-01-21 14:07:00 UTC
>>> -+++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c
>>> -@@ -139,8 +139,10 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
>>> +--- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c.orig	2025-04-11 05:12:39.000000000 -0700
>>> ++++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c	2025-04-28 10:14:45.981609000 -0700
>>> +@@ -139,8 +139,10 @@


-- 
Best regards,
Vladimir Druzenko