Skip to contentSkip to conversation

make /usr/bin/qemu the native arch

PATCH In review Robert Millan 4 participants 6 messages Jul 8, 2007 – Aug 1, 2007 Kbuild

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 make /usr/bin/qemu the native arch

Hi,

Shouldn't /usr/bin/qemu be an alias for qemu-system-$(ARCH), where $(ARCH) is the native architecture? Defaulting to i386 doesn't make much sense nowadays, specially since x86_64 is gradually obsoleting it.

See attached patch.

Signature · 4 lines
Robert Millan

My spam trap is [email protected].  Note: this address is only intended
for spam harvesters.  Writing to it will get you added to my black list.
Makefile.target +7 -4
@@ -43,11 +43,7 @@
 QEMU_USER=qemu-$(TARGET_ARCH2)
 # system emulator name
 ifdef CONFIG_SOFTMMU
-ifeq ($(TARGET_ARCH), i386)
-QEMU_SYSTEM=qemu$(EXESUF)
-else
 QEMU_SYSTEM=qemu-system-$(TARGET_ARCH2)$(EXESUF)
-endif
 else
 QEMU_SYSTEM=qemu-fast
 endif
@@ -531,6 +527,13 @@
 install: all 
 ifneq ($(PROGS),)
 	$(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
+ifeq ($(ARCH), $(TARGET_ARCH2))
+ifdef _WIN32
+	mv "$(DESTDIR)$(bindir)/qemu-system-$(TARGET_ARCH2)$(EXESUF)" "$(DESTDIR)$(bindir)/qemu$(EXESUF)"
+else
+	ln -s qemu-system-$(TARGET_ARCH2)$(EXESUF) "$(DESTDIR)$(bindir)/qemu$(EXESUF)"
+endif
+endif
 endif
 
 ifneq ($(wildcard .depend),)
#1 lore raw
Quoted 6 lines · Robert Millan

Hi,

Shouldn't /usr/bin/qemu be an alias for qemu-system-$(ARCH), where $(ARCH) is the native architecture? Defaulting to i386 doesn't make much sense nowadays, specially since x86_64 is gradually obsoleting it.

Management tools for QEMU will have come to rely on existing semantics of /usr/bin/qemu being i386. Changing this for merely cosmetic reasons would cause significant technical complications because tools would then have to try and detect whether /usr/bin/qemu were native or i386. Thus I see no real functional/technical benefit to changing it, and plenty of downside.

Dan.

Signature · 4 lines
|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 
#2 lore raw
Quoted 7 lines · Daniel P. Berrange
Quoted 3 lines · Robert Millan

Shouldn't /usr/bin/qemu be an alias for qemu-system-$(ARCH), where $(ARCH) is the native architecture? Defaulting to i386 doesn't make much sense nowadays, specially since x86_64 is gradually obsoleting it.

Management tools for QEMU will have come to rely on existing semantics of /usr/bin/qemu being i386.

Why?! If they rely on 386 I think they should directly use qemu-system-i386... If they manage in an architecture independent way then use the qemu link...

Quoted 1 line

Changing this for merely cosmetic reasons would

Not cosmetic, logic...

Quoted 2 lines

cause significant technical complications because tools would then have to try and detect whether /usr/bin/qemu were native or i386.

See my previous why?! ;)

Quoted 2 lines

Thus I see no
real functional/technical benefit to changing it, and plenty of downside.

If it's more logic, you have a functional benefit. And for the downside, I don't see them except for non-logic assumptions ;)

Regards,
Ricardo Almeida

#3 lore raw
Quoted 6 lines · Ricardo Almeida
Quoted 5 lines · Daniel P. Berrange
Quoted 1 line · Robert Millan

Shouldn't /usr/bin/qemu be an alias for qemu-system-$(ARCH), where

$(ARCH) is

Quoted 1 line

the native architecture? Defaulting to i386 doesn't make much sense

nowadays,

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

specially since x86_64 is gradually obsoleting it.

Management tools for QEMU will have come to rely on existing semantics of /usr/bin/qemu being i386.

Why?! If they rely on 386 I think they should directly use qemu-system-i386... If they manage in an architecture independent way then use the qemu link...

Rely on a binary which doesn't currently exist ? A fresh checkout & build of qemu cvs does not produce any qemu-system-i386 binary. So that's not really a viable answer to my point, which is that by renaming the binary there will be added complexity in any tools using qemu, for zero functional improvement.

Quoted 3 lines
Quoted 1 line

Changing this for merely cosmetic reasons would

Not cosmetic, logic...

There was logic with existing naming scheme too, merely different logic than what is proposed. A rename is merely changing logic for cosmetic reasons.

Quoted 4 lines
Quoted 2 lines

cause significant technical complications because tools would then have to try and detect whether /usr/bin/qemu were native or i386.

See my previous why?! ;)

Because there is no qemu-system-i386 binary

Quoted 5 lines
Quoted 2 lines

Thus I see no
real functional/technical benefit to changing it, and plenty of downside.

If it's more logic, you have a functional benefit. And for the downside, I don't see them except for non-logic assumptions ;)

If there was no historical precedent with all previous QEMU releases naming it qemu then it'd not be an issue. Since there is historical precedent, changing it will create unneccessary complexity for any tool which wishes to manage QEMU instances. Changing the logic behind binary name alone is *not* a functional benefit, it is merely cosmetic.

Dan.

Signature · 4 lines
|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 
#4 lore raw
Quoted 12 lines · Daniel P. Berrange
Quoted 11 lines · Ricardo Almeida
Quoted 9 lines · Daniel P. Berrange
Quoted 1 line · Robert Millan

Shouldn't /usr/bin/qemu be an alias for qemu-system-$(ARCH), where

$(ARCH) is

Quoted 1 line

the native architecture? Defaulting to i386 doesn't make much sense

nowadays,

Quoted 1 line

specially since x86_64 is gradually obsoleting it.

Management tools for QEMU will have come to rely on existing semantics of /usr/bin/qemu being i386.

Quoted 6 lines
Quoted 3 lines

Why?! If they rely on 386 I think they should directly use qemu-system-i386... If they manage in an architecture independent way then use the qemu link...

Rely on a binary which doesn't currently exist ? A fresh checkout & build of qemu cvs does not produce any qemu-system-i386 binary. So that's not

Maybe it's a good idea to make qemu-system-i386 a symlink to qemu or the other way, for now, and after some time do what Ricardo proposed, which is more logical. After all qemu has already broken commandline backwards compatibility many times and probably will do more times.

And here's one of my usual strange but fun ideas: make "qemu" a wrapper that reads a number of first bytes of the harddisk/cdrom/kernel image or whatever media was given, and applies a heuristic to decide what architecture the instructions would be best interpreted as. The "file" program likely already contains a sample of such heuristic.

(A similar idea with reusing "file" code was for vvfat to detect what OS is on a given partition and fake an MBR respective to the OS).

Cheers,
Andrzej

#5 lore raw
In reply to Daniel P. Berrange
Quoted 2 lines

Management tools for QEMU will have come to rely on existing semantics of /usr/bin/qemu being i386.

How about just deprecating it? For example, we could make /usr/bin/qemu be a script with:

#!/bin/bash
echo "warning: $0 is deprecated, use qemu-system-i386 instead" exec qemu-system-i386 $@

Quoted 1 line

Changing this for merely cosmetic reasons [...]

It's not just cosmetic. I recall you sent me some benchmarks (too bad they didn't make it to the list, and I somehow lost that mail), but they were done on i386 (which remains unaffected). On x86_64, results are different (specially if you have setup kqemu which only works with qemu-system-x86_64).

Signature · 4 lines
Robert Millan

My spam trap is [email protected].  Note: this address is only intended
for spam harvesters.  Writing to it will get you added to my black list.