pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Building pkgsrc on Interix 6.1 x64



On Sun, 17 May 2009 21:21:21 -0700
"Chris Hacking" <chacking%cs.washington.edu@localhost> wrote:

> Greetings,
> 
> Interix 3.5 is listed as a supported pkgsrc platform, but the website claims
> that nobody has tested pkgsrc on more recent versions of Interix. Since I
> have found Interix and pkgsrc very helpful in the past, I wanted to try
> building it on Interix 6.1 (the newest version, currently in release
> candidate stage). I don't know if anybody else has attempted this yet. I
> haven't succeeded yet, but have made some progress and was hoping somebody
> else had suggestions for getting further.
> 
> BACKGROUND:
> Interix is a Unix-like operating environment that runs on the Windows NT
> kernel, somewhat like Cygwin but more tightly integrated with the system. It
> executes in a POSIX-compliant NT subsystem, which on recent versions of
> Windows is called Subsystem for Unix Applications (SUA). Interix includes a
> gcc3-based build toolchain and a minimal set of binary utilities, but lacks
> many "everyday" programs such as wget, ssh, subversion, or bash. However,
> most programs build correctly from source and run on Interix.
> 
> Interix 3.5 (which run on Windows XP) to 6.1 (runs on Windows 7 and Server
> 2008 R2) includes many fixes and enhancements, but is generally
> backward-compatible. However, there are a few prominent changes that affect
> compilation, the most important of which is the support for 64-bit
> applications (on a 64-bit version of NT). While 32-bit applications and
> libraries are still supported, it is occasionally necessary to use an
> architecture-specific binary.
> 
> BUILD SYSTEM:
> Windows 7 RC (build 7100) x64, NT 6.1.
> Interix 6.1 x64 (actually, the userspace tools are those used for 6.0; the
> 6.1 update isn't available yet. /bin/uname -r reports 6.1 however).
> Clean install with correct options (enable setuid, enable case-sensitivity,
> run as Administrator, GNU Utilities and SDK installed).
> 
> SUMMARY:
> Bootstrap starts successfully.
> Outdated build.config scripts don't recognize processor type string
> "genuineintel" causing configure in libnbcompat to fail.
> Binary version of /bin/ar for x64 does not come with Interix; use 32-bit
> version at /opt/gcc.3.3/bin/ar (location is in PATH, but shadowed by
> non-working /bin/ar).
> 
> QUESTIONS:
> Has anybody else attempted anything like this?
> Is there a way to pass a --build parameter to configure, or globally select
> a config.guess file to use?
> 
> DETAILS:
> Unpacking pkgsrc (2009 Q1) and executing bootstrap works. However, the
> version of config.guess included in libnbcompat (and almost certainly other
> packages) doesn't correctly recognize my processor (more correctly, doesn't
> recognize the output of my uname -m), which is "genuineintel" (Centrino 2
> family Core 2 Duo, same as "EM64T"). This value is recognized in the newest
> versions of config.guess (since September last year, I think), available
> from
> http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
> ;hb=HEAD. Note that this is not the repository mentioned in the outdated
> versions of config.guess, which is a cvs repository located on the same
> server but which hasn't been updated in over a year.
> 
> Each package appears to have its own copy of config.guess, which makes
> replacing all them inconvenient. As a work-around, one can bypass
> config.guess by passing configure scripts the parameter --build=<build
> type>. For Interix 6.1, the correct value is 
> x86_64-unknown-interix6.1
> which appears to be an acceptable build type. However, I can't find any way
> to make pkgsrc pass this parameter to each package's configure script. I
> tried editing the bootstrap script to add this option to
> $configure_quiet_flags (as that variable is passed to each call of
> configure) which allowed the bootstrap version of libnbcompat to compile,
> but building actual packages still fails during configuration. The relevant
> output is attached in file pkgsrc_error.txt. If there is a better way to
> ensure that this parameter gets passed to each package's configure script
> (if it uses such) or to instruct pkgsrc to use a specific version of
> config.guess, this would be great.
> 
> Additionally, building archives will fail on 64-bit Interix without some
> additional build software installed (/bin/ar is in fact a shell script which
> calls these other programs). The manpage says that there is a 32-bit binary
> version of ar also included at /opt/gcc.3.3/bin/ar, which appears to work. I
> moved the script version to /bin/ar.sh and symlinked /bin/ar to
> /opt/gcc.3.3/bin/ar, which allows bootstrap to work once the build type
> issue was worked around.
> 
> 
> Wow, sorry, that was much longer than I'd intended. Does anybody have any
> suggestions, or know anything more about this? My knowledge of the inner
> working of pkgsrc is limited, but nothing I've seen so far suggests that
> this can't be made to work. Actual 64-bit support isn't even needed; I'm not
> planning on running Apache or something and needing  16GB of RAM, but it
> would be very nice to get the tools I'm used to using every day working.
> 
> Thanks,
> Chris Hacking
> 
> 
> 
> 

I have tried too bootstrap it on i386, make dumps core during test. :)

-- 
Adam Hoka <adam.hoka%gmail.com@localhost>


Home | Main Index | Thread Index | Old Index