From c3c3b5be3318b40a12b5e10973391a0767666c56 Mon Sep 17 00:00:00 2001 From: Kito Date: Fri, 27 Jan 2006 04:55:04 +0000 Subject: [PATCH] More python path cleansing...mmmm. Some user/group fixes from Stefaan. Add configure option for wheelgid. svn path=/main/branches/prefix/; revision=2590 --- bin/ebuild.sh | 4 ++-- configure.in | 2 +- pym/portage.py | 26 +++++++++++++------------- pym/portage_const.py | 4 ++-- pym/portage_const_autotool.py | 8 +++++--- pym/portage_data.py | 9 ++++++--- subst-install.vars.in.in | 3 ++- 7 files changed, 31 insertions(+), 25 deletions(-) diff --git a/bin/ebuild.sh b/bin/ebuild.sh index 8d78dc3ee..fed53fce3 100755 --- a/bin/ebuild.sh +++ b/bin/ebuild.sh @@ -1317,7 +1317,7 @@ dyn_install() { local file s local count=0 - find "${D}/" -user portage | while read file; do + find "${D}/" -user @portageuser@ | while read file; do count=$(( $count + 1 )) if [ -L "${file}" ]; then lchown ${PORTAGE_INST_UID} "${file}" @@ -1336,7 +1336,7 @@ dyn_install() { fi count=0 - find "${D}/" -group portage | while read file; do + find "${D}/" -group @portagegroup@ | while read file; do count=$(( $count + 1 )) if [ -L "${file}" ]; then lchgrp ${PORTAGE_INST_GID} "${file}" diff --git a/configure.in b/configure.in index 4e62a1f0e..d1c9222b9 100644 --- a/configure.in +++ b/configure.in @@ -195,7 +195,7 @@ esac], [rootuser=root]) AC_ARG_WITH(offset-prefix, -AC_HELP_STRING([--with-offset-prefix], [specific the offset prefix, defaults to /]), +AC_HELP_STRING([--with-offset-prefix], [specify the offset prefix, defaults to /]), [DOMAIN_PREFIX=$withval], [DOMAIN_PREFIX='/']) diff --git a/pym/portage.py b/pym/portage.py index f55f662fe..187090ef4 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -1032,7 +1032,7 @@ class config: del use_defs_lists try: - mygcfg_dlists = [getconfig(os.path.join(x, "make.globals")) for x in self.profiles+["/etc"]] + mygcfg_dlists = [getconfig(os.path.join(x, "make.globals")) for x in self.profiles+[portage_const.SYSCONFDIR]] self.mygcfg = stack_dicts(mygcfg_dlists, incrementals=portage_const.INCREMENTALS, ignore_none=1) if self.mygcfg == None: @@ -6545,42 +6545,42 @@ os.umask(0) if not os.path.exists(root+portage_const.PREFIX+"/tmp"): writemsg(">>> "+root+portage_const.PREFIX+"/tmp doesn't exist, creating it...\n") os.mkdir(root+portage_const.PREFIX+"/tmp",01777) -if not os.path.exists(root+portage_const.PREFIX+"var/tmp"): - writemsg(">>> "+root+portage_const.PREFIX+"var/tmp doesn't exist, creating it...\n") +if not os.path.exists(root+portage_const.PREFIX+"/var/tmp"): + writemsg(">>> "+root+portage_const.PREFIX+"/var/tmp doesn't exist, creating it...\n") try: - os.mkdir(root+portage_const.PREFIX+"var",0755) + os.mkdir(root+portage_const.PREFIX+"/var",0755) except (OSError,IOError): pass try: - os.mkdir(root+portage_const.PREFIX+"var/tmp",01777) + os.mkdir(root+portage_const.PREFIX+"/var/tmp",01777) except SystemExit, e: raise except: writemsg("portage: couldn't create "+root+portage_const.PREFIX+"/var/tmp; exiting.\n") sys.exit(1) -if not os.path.exists(root+portage_const.PREFIX+"var/lib/portage"): - writemsg(">>> "+root+portage_const.PREFIX+"var/lib doesn't exist, creating it...\n") +if not os.path.exists(root+portage_const.PREFIX+"/var/lib/portage"): + writemsg(">>> "+root+portage_const.PREFIX+"/var/lib doesn't exist, creating it...\n") try: - os.mkdir(root+portage_const.PREFIX+"var",0755) + os.mkdir(root+portage_const.PREFIX+"/var",0755) except (OSError,IOError): pass try: - os.mkdir(root+portage_const.PREFIX+"var/lib",0755) + os.mkdir(root+portage_const.PREFIX+"/var/lib",0755) except (OSError,IOError): pass try: - os.mkdir(root+portage_const.PREFIX+"var/lib/portage",0755) + os.mkdir(root+portage_const.PREFIX+"/var/lib/portage",0755) except SystemExit, e: raise except: - writemsg("portage: couldn't create "+root+portage_const.PREFIX+"var/lib/portage; exiting.\n") + writemsg("portage: couldn't create "+root+portage_const.PREFIX+"/var/lib/portage; exiting.\n") sys.exit(1) if not os.path.exists(root+portage_const.PORTAGE_BASE+""): writemsg(">>> "+root+portage_const.PORTAGE_BASE+" doesn't exist, creating it...\n") try: - os.mkdir(root+portage_const.PREFIX+"var",0755) + os.mkdir(root+portage_const.PREFIX+"/var",0755) except (OSError,IOError): pass try: @@ -6744,7 +6744,7 @@ mtimedbkeys=[ "version", "starttime", "resume", "ldpath" ] -mtimedbfile=root+portage_const.PREFIX+"var/cache/edb/mtimedb" +mtimedbfile=root+portage_const.CACHE_PATH+"/mtimedb" try: mypickle=cPickle.Unpickler(open(mtimedbfile)) mypickle.find_global=None diff --git a/pym/portage_const.py b/pym/portage_const.py index 29843f887..a3f2652f6 100644 --- a/pym/portage_const.py +++ b/pym/portage_const.py @@ -14,7 +14,7 @@ from portage_const_autotool import * # START OF CONSTANTS -- START OF CONSTANTS -- START OF CONSTANTS -- START OF # =========================================================================== -VDB_PATH = PREFIX+"var/db/pkg" +VDB_PATH = PREFIX+"/var/db/pkg" PRIVATE_PATH = PREFIX+"/var/lib/portage" CACHE_PATH = PREFIX+"/var/cache/edb" DEPCACHE_PATH = CACHE_PATH+"/dep" @@ -48,7 +48,7 @@ CONFIG_MEMORY_FILE = PRIVATE_PATH + "/config" INCREMENTALS=["USE","USE_EXPAND","USE_EXPAND_HIDDEN","FEATURES","ACCEPT_KEYWORDS","ACCEPT_LICENSE","CONFIG_PROTECT_MASK","CONFIG_PROTECT","PRELINK_PATH","PRELINK_PATH_MASK"] STICKIES=["KEYWORDS_ACCEPT","USE","CFLAGS","CXXFLAGS","MAKEOPTS","EXTRA_ECONF","EXTRA_EINSTALL","EXTRA_EMAKE"] EBUILD_PHASES = ["setup","unpack","compile","test","install","preinst","postinst","prerm","postrm"] -DEFAULT_PATH = ":".join(map(lambda x: os.path.join(PREFIX, x), ["/sbin", "/usr/sbin/", "/bin", "/usr/bin"])) +DEFAULT_PATH = ":".join(map(lambda x: os.path.normpath(os.path.join(PREFIX, x)), ["/sbin", "/usr/sbin", "/bin", "/usr/bin"])) EAPI = "prefix" diff --git a/pym/portage_const_autotool.py b/pym/portage_const_autotool.py index 170bf7dec..5a7a36186 100644 --- a/pym/portage_const_autotool.py +++ b/pym/portage_const_autotool.py @@ -7,9 +7,11 @@ __all__ = ["PREFIX", "SYSCONFDIR", "PORTAGE_BASE", "portageuser", "portagegroup", "rootuser", "wheelgid", "wheelgroup"] -PREFIX="@DOMAIN_PREFIX@/" -SYSCONFDIR="@sysconfdir@/" -PORTAGE_BASE="@PORTAGE_BASE@/" +from os import path + +PREFIX=path.normpath("@DOMAIN_PREFIX@") +SYSCONFDIR=path.normpath("@sysconfdir@") +PORTAGE_BASE=path.normpath("@PORTAGE_BASE@") portagegroup="@portagegroup@" portageuser="@portageuser@" rootuser="@rootuser@" diff --git a/pym/portage_data.py b/pym/portage_data.py index ebe3bfb51..f1d819750 100644 --- a/pym/portage_data.py +++ b/pym/portage_data.py @@ -23,6 +23,9 @@ elif ostype == "Darwin": elif ostype in ["FreeBSD","OpenBSD","NetBSD"]: userland="BSD" os.environ["XARGS"]="xargs" +elif ostype in ["BeOS","Haiku","HP-UX","SunOS"] + userland="GNU" + os.environ["XARGS"]="xargs" else: writemsg(red("Operating system")+" \""+ostype+"\" "+red("currently unsupported. Exiting.")+"\n") sys.exit(1) @@ -59,15 +62,15 @@ except KeyError: #Discover the uid and gid of the portage user/group try: - portage_uid=pwd.getpwnam("portage")[2] - portage_gid=grp.getgrnam("portage")[2] + portage_uid=pwd.getpwnam(portage_const.portageuser)[2] + portage_gid=grp.getgrnam(portage_const.portagegroup)[2] if (secpass==0): secpass=1 except KeyError: portage_uid=0 portage_gid=wheelgid writemsg("\n") - writemsg( red("portage: 'portage' user or group missing. Please update baselayout\n")) + writemsg( red("portage: "+portage_const.portageuser+" user or group missing. Please update baselayout\n")) writemsg( red(" and merge portage user(250) and group(250) into your passwd\n")) writemsg( red(" and group files. Non-root compilation is disabled until then.\n")) writemsg( " Also note that non-root/wheel users will need to be added to\n") diff --git a/subst-install.vars.in.in b/subst-install.vars.in.in index 4604c8f8f..c4fdda295 100644 --- a/subst-install.vars.in.in +++ b/subst-install.vars.in.in @@ -106,6 +106,7 @@ CPP=@CPP@ ALLOCA=@ALLOCA@ portageuser=@portageuser@ portagegroup=@portagegroup@ +wheelgid=@wheelgid@ wheelgroup=@wheelgroup@ rootuser=@rootuser@ DOMAIN_PREFIX=@DOMAIN_PREFIX@ @@ -129,4 +130,4 @@ abs_builddir=@abs_builddir@ top_builddir=@top_builddir@ abs_top_builddir=@abs_top_builddir@ INSTALL=@INSTALL@ -all_configurevars=' SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE LN_S EGREP XCU_ID RM MV SED BASH PYTHON PERL BASENAME DIRNAME DIALOG WGET INSTALL_INFO SANDBOX PRELINK RSYNC CVS GPG MD5SUM LOGGER FIND FILE READELF SETFILES FAKEROOT CPP ALLOCA portageuser portagegroup wheelgroup rootuser DOMAIN_PREFIX ARCH PORTAGE_BASE INSTALL_PYTHON_SOURCES_TRUE INSTALL_PYTHON_SOURCES_FALSE BUILD_TBZ2TOOL_TRUE BUILD_TBZ2TOOL_FALSE BUILD_MISSINGOS_TRUE BUILD_MISSINGOS_FALSE LIBOBJS LTLIBOBJS configure_input srcdir abs_srcdir top_srcdir abs_top_srcdir builddir abs_builddir top_builddir abs_top_builddir INSTALL' +all_configurevars=' SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE LN_S EGREP XCU_ID RM MV SED BASH PYTHON PERL BASENAME DIRNAME DIALOG WGET INSTALL_INFO SANDBOX PRELINK RSYNC CVS GPG MD5SUM LOGGER FIND FILE READELF SETFILES FAKEROOT CPP ALLOCA portageuser portagegroup wheelgid wheelgroup rootuser DOMAIN_PREFIX ARCH PORTAGE_BASE INSTALL_PYTHON_SOURCES_TRUE INSTALL_PYTHON_SOURCES_FALSE BUILD_TBZ2TOOL_TRUE BUILD_TBZ2TOOL_FALSE BUILD_MISSINGOS_TRUE BUILD_MISSINGOS_FALSE LIBOBJS LTLIBOBJS configure_input srcdir abs_srcdir top_srcdir abs_top_srcdir builddir abs_builddir top_builddir abs_top_builddir INSTALL' -- 2.26.2