Hi All,
No, this isn't an April-fools joke a few days old... this is serious. I saw the site on gentooexperimental.org, and thought it would make a very nice alternative to Cygwin. Apart from being quite fast in comparison, it also integrates well with the Windows OS... and it's a well-integrated Unix shell like this, that IMHO, makes Windows almost bearable.

Progress:
I've already begun hacking Portage, etc to make it work in this foreign environment... I'll detail here what I've done to get things working to this point.

# Build-time functionality
# ========================
#
# The USE variable is used to enable optional build-time functionality. For
# example, quite a few packages have optional X, gtk or GNOME functionality
# that can only be enabled or disabled at compile-time. Gentoo Linux has a
# very extensive set of USE variables described in our USE variable HOWTO at
# http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1
#
# The available list of use flags with descriptions is in your portage tree.
# Use 'less' to view them: --> less /usr/portage/profiles/use.desc <--
#
# 'ufed' is an ncurses/dialog interface available in portage to make handling
# useflags for you. 'emerge app-portage/ufed'
#
# Example:
#USE="X gtk gnome -alsa"

# Host Setting
# ============
#
# DO NOT CHANGE THIS SETTING UNLESS YOU ARE USING STAGE1!
# Change this line as appropriate (i686, i586, i486 or i386).
# All modern systems (even Athlons) should use "i686-pc-linux-gnu".
# All K6's are i586.
CHOST="i586-pc-interix3"

# If you set a CFLAGS above, then this line will set your default C++ flags to
# the same settings.
CXXFLAGS="${CFLAGS}"

# Advanced Masking
# ================
#
# Gentoo is using a new masking system to allow for easier stability testing
# on packages. KEYWORDS are used in ebuilds to mask and unmask packages based
# on the platform they are set for. A special form has been added that
# indicates packages and revisions that are expected to work, but have not yet
# been approved for the stable set. '~arch' is a superset of 'arch' which
# includes the unstable, in testing, packages. Users of the 'x86' architecture
# would add '~x86' to ACCEPT_KEYWORDS to enable unstable/testing packages.
# '~ppc', '~sparc' are the unstable KEYWORDS for their respective platforms.
#
# Please note that this is not for development, alpha, beta, nor cvs release
# packages. "Broken" packages will not be added to testing and should not be
# requested to be added. Alternative routes are available to developers
# for experimental packages, and it is at their discretion to use them.
#
# DO NOT PUT ANYTHING BUT YOUR SPECIFIC ~ARCHITECTURE IN THE LIST.
# IF YOU ARE UNSURE OF YOUR ARCH, OR THE IMPLICATIONS, DO NOT MODIFY THIS.
#
ARCH="nt"
ACCEPT_KEYWORDS="nt ~nt"

# Portage Directories
# ===================
#
# Each of these settings controls an aspect of portage's storage and file
# system usage. If you change any of these, be sure it is available when
# you try to use portage. *** DO NOT INCLUDE A TRAILING "/" ***
#
# PORTAGE_TMPDIR is the location portage will use for compilations and
# temporary storage of data. This can get VERY large depending upon
# the application being installed.
#PORTAGE_TMPDIR=/var/tmp
#
# PORTDIR is the location of the portage tree. This is the repository
# for all profile information as well as all ebuilds. This directory
# itself can reach 200M. If you change this, you must update your
# /etc/make.profile symlink accordingly.
#PORTDIR=/usr/portage
#
# DISTDIR is where all of the source code tarballs will be placed for
# emerges. The source code is maintained here unless you delete
# it. The entire repository of tarballs for gentoo is 9G. This is
# considerably more than any user will ever download. 2-3G is
# a large DISTDIR.
#DISTDIR=${PORTDIR}/distfiles
#
# PKGDIR is the location of binary packages that you can have created
# with '--buildpkg' or '-b' while emerging a package. This can get
# upto several hundred megs, or even a few gigs.
#PKGDIR=${PORTDIR}/packages
#
# PORT_LOGDIR is the location where portage will store all the logs it
# creates from each individual merge. They are stored as NNNN-$PF.log
# in the directory specified. This is disabled until you enable it by
# providing a directory. Permissions will be modified as needed IF the
# directory exists, otherwise logging will be disabled. NNNN is the
# increment at the time the log is created. Logs are thus sequential.
#PORT_LOGDIR=/var/log/portage
#
# PORTDIR_OVERLAY is a directory where local ebuilds may be stored without
# concern that they will be deleted by rsync updates. Default is not
# defined.
#PORTDIR_OVERLAY=/usr/local/portage

# Fetching files
# ==============
#
# If you need to set a proxy for wget or lukemftp, add the appropriate "export
# ftp_proxy=<proxy>" and "export http_proxy=<proxy>" lines to /etc/profile if
# all users on your system should use them.
#
# Portage uses wget by default. Here are some settings for some alternate
# downloaders -- note that you need to merge these programs first before they
# will be available.
#
# Default fetch command (5 tries, passive ftp for firewall compatibility)
#FETCHCOMMAND="/usr/bin/wget -t 5 --passive-ftp \${URI} -P \${DISTDIR}"
#RESUMECOMMAND="/usr/bin/wget -c -t 5 --passive-ftp \${URI} -P \${DISTDIR}"
#
# Using wget, ratelimiting downloads
#FETCHCOMMAND="/usr/bin/wget -t 5 --passive-ftp --limit-rate=200k \${URI} -P \${
DISTDIR}"
#RESUMECOMMAND="/usr/bin/wget -c -t 5 --passive-ftp --limit-rate=200k \${URI} -P
\${DISTDIR}"
#
# Lukemftp (BSD ftp):
#FETCHCOMMAND="/usr/bin/lukemftp -s -a -o \${DISTDIR}/\${FILE} \${URI}"
#RESUMECOMMAND="/usr/bin/lukemftp -s -a -R -o \${DISTDIR}/\${FILE} \${URI}"
#
# Portage uses GENTOO_MIRRORS to specify mirrors to use for source retrieval.
# The list is a space separated list which is read left to right. If you use
# another mirror we highly recommend leaving the default mirror at the end of
# the list so that portage will fall back to it if the files cannot be found
# on your specified mirror. We _HIGHLY_ recommend that you change this setting
# to a nearby mirror by merging and using the 'mirrorselect' tool.
#GENTOO_MIRRORS="<your_mirror_here> http://distfiles.gentoo.org http://www.ibibl
io.org/pub/Linux/distributions/gentoo"
#
# Portage uses PORTAGE_BINHOST to specify mirrors for prebuilt-binary packages.
# The list is a single entry specifying the full address of the directory
# serving the tbz2's for your system. Running emerge with either '--getbinpkg'
# or '--getbinpkgonly' will cause portage to retrieve the metadata from all
# packages in the directory specified, and use that data to determine what will
# be downloaded and merged. '-g' or '-gK' are the recommend parameters. Please
# consult the man pages and 'emerge --help' for more information. For FTP, the
# default connection is passive -- If you require an active connection, affix
# an asterisk (*) to the end of the host:port string before the path.
#PORTAGE_BINHOST="http://grp.mirror.site/gentoo/grp/1.4/i686/athlon-xp/"
# This ftp connection is passive ftp.
#PORTAGE_BINHOST="ftp://login:pass@grp.mirror.site/pub/grp/i686/athlon-xp/"
# This ftp connection is active ftp.
#PORTAGE_BINHOST="ftp://login:pass@grp.mirror.site:21*/pub/grp/i686/athlon-xp/"

# Synchronizing Portage
# =====================
#
# Each of these settings affects how Gentoo synchronizes your Portage tree.
# Synchronization is handled by rsync and these settings allow some control
# over how it is done.
#
#
# SYNC is the server used by rsync to retrieve a localized rsync mirror
# rotation. This allows you to select servers that are geographically
# close to you, yet still distribute the load over a number of servers.
# Please do not single out specific rsync mirrors. Doing so places undue
# stress on particular mirrors. Instead you may use one of the following
# continent specific rotations:
#
# Default: "rsync://rsync.gentoo.org/gentoo-portage"
# North America: "rsync://rsync.namerica.gentoo.org/gentoo-portage"
# South America: "rsync://rsync.samerica.gentoo.org/gentoo-portage"
# Europe: "rsync://rsync.europe.gentoo.org/gentoo-portage"
# Asia: "rsync://rsync.asia.gentoo.org/gentoo-portage"
# Australia: "rsync://rsync.au.gentoo.org/gentoo-portage"
#SYNC="rsync://rsync.gentoo.org/gentoo-portage"
#
# RSYNC_RETRIES sets the number of times portage will attempt to retrieve
# a current portage tree before it exits with an error. This allows
# for a more successful retrieval without user intervention most times.
#RSYNC_RETRIES="3"
#
# RSYNC_TIMEOUT sets the length of time rsync will wait before it times out
# on a connection. Most users will benefit from this setting as it will
# reduce the amount of 'dead air' they experience when they run across
# the occasional, unreachable mirror. Dialup users might want to set this
# value up around the 300 second mark.
#RSYNC_TIMEOUT=180

# Advanced Features
# =================
#
# MAKEOPTS provides extra options that may be passed to 'make' when a
# program is compiled. Presently the only use is for specifying
# the number of parallel makes (-j) to perform. The suggested number
# for parallel makes is CPUs+1.
#MAKEOPTS="-j2"
#
# PORTAGE_NICENESS provides a default increment to emerge's niceness level.
# Note: This is an increment. Running emerge in a niced environment will
# reduce it further. Default is unset.
#PORTAGE_NICENESS=3
#
# AUTOCLEAN enables portage to automatically clean out older or overlapping
# packages from the system after every successful merge. This is the
# same as running 'emerge -c' after every merge. Set with: "yes" or "no".
# This does not affect the unpacked source. See 'noclean' below.
#AUTOCLEAN="yes"
#
# PORTAGE_TMPFS is a location where portage may create temporary files.
# If specified, portage will use this directory whenever possible
# for all rapid operations such as lockfiles and transient data.
# It is _highly_ recommended that this be a tmpfs or ramdisk. Do not
# set this to anything that does not give a significant performance
# enhancement and proper FS compliance for locks and read/write.
# /dev/shm is a glibc mandated tmpfs, and should be a reasonable
# setting for all linux kernel+glibc based systems.
#PORTAGE_TMPFS="/dev/shm"
#
# FEATURES are settings that affect the functionality of portage. Most of
# these settings are for developer use, but some are available to non-
# developers as well.
#
# 'autoaddcvs' causes portage to automatically try to add files to cvs
# that will have to be added later. Done at generation times
# and only has an effect when 'cvs' is also set.
# 'buildpkg' causes binary packages to be created of all packages that
# are being merged.
# 'ccache' enables ccache support via CC.
# 'collision-protect'
# prevents packages from overwriting files that are owned by
# another package or by no package at all.
# 'cvs' causes portage to enable all cvs features (commits, adds),
# and to apply all USE flags in SRC_URI for digests -- for
# developers only.
# 'digest' causes digests to be generated for all packages being merged.
# 'distcc' enables distcc support via CC.
# 'distlocks' enables distfiles locking using fcntl or hardlinks. This
# is enabled by default. Tools exist to help clean the locks
# after crashes: /usr/lib/portage/bin/clean_locks.
# 'fixpackages' allows portage to fix binary packages that are stored in
# PKGDIR. This can consume a lot of time. 'fixpackages' is
# also a script that can be run at any given time to force
# the same actions.
# 'gpg' enables basic verification of Manifest files using gpg.
# This features is UNDER DEVELOPMENT and reacts to features
# of strict and severe. Heavy use of gpg sigs is coming.
# 'keeptemp' prevents the clean phase from deleting the temp files ($T)
# from a merge.
# 'keepwork' prevents the clean phase from deleting the WORKDIR.
# 'maketest' causes ebuilds to perform testing phases if they are capable
# of it. Some packages support this automaticaly via makefiles.
# 'noauto' causes ebuild to perform only the action requested and
# not any other required actions like clean or unpack -- for
# debugging purposes only.
# 'noclean' prevents portage from removing the source and temporary files
# after a merge -- for debugging purposes only.
# 'nostrip' prevents the stripping of binaries.
# 'notitles' disables xterm titlebar updates (which contain status info).
# 'sandbox' enables sandboxing when running emerge and ebuild.
# 'strict' causes portage to react strongly to conditions that are
# potentially dangerous, like missing/incorrect Manifest files.
# 'userpriv' allows portage to drop root privileges while it is compiling,
# as a security measure. As a side effect this can remove
# sandbox access violations for users.
# 'usersandbox' enables sandboxing while portage is running under userpriv.
#FEATURES="sandbox buildpkg ccache distcc userpriv usersandbox notitles noclean
noauto cvs keeptemp keepwork autoaddcvs"
#FEATURES="sandbox ccache distcc distlocks autoaddcvs"
#
# CCACHE_SIZE sets the space use limitations for ccache. The default size is
# 2G, and will be set if not defined otherwise and ccache is in features.
# Portage will set the default ccache dir if it is not present in the
# user's environment, for userpriv it sets: ${PORTAGE_TMPDIR}/ccache
# (/var/tmp/ccache), and for regular use the default is /root/.ccache.
# Sizes are specified with 'G' 'M' or 'K'.
# '2G' for 2 gigabytes, '2048M' for 2048 megabytes (same as 2G).
#CCACHE_SIZE="512M"
#
# DISTCC_DIR sets the temporary space used by distcc.
#DISTCC_DIR="${PORTAGE_TMPDIR}/.distcc"
#
# RSYNC_EXCLUDEFROM is a file that portage will pass to rsync when it updates
# the portage tree. Specific chunks of the tree may be excluded from
# consideration. This may cause dependency failures if you are not careful.
# The file format is one pattern per line, blanks and ';' or '#' lines are
# comments. See 'man rsync' for more details on the exclude-from format.
#RSYNC_EXCLUDEFROM=/etc/portage/rsync_excludes

cat > /etc/make.conf is your friend here.

----

Doing the above... you should now be able to type emerge info and get something like this:

Code:

(10:14) Administrator@wander /$ emerge info
portage initialization: your system doesn't have a 'wheel' group.
Please fix this as it is a normal system requirement. 'wheel' is GID 10
'emerge baselayout' and an 'etc-update' should remedy this problem.

portage: 'portage' user or group missing. Please update baselayout
and merge portage user(250) and group(250) into your passwd
and group files. Non-root compilation is disabled until then.
Also note that non-root/wheel users will need to be added to
the portage group to do portage commands.

For the defaults, line 1 goes into passwd, and 2 into group.
portage:x:250:250:portage:/var/tmp/portage:/bin/false
portage::250:portage

At the moment, emerge metadata gives me more errors than you can poke a python debugger at. An exerpt:

Code:

(10:22) Administrator@wander /$ emerge metadata
portage initialization: your system doesn't have a 'wheel' group.
Please fix this as it is a normal system requirement. 'wheel' is GID 10
'emerge baselayout' and an 'etc-update' should remedy this problem.

portage: 'portage' user or group missing. Please update baselayout
and merge portage user(250) and group(250) into your passwd
and group files. Non-root compilation is disabled until then.
Also note that non-root/wheel users will need to be added to
the portage group to do portage commands.

For the defaults, line 1 goes into passwd, and 2 into group.
portage:x:250:250:portage:/var/tmp/portage:/bin/false
portage::250:portage

This is cool (if its not a wind up) not that you are ever going to be able to use portage on windows anyway (unless you can sync to windowsupdate.microsoft.com) or gentoo starts using *.exe files, lol_________________"Sex: breakfast of champions" - James Hunt

I personally don't see the point in creating Gentoo/Win32, as this would be damn near impossible, as the Win32 subsystem provides absolutely 0 POSIX compliance. Yes, there's Gentoo/Cygwin, that's the closest to Gentoo/Win32 you're likely to get.

The aim of my hacking session this morning was to start looking into a Gentoo userland on top of SFU. If you've ever used SFU, you'll probably notice it's really feature bland in terms of apps. Yes, there's X, there's an ancient version of binutils (2.13.x), gcc-3.3, no python, ActiveState Perl, BSD coreutils...etc...

For a Linux user, it's really bland. How nice would it be to simply type 'emerge FOO' and your package is installed? I've shown above that it's technically possible -- it's just now a case of working around with the bugs that stop our progress.

I've got this far, I'm not about to stop now. _________________Stuart Longland (a.k.a Redhatter, VK4MSL)
I haven't lost my mind - it's backed up on a tape somewhere...

I did an emerge of gnome-2.10 using this under cygwin. Many packages emerge OOB while many other needed ebuild changes for compile and build problems(total emerged = 199, overlay = 49, injected=10). I have a working gnome desktop now. Many programs run flawlessly, many other don't.

Ahh okay, I'll have a look at that... However, it looks like more of a file locking issue than a file naming issue. It's winging about files which are perfectly valid (no colons in filename, etc)... so, no idea there.

As it is, I've been flat out with university... so haven't had the time to look further. Something for the holidays if nothing else... _________________Stuart Longland (a.k.a Redhatter, VK4MSL)
I haven't lost my mind - it's backed up on a tape somewhere...

CVS head of portage is completely autotooled, as is current ~arch of sandbox.
Cache failures are due to lack of os.path.sep usage, which... yeah. is epidemic._________________I don't want to be buried in a pet cemetery. ~Ramones

I haven't had the time to look into it further ... uni has been quite busy lately. Having said that, once my exams are over, I should be able to leap right into it.

Yarrick: Well... this is the plan... is to get Portage working so we can have some decent packages.

ferringb: Nice... where abouts can I get this latest release of Portage? Is it available as a snapshot somewhere? Or do I have to wait for CVS access?

Ultimately, getting bleeding edge portage working would have some nice benefits... but we'll see... any changes though, for an official release, would have to be backported to latest stable Portage though... so I'm not sure._________________Stuart Longland (a.k.a Redhatter, VK4MSL)
I haven't lost my mind - it's backed up on a tape somewhere...

Bah, I signed up for the Interop site, and after paying it didn't forward me to registration. Sent them an email but due to the long weekend, looks like I'm screwed until Tuesday. Is there anywhere else where similar packages are available?

and unfortunately... Python, in its default config, doesn't compile on SFU.

Mind you... Python is under the GPL... so I'm almost tempted to go bugging Interop Systems for the source to their Python binary. They'd be obligated to provide the said patches wouldn't they?_________________Stuart Longland (a.k.a Redhatter, VK4MSL)
I haven't lost my mind - it's backed up on a tape somewhere...

In theory I think so, but as you know theory doesn't always mesh with reality, and I doubt you're willing to pursue it overly far Any chance you could send me the python? I do have an account with them (20 dollars really is no big deal), and I'd really like to mess around with it.

Edit - as a side note, Portage really spoils you. I had forgotten how much of a PITA it was to do all of this manually

BASH 3.0 works... but you need to pass --prefix=$INTERIX_ROOT to ./configure. Otherwise you get errors regarding locating the current working directory.

I'm just trying the same trick with Python to see if that works.

Platapie: I'll see how this build goes... I can put the other up... but I'm on a slow link. I'd much prefer to get it built... then tell people how to do it, rather than do it all for them, and get my bandwidth absolutely clobbered.

(Of course... if I get space on dev.gentoo.org -- this will not be so much of an issue... but until then... )_________________Stuart Longland (a.k.a Redhatter, VK4MSL)
I haven't lost my mind - it's backed up on a tape somewhere...

you will have better luck with cygwin than with SFU. only pro for SFU is that it is a bit faster. but after few hundred MB of downloads and installs and spending a day with it, I realised its POSIX support is at best half baked and many simple programs won't build without modifications. so, automated portage builds may b slightly far fetched. on the other hand, with cygwin the portage works. although there are plenty of packages which don't build with cygwin either.

As yet, I still haven't figured out how to get python to compile... I've tried v2.4.1 as well as v2.3.4 and v2.3.5... the binary above is v2.3.3... and unfortunately, I have not a clue how it was produced.... but we'll crack that eventually.

For the moment though... university end-semester exams are jostling for my attention. _________________Stuart Longland (a.k.a Redhatter, VK4MSL)
I haven't lost my mind - it's backed up on a tape somewhere...