Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 56845 - repoman can't recognize repository type on OS X
Summary: repoman can't recognize repository type on OS X
Status: RESOLVED FIXED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Tools (show other bugs)
Hardware: All All
: High normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-07-12 17:54 UTC by Pieter Van den Abeele (RETIRED)
Modified: 2004-08-01 05:06 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Pieter Van den Abeele (RETIRED) gentoo-dev 2004-07-12 17:54:51 UTC
sh-2.05b# repoman full
We're not in PORTDIR... setting to: /Volumes/my-cvs/gentoo-x86
repoman: Couldn't recognize repository type.  Supported repositories:
['gentoo-x86']
sh-2.05b# 

/Volumes/my-cvs/gentoo-x86 is bind mounted to /usr/portage. We're in the /usr/portage dir. 

So why /Volumes/my-cvs/gentoo-x86? 

By default Apple Mac OS X has a case insensitive, case preserving filesystem (HFS+). Our cvs repository fails to checkout on such a filesystem; In gentoo-x86/dev-util there's both a ``CVS'' and a ``cvs'' directory, obviously confusing cvs to the point it fails.

The solution is to create an image with an UFS filesystem (case sensitive), mount it, checkout gentoo cvs on it and bind mount that cvs in the case insensitive filesystem. This works, but apparently confuses repoman. I do have an ugly patch, that makes repoman work, but it for some reason it makes him complain about no errors. I'll clean it up and attach here.
Comment 1 Pieter Van den Abeele (RETIRED) gentoo-dev 2004-07-12 18:11:32 UTC
if isCvs:
        reporoot=None
        for x in REPOROOTS:
                print "x=",x
                print "myrepo=",myreporoot
                print "myrepo=",myreporoot[0:len(x)]
                if myreporoot[0:len(x)]==x:
                        reporoot=myreporoot
        if not reporoot:
                err("Couldn't recognize repository type.  Supported repositories:\n"+repr(REPOROOTS))


gives when executed: 

x= gentoo-x86
myrepo= /var/cvsroot/gentoo-x86/media-libs/libpng
myrepo= /var/cvsro
repoman: Couldn't recognize repository type.  Supported repositories:
['gentoo-x86']

something not working as expected there
Comment 2 Karl Trygve Kalleberg (RETIRED) gentoo-dev 2004-07-16 18:00:54 UTC
Actually, repoman is handled by dev-portage.
Comment 3 Brian Harring (RETIRED) gentoo-dev 2004-07-16 22:49:26 UTC
what do you have defined for PORTDIR; 
alternatively, just dump portage.portdb.porttrees
Basically, emerge info :)
Comment 4 Mamoru KOMACHI (RETIRED) gentoo-dev 2004-07-19 05:10:45 UTC
What's not working here is media-libs/libpng/CVS/Repository contains 
/var/cvsroot/gentoo-x86/media-libs/libpng rather than gentoo-x86/media-libs/libpng
when you check out gentoo-x86 module from cvs.gentoo.org on Mac OS X.
(I have no idea why it happens)
I manually sedded Repository files and then the problem went away.
Comment 5 Nicholas Jones (RETIRED) gentoo-dev 2004-07-23 10:42:44 UTC
Pieter: That particular check is to ensure that you are not within the
portdir already. It matches based on the length of portdir to check the
path names against eachother.

The Repository file being incorrect is odd... and there isn't a whole lot
we can do about that other than adding in a large quantity of checks to
fetch all the cases where the real repo is embeded in the repo files/path.

If it's a recurring problem, reopen, and possibly look into why CVS behaves
differently on OS X as opposed to linux regarding naming schemes.

One guess:  -d/  ...   :/var/cvsroot/...
Comment 6 Nicholas Jones (RETIRED) gentoo-dev 2004-07-23 10:43:45 UTC
Needs to be reproduced as this is inconsistent behavior with
any other instance of CVS I have witnessed/used.
Comment 7 Pieter Van den Abeele (RETIRED) gentoo-dev 2004-07-23 12:25:06 UTC
iBookG4:~ pvdabeel$ emerge info
Password:
!!! Using `which gcc` to gcc locate version, this may break
!!! DISTCC, installing gcc-config and setting your current gcc
!!! profile will fix this
Portage 2.0.51_pre13 (default-macos-10.3, gcc-3.3, unavailable, 7.4.0 Power Macintosh powerpc)
=================================================================
System uname: 7.4.0 Power Macintosh powerpc
cat: /etc/gentoo-release: No such file or directory
distcc 2.0.1-zeroconf powerpc-apple-darwin7.0 (protocol 1) (default port 3632) [disabled]
Autoconf: sys-devel/autoconf-2.57
Automake: sys-devel/automake-1.6.3
Binutils: 
ACCEPT_KEYWORDS="macos"
AUTOCLEAN="yes"
CFLAGS="-O3 -pipe"
CHOST="powerpc-apple-darwin"
COMPILER="gcc3"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3/share/config /usr/share/config /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d"
CXXFLAGS="-O3 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="ccache cvs keepwork"
GENTOO_MIRRORS="http://gentoo.osuosl.org/"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY=""
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="macos X berkdb ldap mysql perl python ruby"

iBookG4:~ pvdabeel$ 

Mac OS X is installed on a case insensitive, case preserving filesystem. The gentoo-x86 cvs repository  requires a case sensitive filesystem because in dev-util there is a CVS and a cvs dir. Now this is how we solve that on macos: 

1. We create a case sensitive filesystem image, mount it at /Volumes/my-cvs/
2. Mac OS X cannot bind mount, so I use a symlink to link /Volumes/my-cvs/ to /usr/portage/

I am thinking the second step somehow breaks the repoman check. 
Comment 8 Pieter Van den Abeele (RETIRED) gentoo-dev 2004-08-01 05:06:42 UTC
Fixed in cvs.