[PATCH] tools: Add install/uninstall targets to tests/x86_emulator

Alejandro Vallejo posted 1 patch 6 months, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://gitlab.com/xen-project/patchew/xen tags/patchew/20240516110710.3446-1-alejandro.vallejo@cloud.com
tools/tests/x86_emulator/Makefile | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
[PATCH] tools: Add install/uninstall targets to tests/x86_emulator
Posted by Alejandro Vallejo 6 months, 1 week ago
Bring test_x86_emulator in line with other tests by adding
install/uninstall rules.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 tools/tests/x86_emulator/Makefile | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/tools/tests/x86_emulator/Makefile b/tools/tests/x86_emulator/Makefile
index 834b2112e7fe..30edf7e0185d 100644
--- a/tools/tests/x86_emulator/Makefile
+++ b/tools/tests/x86_emulator/Makefile
@@ -269,8 +269,15 @@ clean:
 .PHONY: distclean
 distclean: clean
 
-.PHONY: install uninstall
-install uninstall:
+.PHONY: install
+install: all
+	$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
+	$(if $(TARGET-y),$(INSTALL_PROG) $(TARGET-y) $(DESTDIR)$(LIBEXEC_BIN))
+
+.PHONY: uninstall
+uninstall:
+	$(RM) -- $(addprefix $(DESTDIR)$(LIBEXEC_BIN)/,$(TARGET-y))
+
 
 .PHONY: run32 clean32
 ifeq ($(XEN_COMPILE_ARCH),x86_64)
-- 
2.34.1
Re: [PATCH] tools: Add install/uninstall targets to tests/x86_emulator
Posted by Roger Pau Monné 6 months, 1 week ago
On Thu, May 16, 2024 at 12:07:10PM +0100, Alejandro Vallejo wrote:
> Bring test_x86_emulator in line with other tests by adding
> install/uninstall rules.
> 
> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> ---
>  tools/tests/x86_emulator/Makefile | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/tests/x86_emulator/Makefile b/tools/tests/x86_emulator/Makefile
> index 834b2112e7fe..30edf7e0185d 100644
> --- a/tools/tests/x86_emulator/Makefile
> +++ b/tools/tests/x86_emulator/Makefile
> @@ -269,8 +269,15 @@ clean:
>  .PHONY: distclean
>  distclean: clean
>  
> -.PHONY: install uninstall
> -install uninstall:
> +.PHONY: install
> +install: all
> +	$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
> +	$(if $(TARGET-y),$(INSTALL_PROG) $(TARGET-y) $(DESTDIR)$(LIBEXEC_BIN))
> +
> +.PHONY: uninstall
> +uninstall:
> +	$(RM) -- $(addprefix $(DESTDIR)$(LIBEXEC_BIN)/,$(TARGET-y))
> +

FWIW, should you check that HOSTCC == CC before installing?  Otherwise
I'm unsure of the result in cross-compiled builds, as the x86_emulator
is built with HOSTCC, not CC.

Thanks, Roger.
Re: [PATCH] tools: Add install/uninstall targets to tests/x86_emulator
Posted by Alejandro Vallejo 6 months, 1 week ago
On 16/05/2024 12:35, Roger Pau Monné wrote:
> On Thu, May 16, 2024 at 12:07:10PM +0100, Alejandro Vallejo wrote:
>> Bring test_x86_emulator in line with other tests by adding
>> install/uninstall rules.
>>
>> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
>> ---
>>  tools/tests/x86_emulator/Makefile | 11 +++++++++--
>>  1 file changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/tools/tests/x86_emulator/Makefile b/tools/tests/x86_emulator/Makefile
>> index 834b2112e7fe..30edf7e0185d 100644
>> --- a/tools/tests/x86_emulator/Makefile
>> +++ b/tools/tests/x86_emulator/Makefile
>> @@ -269,8 +269,15 @@ clean:
>>  .PHONY: distclean
>>  distclean: clean
>>  
>> -.PHONY: install uninstall
>> -install uninstall:
>> +.PHONY: install
>> +install: all
>> +	$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
>> +	$(if $(TARGET-y),$(INSTALL_PROG) $(TARGET-y) $(DESTDIR)$(LIBEXEC_BIN))
>> +
>> +.PHONY: uninstall
>> +uninstall:
>> +	$(RM) -- $(addprefix $(DESTDIR)$(LIBEXEC_BIN)/,$(TARGET-y))
>> +
> 
> FWIW, should you check that HOSTCC == CC before installing?  Otherwise
> I'm unsure of the result in cross-compiled builds, as the x86_emulator
> is built with HOSTCC, not CC.
> 
> Thanks, Roger.

Right...

More generally, should we do s/CC/HOSTCC/ on all compiler checks? I see
no particular reason to do them on $(CC) rather than the actual compiler
used during build.

Cheers,
Alejandro

Re: [PATCH] tools: Add install/uninstall targets to tests/x86_emulator
Posted by Jan Beulich 6 months, 1 week ago
On 16.05.2024 14:29, Alejandro Vallejo wrote:
> On 16/05/2024 12:35, Roger Pau Monné wrote:
>> On Thu, May 16, 2024 at 12:07:10PM +0100, Alejandro Vallejo wrote:
>>> Bring test_x86_emulator in line with other tests by adding
>>> install/uninstall rules.
>>>
>>> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
>>> ---
>>>  tools/tests/x86_emulator/Makefile | 11 +++++++++--
>>>  1 file changed, 9 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/tools/tests/x86_emulator/Makefile b/tools/tests/x86_emulator/Makefile
>>> index 834b2112e7fe..30edf7e0185d 100644
>>> --- a/tools/tests/x86_emulator/Makefile
>>> +++ b/tools/tests/x86_emulator/Makefile
>>> @@ -269,8 +269,15 @@ clean:
>>>  .PHONY: distclean
>>>  distclean: clean
>>>  
>>> -.PHONY: install uninstall
>>> -install uninstall:
>>> +.PHONY: install
>>> +install: all
>>> +	$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
>>> +	$(if $(TARGET-y),$(INSTALL_PROG) $(TARGET-y) $(DESTDIR)$(LIBEXEC_BIN))
>>> +
>>> +.PHONY: uninstall
>>> +uninstall:
>>> +	$(RM) -- $(addprefix $(DESTDIR)$(LIBEXEC_BIN)/,$(TARGET-y))
>>> +
>>
>> FWIW, should you check that HOSTCC == CC before installing?  Otherwise
>> I'm unsure of the result in cross-compiled builds, as the x86_emulator
>> is built with HOSTCC, not CC.
>>
>> Thanks, Roger.
> 
> Right...
> 
> More generally, should we do s/CC/HOSTCC/ on all compiler checks? I see
> no particular reason to do them on $(CC) rather than the actual compiler
> used during build.

No. There really is a mix here, intentionally. Anything built through testcase.mk
is using CC, and hence respective checking needs to use CC, too. That said, I
don't think the split is done quite correctly just yet, which may raise the
question of whether having the split is actually worth it.

Jan

Re: [PATCH] tools: Add install/uninstall targets to tests/x86_emulator
Posted by Alejandro Vallejo 6 months, 1 week ago
Hi,

On 16/05/2024 13:37, Jan Beulich wrote:
> On 16.05.2024 14:29, Alejandro Vallejo wrote:
>> On 16/05/2024 12:35, Roger Pau Monné wrote:
>>> On Thu, May 16, 2024 at 12:07:10PM +0100, Alejandro Vallejo wrote:
>>>> Bring test_x86_emulator in line with other tests by adding
>>>> install/uninstall rules.
>>>>
>>>> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
>>>> ---
>>>>  tools/tests/x86_emulator/Makefile | 11 +++++++++--
>>>>  1 file changed, 9 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/tools/tests/x86_emulator/Makefile b/tools/tests/x86_emulator/Makefile
>>>> index 834b2112e7fe..30edf7e0185d 100644
>>>> --- a/tools/tests/x86_emulator/Makefile
>>>> +++ b/tools/tests/x86_emulator/Makefile
>>>> @@ -269,8 +269,15 @@ clean:
>>>>  .PHONY: distclean
>>>>  distclean: clean
>>>>  
>>>> -.PHONY: install uninstall
>>>> -install uninstall:
>>>> +.PHONY: install
>>>> +install: all
>>>> +	$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
>>>> +	$(if $(TARGET-y),$(INSTALL_PROG) $(TARGET-y) $(DESTDIR)$(LIBEXEC_BIN))
>>>> +
>>>> +.PHONY: uninstall
>>>> +uninstall:
>>>> +	$(RM) -- $(addprefix $(DESTDIR)$(LIBEXEC_BIN)/,$(TARGET-y))
>>>> +
>>>
>>> FWIW, should you check that HOSTCC == CC before installing?  Otherwise
>>> I'm unsure of the result in cross-compiled builds, as the x86_emulator
>>> is built with HOSTCC, not CC.
>>>
>>> Thanks, Roger.
>>
>> Right...
>>
>> More generally, should we do s/CC/HOSTCC/ on all compiler checks? I see
>> no particular reason to do them on $(CC) rather than the actual compiler
>> used during build.
> 
> No. There really is a mix here, intentionally. Anything built through testcase.mk
> is using CC, and hence respective checking needs to use CC, too. That said, I
> don't think the split is done quite correctly just yet, which may raise the
> question of whether having the split is actually worth it.
> 
> Jan

I'm a bit puzzled by this. Why do we compile pieces of the test binary
with different toolchains?

At a glance it seems inconsequential in the native case and
fully broken on the cross-compiled case (which I guess is what Roger was
hinting at and I failed to notice).

Why the distinction? What am I missing?

Cheers,
Alejandro

Re: [PATCH] tools: Add install/uninstall targets to tests/x86_emulator
Posted by Jan Beulich 6 months ago
On 16.05.2024 16:46, Alejandro Vallejo wrote:
> Hi,
> 
> On 16/05/2024 13:37, Jan Beulich wrote:
>> On 16.05.2024 14:29, Alejandro Vallejo wrote:
>>> On 16/05/2024 12:35, Roger Pau Monné wrote:
>>>> On Thu, May 16, 2024 at 12:07:10PM +0100, Alejandro Vallejo wrote:
>>>>> Bring test_x86_emulator in line with other tests by adding
>>>>> install/uninstall rules.
>>>>>
>>>>> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
>>>>> ---
>>>>>  tools/tests/x86_emulator/Makefile | 11 +++++++++--
>>>>>  1 file changed, 9 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/tools/tests/x86_emulator/Makefile b/tools/tests/x86_emulator/Makefile
>>>>> index 834b2112e7fe..30edf7e0185d 100644
>>>>> --- a/tools/tests/x86_emulator/Makefile
>>>>> +++ b/tools/tests/x86_emulator/Makefile
>>>>> @@ -269,8 +269,15 @@ clean:
>>>>>  .PHONY: distclean
>>>>>  distclean: clean
>>>>>  
>>>>> -.PHONY: install uninstall
>>>>> -install uninstall:
>>>>> +.PHONY: install
>>>>> +install: all
>>>>> +	$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
>>>>> +	$(if $(TARGET-y),$(INSTALL_PROG) $(TARGET-y) $(DESTDIR)$(LIBEXEC_BIN))
>>>>> +
>>>>> +.PHONY: uninstall
>>>>> +uninstall:
>>>>> +	$(RM) -- $(addprefix $(DESTDIR)$(LIBEXEC_BIN)/,$(TARGET-y))
>>>>> +
>>>>
>>>> FWIW, should you check that HOSTCC == CC before installing?  Otherwise
>>>> I'm unsure of the result in cross-compiled builds, as the x86_emulator
>>>> is built with HOSTCC, not CC.
>>>>
>>>> Thanks, Roger.
>>>
>>> Right...
>>>
>>> More generally, should we do s/CC/HOSTCC/ on all compiler checks? I see
>>> no particular reason to do them on $(CC) rather than the actual compiler
>>> used during build.
>>
>> No. There really is a mix here, intentionally. Anything built through testcase.mk
>> is using CC, and hence respective checking needs to use CC, too. That said, I
>> don't think the split is done quite correctly just yet, which may raise the
>> question of whether having the split is actually worth it.
> 
> I'm a bit puzzled by this. Why do we compile pieces of the test binary
> with different toolchains?
> 
> At a glance it seems inconsequential in the native case and
> fully broken on the cross-compiled case (which I guess is what Roger was
> hinting at and I failed to notice).
> 
> Why the distinction? What am I missing?

It's convoluted and not fully consistent, yes. Consider for a moment that the
emulator truly was what its name says, i.e. not merely re-playing insns. In
such a case it could be run on non-x86, while still emulating x86 code. Thus
code being emulated and code doing the emulation would necessarily need to be
built with different compilers.

It being (in most cases) merely replaying, the boundary has been fuzzy for a
very long time: While for most parts it's clear what group they fall into,
test_x86_emulator.c itself is (has become? even 3.2.3 already has at least
one instance) a hybrid. Yet in principle this file should also be buildable
with the (x86 or non-x86) host compiler.

Jan

Re: [PATCH] tools: Add install/uninstall targets to tests/x86_emulator
Posted by Jan Beulich 6 months, 1 week ago
On 16.05.2024 13:07, Alejandro Vallejo wrote:
> Bring test_x86_emulator in line with other tests by adding
> install/uninstall rules.
> 
> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>

I'd expect such a change to come with a word towards what use the binary has
on the installed system. Imo we should not randomly put binaries in place
when there's - afaict - absolutely no use for them outside of development.

Jan

> --- a/tools/tests/x86_emulator/Makefile
> +++ b/tools/tests/x86_emulator/Makefile
> @@ -269,8 +269,15 @@ clean:
>  .PHONY: distclean
>  distclean: clean
>  
> -.PHONY: install uninstall
> -install uninstall:
> +.PHONY: install
> +install: all
> +	$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
> +	$(if $(TARGET-y),$(INSTALL_PROG) $(TARGET-y) $(DESTDIR)$(LIBEXEC_BIN))
> +
> +.PHONY: uninstall
> +uninstall:
> +	$(RM) -- $(addprefix $(DESTDIR)$(LIBEXEC_BIN)/,$(TARGET-y))
> +
>  
>  .PHONY: run32 clean32
>  ifeq ($(XEN_COMPILE_ARCH),x86_64)
Re: [PATCH] tools: Add install/uninstall targets to tests/x86_emulator
Posted by Alejandro Vallejo 6 months, 1 week ago
Hi,

On 16/05/2024 12:16, Jan Beulich wrote:
> On 16.05.2024 13:07, Alejandro Vallejo wrote:
>> Bring test_x86_emulator in line with other tests by adding
>> install/uninstall rules.
>>
>> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> 
> I'd expect such a change to come with a word towards what use the binary has
> on the installed system.

First of all, having some tests installed and some not is highly
confusing (See [1]).

> Imo we should not randomly put binaries in place
> when there's - afaict - absolutely no use for them outside of development

I don't disagree, but that's (imo) a packaging matter. For reference
XenServer has a xen-dom0-tests package for this very purpose, so we can
install it or withhold it at will.

Being able to validate that the development invariants still hold on
whatever machine you happen to be running on is generally a good thing,
I reckon.

Cheers,
Alejandro

==============================

[1] (grepped for the install target in the tests folder)

[snip]

--
./paging-mempool/Makefile:install: all
./paging-mempool/Makefile-      $(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
./paging-mempool/Makefile-      $(INSTALL_PROG) $(TARGET)
$(DESTDIR)$(LIBEXEC_BIN)
--
./xenstore/Makefile:install: all
./xenstore/Makefile-    $(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
./xenstore/Makefile-    $(if $(TARGETS),$(INSTALL_PROG) $(TARGETS)
$(DESTDIR)$(LIBEXEC_BIN))
--
./depriv/Makefile:install: all
./depriv/Makefile-      $(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
./depriv/Makefile-      $(INSTALL_PROG) $(INSTALL_PRIVBIN)
$(DESTDIR)$(LIBEXEC_BIN)
--
./cpu-policy/Makefile:install: all
./cpu-policy/Makefile-  $(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
./cpu-policy/Makefile-  $(if $(TARGETS),$(INSTALL_PROG) $(TARGETS)
$(DESTDIR)$(LIBEXEC_BIN))

[snip]