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
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.
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
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
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
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
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)
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]
© 2016 - 2024 Red Hat, Inc.