A minimal subset of python (was Re: [@core] working definition for the minimal package set)
On Mon, 2012-11-12 at 11:28 -0500, Matthew Miller wrote: Okay, cool -- there's a lot of enthusiasm for a SIG for the core package set. So, first up on the SIG goals: clarifying our target. It's been suggested before that there's so many possibilities that this is useless, but the point here is to *pick* a reasonable choice as a group and to work with that (even if we can't get complete consensus). Then, later, when someone says but minimal could mean so many differen things! we simply say sure, but *this* is what we mean. I see three basic options for the target: A) kernel + init system and we're done B) boot to yum (with network): a text-mode bootstrap environment on which other things can be added by hand (or by kickstart) C) a traditional Unix command line environment with the expected basic tools available To me, 'C' is too wide for two reasons. First, it's too open for continual debate, because different people might expect different tools. Second, it's not necessarily the right base for the rest of the distribution, because many use cases might not really need that traditional Unix environment. I think 'A' is interesting and useful, but I don't think it should be our target, because it's not *useful enough*. We may want to eventually define a sub-group which covers just this tiny base (maybe with busybox?), but I think that's a different project. So that leaves me at *mostly B*, although I have some sympathy to the idea that we should include a few other things like a man page reader, since we're installing man pages, and a way to deliver e-mail to root, since we're installing things that send such mail. And I think the core environment should include ssh, but I'm open to the idea that even that should be an add-on. If we're targeting yum as core functionality, that implies a subset of Python: enough to run yum at least, but probably not much more. This ties into https://bugzilla.redhat.com/show_bug.cgi?id=867962 which I'd prefer to solve by introducing a python-core package. I've heard complaints from upstream that no-one can know what the python package means on any given distribution (everyone splits it out in slightly different ways). Fixing that suggests that the python package should become a metapackage that brings in everything built from the python tarball. If we go down this route, say in Fedora 19, then let's introduce a python-core or somesuch, and define it loosely to be whatever yum needs in the minimal environment. Does this sound sane? (especially from the POV of yum developers) What does yum need? Dave -- devel mailing list devel@lists.fedoraproject.org https://admin.fedoraproject.org/mailman/listinfo/devel
Re: A minimal subset of python (was Re: [@core] working definition for the minimal package set)
Did a quick scan and removed internals random : ['import random : (cli.py)'] subprocess : ['from subprocess import Popen, PIPE : (yum/packages.py)'] gettext : ['import gettext : (output.py)'] fnmatch : ['import fnmatch : (completion-helper.py)'] tempfile : ['import tempfile : (yum/misc.py)'] base64 : ['import base64 : (yum/misc.py)'] imp : ['import imp : (yum/plugins.py)'] logging.config : ['import logging.config : (yum/__init__.py)'] string : ['import string : (yum/__init__.py)'] textwrap : ['from textwrap import fill : (yum/plugins.py)'] urlgrabber.grabber : ['from urlgrabber.grabber import URLGrabError : (output.py)'] iniparse.compat : ['from iniparse.compat import NoSectionError, NoOptionError, ParsingError : (yum/config.py)'] ConfigParser : ['from ConfigParser import ConfigParser, ParsingError : (yum-updatesd.py)'] cmd : ['import cmd : (shell.py)'] uuid : ['from uuid import uuid4 : (yum/misc.py)'] logging.handlers : ['import logging.handlers : (yum/logginglevels.py)'] threading: ['import threading : (yum-updatesd.py)'] shlex: ['import shlex : (completion-helper.py)'] signal : ['import signal : (cli.py)'] cStringIO: ['from cStringIO import StringIO : (yum/mdparser.py)'] locale : ['import locale : (output.py)'] xml.sax.saxutils : ['import xml.sax.saxutils : (yum/misc.py)'] lzma : ['import lzma : (yum/misc.py)'] sha : ['import sha : (yum/misc.py)'] urllib : ['import urllib : (yum/misc.py)'] re : ['import re # For YumTerm : (output.py)'] gpgme: ['import gpgme : (yum/misc.py)'] fcntl: ['import fcntl : (yum/rpmtrans.py)'] optparse : ['from optparse import OptionParser : (yum-updatesd.py)'] xml.etree: ['from xml.etree import cElementTree : (yum/mdparser.py)'] struct : ['import struct : (yum/packages.py)'] logging : ['import logging : (output.py)'] socket : ['import socket : (yum/logginglevels.py)'] weakref : ['from weakref import proxy as weakref : (output.py)'] sqlitecachec : ['import sqlitecachec : (yum/yumRepo.py)'] os : ['import os : (yum-updatesd.py)'] pdb : ['import pdb : (yummain.py)'] struct, time, cStringIO, base64, types curses : ['import curses : (output.py)'] __builtin__ : ['import __builtin__ : (shell.py)'] operator : ['import operator : (yumcommands.py)'] rpm : ['import rpm : (output.py)'] errno: ['import errno : (yummain.py)'] binascii : ['import binascii : (yum/misc.py)'] types: ['import types : (output.py)'] md5 : ['import md5 : (yum/misc.py)'] pwd : ['import pwd : (output.py)'] gpgme.editutil : ['import gpgme.editutil : (yum/misc.py)'] copy : ['import copy : (yum/config.py)'] hashlib : ['import hashlib : (yum/misc.py)'] atexit : ['import atexit : (yum/plugins.py)'] StringIO : ['import StringIO : (yum/__init__.py)'] exceptions : ['import exceptions : (utils.py)'] sqlutils : ['from sqlutils import sqlite, executeSQL, sql_esc : (yum/pkgtag_db.py)'] urlgrabber : ['import urlgrabber : (yum/__init__.py)'] sqlite : ['import sqlite : (yum/sqlutils.py)'] urlgrabber.progress : ['from urlgrabber.progress import TextMeter, TextMultiFileMeter : (output.py)'] shutil : ['import shutil : (yum/misc.py)'] xattr: ['import xattr : (yum/packages.py)'] bz2 : ['import bz2 : (yum/misc.py)'] grp : ['import grp : (yum/packages.py)'] sqlite3 : ['import sqlite3 as sqlite : (yum/sqlutils.py)'] stat : ['import stat : (yum/packages.py)'] warnings : ['import warnings : (yum/config.py)'] glob urlgrabber.mirror: ['import urlgrabber.mirror : (yum/yumRepo.py)'] iniparse : ['from iniparse import INIConfig : (yum/config.py)'] sys : ['import sys : (yum-updatesd.py)'] cElementTree : ['import cElementTree : (yum/mdparser.py)'] os.path : ['import os.path : (yummain.py)'] urlparse : ['import urlparse : (yum/config.py)'] Tim On Tue, Nov 13, 2012 at 5:09 PM, David Malcolm dmalc...@redhat.com wrote: On Mon, 2012-11-12 at 11:28 -0500, Matthew Miller wrote: Okay, cool -- there's a lot of enthusiasm for a SIG for the core package set. So, first up on the SIG goals: clarifying our target. It's been suggested before that there's so many possibilities that this is useless, but the point here is to *pick* a reasonable choice as a group and to work with that