Can someone please define "host architecture" for me ?

For discussions about programming, programming questions/advice, and projects that don't really have anything to do with Puppy.
Post Reply
Message
Author
musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

Can someone please define "host architecture" for me ?

#1 Post by musher0 »

Hello all.

When the woof-CE asks you for your host architecture,
at the beginning of the woof building process:

is it referring to the CPU of your computer?
OR
is it referring to the Puppy you are building the new Pup with?

Practical example:
Let's say that I am trying to build a new Xenial "Pooch" 32-bit
-- from Slim-6, a Puppy of the Slacko breed, 32-bit.
-- However, the computer itself is a 64-bit dual core.

So... what is my real host architecture? :roll:
What answer do I give the woof-CE process?

Many thanks in advance.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

learnhow2code

Re: Can someone please define "host architecture" for me ?

#2 Post by learnhow2code »

musher0 wrote:is it referring to the CPU of your computer?
OR
is it referring to the Puppy you are building the new Pup with?
it makes the greatest sense if its the cpu you intend to run the puppy on.

iow, 32 or 64bit (i think there are others with support.)

if you select 32 for example, you can run the puppy that it builds on most 32 AND 64 bit machines. if you select 64, you can only run it on 64 bit machines (including 64 bit qemu.) but if youre going to run it "optimized" on your computer-- then yes, the cpu of your computer.
Practical example:
Let's say that I am trying to build a new Xenial "Pooch" 32-bit
-- from Slim-6, a Puppy of the Slacko breed, 32-bit.
-- However, the computer itself is a 64-bit dual core.

So... what is my real host architecture?
if xenial is 32 bit then possibly youll want to select 32 bit from woof.

otoh, you may get better results for your computer if you select 64.

i have a devuan setup with a mix of 64 and 32 bit binaries, and a 64bit kernel. thats probably what you would get (a 64 bit kernel) if you ran woof with xenial and selected 64 as the host architecture.

its more than 32/64 obviously-- when i say 32 i mean intel/amd and by 64 i mean amd. (64 bit intel means amd64 these days, intel abandoned its own 64 bit arch as it was a flop.) ive run gnewsense on a mipsel (im told this is short for mips: endian little) though i wouldnt expect puppy to support that.

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#3 Post by musher0 »

Please give me an answer I can use? Please, pretty please? I'm just as confused.

I don't want a sermon, I don't want an explanation, I don't want an interpretation.
I want the straight goods.

Please tell me what answer I should type in below as an answer
keeping in mind the technical info that I have provided above.

When I am building a 32-bit Xenial Pup on a 32-bit Slim-slacko-6 running on an old
64-bit double core, what is my host architecture exactly?

Many thanks in advance.
Attachments
The-Actual-Question_2016-08-06.JPG
This is the actual first question asked by the woof process.
(50.05 KiB) Downloaded 205 times
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

learnhow2code

#4 Post by learnhow2code »

musher0 wrote:When I am building a 32-bit Xenial Pup on a 32-bit Slim-slacko-6 running on an old
64-bit double core, what is my host architecture exactly?
x86.

User avatar
greengeek
Posts: 5789
Joined: Tue 20 Jul 2010, 09:34
Location: Republic of Novo Zelande

#5 Post by greengeek »

x86 (choice number 2).

Oh, the internet must be echoing. I didnt see learn2codes response initially. Oh well. Definitely x86 just in case you didnt hear it the first time :-)

echo
echo
echo
echo
echo
.
Last edited by greengeek on Sun 07 Aug 2016, 04:42, edited 1 time in total.

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#6 Post by musher0 »

Many thanks. (Phew.) :)
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

amigo
Posts: 2629
Joined: Mon 02 Apr 2007, 06:52

#7 Post by amigo »

The full definition is like this:

'build' is the architecture of the machine on which the compiling is done.

'host' is the architecture on which the binary will be run.

'target' is only used when compiling the compiler and linker(binutils) and is the architecture of binaries which will be produced by the program.

Lets say I am running on old mac. I want to produce a compiler which will run on my x86 machine, but produce binary output for an ARM tablet. In this case:
build = PPC
host = X86
target = armeabi

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#8 Post by musher0 »

Hello all.

If I understand you correctly, all you people are saying that the hardware has nothing
to do with the "host architecture"?

BFN.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

User avatar
Burn_IT
Posts: 3650
Joined: Sat 12 Aug 2006, 19:25
Location: Tamworth UK

#9 Post by Burn_IT »

In this context where it is assumed that you are building a disk to run on other machines, the "host" is the machine you are currently using to build the disk.

It needs to know because some of the options and included software could be different and need to be searched for as it may be a different version to that immediately available.

The "target" is the machine(s) on which you intend to run the disk.
"Just think of it as leaving early to avoid the rush" - T Pratchett

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#10 Post by musher0 »

Burn_IT wrote:In this context where it is assumed that you are building a disk to run on other machines, the "host" is the machine you are currently using to build the disk.

It needs to know because some of the options and included software could be different and need to be searched for as it may be a different version to that immediately available.

The "target" is the machine(s) on which you intend to run the disk.
Hello Burn_IT.

Thanks for your input.

I was confused because the distinction between the distro or OS and the hardware
was not clear in my mind.

The hardware has to be taken into consideration, but no distro is built from the "bare
metal". It's now clear to me that a new distro is built from an existing distro.

BFN.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

User avatar
greengeek
Posts: 5789
Joined: Tue 20 Jul 2010, 09:34
Location: Republic of Novo Zelande

#11 Post by greengeek »

Ignore my previous answer because I am now totally confused. The woof dialog terminal screenshot you posted suggests that you should choose host=x86_64 because you are running woof on a 64 bit cpu but should choose target=x86 because you intend to run the resulting pup on a 32bit cpu.

Maybe the usage of these terms within the woof dialog is contrary to the normal usage of these terms in the wider industry.

Perhaps the writer of that dialog could offer some clarity.

**Except of course - you are running 32bit code on that 64bit cpu so maybe stick with x86? I dunno.Good luck.
:oops:

learnhow2code

#12 Post by learnhow2code »

greengeek wrote:Maybe the usage of these terms within the woof dialog is contrary to the normal usage of these terms in the wider industry.

Perhaps the writer of that dialog could offer some clarity.
that would be nice. however i think "host" is the key "industry" word here.

i terms of a vm, the physical machine hosts the vm, and the vm hosts the client os.

so if youre running a 32 bit os on a 32 bit vm on a 64 bit machine:

* the "host" of the vm is 64 bit physical machine and
* the host of the 32bit os is the 32 bit vm

in mushers case the 64-bit machine "hosts" the scripts (now we are stretching the term, though the analogy is intact) and the scripts create a puppy for the arch that will "host" the puppy.

or: host arch is the arch of the machine that will run puppy... not the machine that runs the scripts.

i think this is usually called the "target architecture" but as amigo explained:
'target' is only used when compiling the compiler and linker(binutils) and is the architecture of binaries which will be produced by the program.
he also said:
'build' is the architecture of the machine on which the compiling is done.
in this case mushers 64bit machine, and:
'host' is the architecture on which the binary will be run.
which is what i was saying.

theres probably a reason why "host" and target" arent put together as a single question. if they were, "target" would at least be the better term to use here.

i use a 64-bit machine "hosting" a 32 bit os to remaster a 32 bit .iso, but i could just as easily use:

* a 32 bit machine
* hosting a 64 bit vm (with the vm software compiled for a 32 bit target, or the vm wont run)
* with the vm running a 64 bit os
* to remaster a 32 bit .iso that will run on a 32 bit system

think of "host" as parent and "client" as child. the child of one thing can be the parent of something else.

just to be clear: a 32 bit system cannot (natively) run 64 bit anything... but a 32 bit system definitely CAN run:

* a script to remaster a 64 bit os
* an emulator capable of running a 64 bit os, so long as the emulator is compiled for a 32 bit target (you can run qemu-system-x86_64 on a 32 bit machine)
* a compiler used to "cross-compile" a program for a 64-bit target arch

on top of this, most 64 bit physical machines can run a 32 bit os, or a 64 bit os that can run a mix of 64 and 32 bit applications.

Code: Select all

├── 32bit-machine
│   ├── 32bit-os
│   │   ├── to-cross-compile-for-64bit-os
│   │   │   └── YES!
│   │   └── to-remaster-64bit-iso
│   │       └── YES!
│   ├── 64bit-os
│   │   └── -no-
│   └── 64bit-vm
│       └── 64bit-os
│           ├── to-remaster-32bit-iso
│           │   └── YES!
│           └── YES!
└── 64bit-machine
    └── 32bit-os (usually)
        └── to-remaster-32bit-iso
            └── YES!
but youd probably like a simple rule, and thats fine-- heres one:

"most things are possible, and some require emulation."
Last edited by learnhow2code on Sun 07 Aug 2016, 21:17, edited 1 time in total.

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#13 Post by musher0 »

greengeek wrote:Ignore my previous answer because I am now totally confused. The woof dialog terminal screenshot you posted suggests that you should choose host=x86_64 because you are running woof on a 64 bit cpu but should choose target=x86 because you intend to run the resulting pup on a 32bit cpu.

Maybe the usage of these terms within the woof dialog is contrary to the normal usage of these terms in the wider industry.

Perhaps the writer of that dialog could offer some clarity.

**Except of course - you are running 32bit code on that 64bit cpu so maybe stick with x86? I dunno.Good luck.
:oops:
Exactly! Your initial answer was the right one! Your instinct served you well!

No need to apologize.

If your starting distro is a 32-bit and your target distro is a 32-bit, then you hit the number
corrresponding to x86 twice. It's the number of bits in the distro "layers" that you need to
inform the woof-CE of.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

User avatar
01micko
Posts: 8741
Joined: Sat 11 Oct 2008, 13:39
Location: qld
Contact:

#14 Post by 01micko »

I just removed that 'hostarch' question in ./merge2out in the 'rationalise' branch. Really it should never have been asked in the first place!

See commit: https://github.com/puppylinux-woof-CE/w ... df60b6acab
Puppy Linux Blog - contact me for access

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#15 Post by musher0 »

Thanks, Mick!
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

Post Reply