rubik / pyg

A Python Package Manager
http://pyg-installer.co.nr
MIT License
21 stars 3 forks source link

Package can't be installed (dreampie) #85

Open fdev31 opened 13 years ago

fdev31 commented 13 years ago

I think there is some mangling between python 2.x & 3.x here, need to analyse...

% wget 'http://launchpad.net/dreampie/trunk/1.1/+download/dreampie-1.1.tar.gz'
% tar xf dreampie*
% cd dreampie*
% pyg install .
Installing /tmp/dreampie-1.1
Installing dreampie-1.1
Running setup.py egg_info for dreampie-1.1
Running setup.py install for dreampie-1.1
Error: setup.py did not install dreampie-1.1
Complete output from command `setup.py install`:
        running install
        running build
        running build_py
        creating build
        creating build/lib
        creating build/lib/dreampielib
        copying dreampielib/__init__.py -> build/lib/dreampielib
        copying dreampielib/subp_lib.py -> build/lib/dreampielib
        creating build/lib/dreampielib/common
        copying dreampielib/common/__init__.py -> build/lib/dreampielib/common
        copying dreampielib/common/brine.py -> build/lib/dreampielib/common
        copying dreampielib/common/objectstream.py -> build/lib/dreampielib/common
        creating build/lib/dreampielib/gui
        copying dreampielib/gui/SimpleGladeApp.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/__init__.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/autocomplete.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/autocomplete_window.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/beep.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/call_tip_window.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/call_tips.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/config.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/config_dialog.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/file_dialogs.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/folding.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/gtkexcepthook.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/hide_console_window.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/hist_persist.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/history.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/hyper_parser.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/keyhandler.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/load_pygtk.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/newline_and_indent.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/odict.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/output.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/pyparse.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/selection.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/status_bar.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/subprocess_handler.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/subprocess_interact.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/tags.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/vadj_to_bottom.py -> build/lib/dreampielib/gui
        copying dreampielib/gui/write_command.py -> build/lib/dreampielib/gui
        creating build/lib/dreampielib/subprocess
        copying dreampielib/subprocess/__init__.py -> build/lib/dreampielib/subprocess
        copying dreampielib/subprocess/find_modules.py -> build/lib/dreampielib/subprocess
        copying dreampielib/subprocess/split_to_singles.py -> build/lib/dreampielib/subprocess
        copying dreampielib/subprocess/trunc_traceback.py -> build/lib/dreampielib/subprocess
        running build_scripts
        creating build/scripts-2.7
        copying and adjusting dreampie -> build/scripts-2.7
        changing mode of build/scripts-2.7/dreampie from 644 to 755
        running build_subp_lib
        Copying dreampielib/__init__.py...
        Copying dreampielib/subprocess/__init__.py...
        Copying dreampielib/subprocess/find_modules.py...
        Copying dreampielib/subprocess/split_to_singles.py...
        Copying dreampielib/subprocess/trunc_traceback.py...
        Copying dreampielib/common/__init__.py...
        Copying dreampielib/common/objectstream.py...
        Copying dreampielib/common/brine.py...
        Converting dreampielib/__init__.py to Python 3...
        Converting dreampielib/subprocess/__init__.py to Python 3...
        Converting dreampielib/subprocess/find_modules.py to Python 3...
        Converting dreampielib/subprocess/split_to_singles.py to Python 3...
        Converting dreampielib/subprocess/trunc_traceback.py to Python 3...
        Converting dreampielib/common/__init__.py to Python 3...
        Converting dreampielib/common/objectstream.py to Python 3...
        Converting dreampielib/common/brine.py to Python 3...
        running install_lib
        creating /usr/local/lib/python2.7/site-packages/dreampielib
        copying build/lib/dreampielib/__init__.py -> /usr/local/lib/python2.7/site-packages/dreampielib
        creating /usr/local/lib/python2.7/site-packages/dreampielib/common
        copying build/lib/dreampielib/common/__init__.py -> /usr/local/lib/python2.7/site-packages/dreampielib/common
        copying build/lib/dreampielib/common/brine.py -> /usr/local/lib/python2.7/site-packages/dreampielib/common
        copying build/lib/dreampielib/common/objectstream.py -> /usr/local/lib/python2.7/site-packages/dreampielib/common
        creating /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/SimpleGladeApp.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/__init__.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/autocomplete.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/autocomplete_window.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/beep.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/call_tip_window.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/call_tips.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/config.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/config_dialog.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/file_dialogs.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/folding.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/gtkexcepthook.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/hide_console_window.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/hist_persist.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/history.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/hyper_parser.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/keyhandler.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/load_pygtk.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/newline_and_indent.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/odict.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/output.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/pyparse.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/selection.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/status_bar.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/subprocess_handler.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/subprocess_interact.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/tags.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/vadj_to_bottom.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/gui/write_command.py -> /usr/local/lib/python2.7/site-packages/dreampielib/gui
        copying build/lib/dreampielib/subp_lib.py -> /usr/local/lib/python2.7/site-packages/dreampielib
        creating /usr/local/lib/python2.7/site-packages/dreampielib/subprocess
        copying build/lib/dreampielib/subprocess/__init__.py -> /usr/local/lib/python2.7/site-packages/dreampielib/subprocess
        copying build/lib/dreampielib/subprocess/find_modules.py -> /usr/local/lib/python2.7/site-packages/dreampielib/subprocess
        copying build/lib/dreampielib/subprocess/split_to_singles.py -> /usr/local/lib/python2.7/site-packages/dreampielib/subprocess
        copying build/lib/dreampielib/subprocess/trunc_traceback.py -> /usr/local/lib/python2.7/site-packages/dreampielib/subprocess
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/__init__.py to __init__.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/common/__init__.py to __init__.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/common/brine.py to brine.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/common/objectstream.py to objectstream.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/SimpleGladeApp.py to SimpleGladeApp.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/__init__.py to __init__.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/autocomplete.py to autocomplete.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/autocomplete_window.py to autocomplete_window.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/beep.py to beep.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/call_tip_window.py to call_tip_window.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/call_tips.py to call_tips.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/config.py to config.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/config_dialog.py to config_dialog.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/file_dialogs.py to file_dialogs.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/folding.py to folding.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/gtkexcepthook.py to gtkexcepthook.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/hide_console_window.py to hide_console_window.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/hist_persist.py to hist_persist.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/history.py to history.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/hyper_parser.py to hyper_parser.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/keyhandler.py to keyhandler.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/load_pygtk.py to load_pygtk.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/newline_and_indent.py to newline_and_indent.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/odict.py to odict.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/output.py to output.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/pyparse.py to pyparse.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/selection.py to selection.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/status_bar.py to status_bar.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/subprocess_handler.py to subprocess_handler.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/subprocess_interact.py to subprocess_interact.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/tags.py to tags.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/vadj_to_bottom.py to vadj_to_bottom.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/gui/write_command.py to write_command.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/subp_lib.py to subp_lib.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/subprocess/__init__.py to __init__.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/subprocess/find_modules.py to find_modules.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/subprocess/split_to_singles.py to split_to_singles.pyc
        byte-compiling /usr/local/lib/python2.7/site-packages/dreampielib/subprocess/trunc_traceback.py to trunc_traceback.pyc
        running install_data
        copying share/applications/dreampie.desktop -> /usr/local/share/applications
        copying share/man/man1/dreampie.1 -> /usr/local/share/man/man1
        creating /usr/local/share/pixmaps
        copying share/pixmaps/dreampie.svg -> /usr/local/share/pixmaps
        copying share/pixmaps/dreampie.png -> /usr/local/share/pixmaps
        creating /usr/local/share/dreampie
        copying share/dreampie/subp_main.py -> /usr/local/share/dreampie
        copying share/dreampie/dreampie.glade -> /usr/local/share/dreampie
        running install_egg_info
        running egg_info
        creating dreampie.egg-info
        writing dreampie.egg-info/PKG-INFO
        writing top-level names to dreampie.egg-info/top_level.txt
        writing dependency_links to dreampie.egg-info/dependency_links.txt
        writing manifest file 'dreampie.egg-info/SOURCES.txt'
        warning: manifest_maker: standard file '-c' not found
                hgtools.LibraryManager('.') could not find files: repository . not found
        hgtools.SubprocessManager('.') could not find files: abandon : There is no Mercurial repository here (.hg not found) !
        reading manifest file 'dreampie.egg-info/SOURCES.txt'
        writing manifest file 'dreampie.egg-info/SOURCES.txt'
        Copying dreampie.egg-info to /usr/local/lib/python2.7/site-packages/dreampie-1.1-py2.7.egg-info
        running install_scripts
        copying build/scripts-2.7/dreampie -> /usr/local/bin
        changing mode of /usr/local/bin/dreampie to 755
        running install_subp_lib
        creating /usr/local/share/dreampie/subp-py2
        creating /usr/local/share/dreampie/subp-py2/dreampielib
        copying build/subp-py2/dreampielib/__init__.py -> /usr/local/share/dreampie/subp-py2/dreampielib
        creating /usr/local/share/dreampie/subp-py2/dreampielib/common
        copying build/subp-py2/dreampielib/common/__init__.py -> /usr/local/share/dreampie/subp-py2/dreampielib/common
        copying build/subp-py2/dreampielib/common/brine.py -> /usr/local/share/dreampie/subp-py2/dreampielib/common
        copying build/subp-py2/dreampielib/common/objectstream.py -> /usr/local/share/dreampie/subp-py2/dreampielib/common
        creating /usr/local/share/dreampie/subp-py2/dreampielib/subprocess
        copying build/subp-py2/dreampielib/subprocess/__init__.py -> /usr/local/share/dreampie/subp-py2/dreampielib/subprocess
        copying build/subp-py2/dreampielib/subprocess/find_modules.py -> /usr/local/share/dreampie/subp-py2/dreampielib/subprocess
        copying build/subp-py2/dreampielib/subprocess/split_to_singles.py -> /usr/local/share/dreampie/subp-py2/dreampielib/subprocess
        copying build/subp-py2/dreampielib/subprocess/trunc_traceback.py -> /usr/local/share/dreampie/subp-py2/dreampielib/subprocess
        creating /usr/local/share/dreampie/subp-py3
        creating /usr/local/share/dreampie/subp-py3/dreampielib
        copying build/subp-py3/dreampielib/__init__.py -> /usr/local/share/dreampie/subp-py3/dreampielib
        creating /usr/local/share/dreampie/subp-py3/dreampielib/common
        copying build/subp-py3/dreampielib/common/__init__.py -> /usr/local/share/dreampie/subp-py3/dreampielib/common
        copying build/subp-py3/dreampielib/common/brine.py -> /usr/local/share/dreampie/subp-py3/dreampielib/common
        copying build/subp-py3/dreampielib/common/objectstream.py -> /usr/local/share/dreampie/subp-py3/dreampielib/common
        creating /usr/local/share/dreampie/subp-py3/dreampielib/subprocess
        copying build/subp-py3/dreampielib/subprocess/__init__.py -> /usr/local/share/dreampie/subp-py3/dreampielib/subprocess
        copying build/subp-py3/dreampielib/subprocess/find_modules.py -> /usr/local/share/dreampie/subp-py3/dreampielib/subprocess
        copying build/subp-py3/dreampielib/subprocess/split_to_singles.py -> /usr/local/share/dreampie/subp-py3/dreampielib/subprocess
        copying build/subp-py3/dreampielib/subprocess/trunc_traceback.py -> /usr/local/share/dreampie/subp-py3/dreampielib/subprocess
        writing list of installed files to '/tmp/tmpYAVopE/.pyg-install-record'
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "/tmp/dreampie-1.1/setup.py", line 161, in <module>
            setup(**setup_args)
          File "/usr/local/lib/python2.7/distutils/core.py", line 152, in setup
            dist.run_commands()
          File "/usr/local/lib/python2.7/distutils/dist.py", line 953, in run_commands
            self.run_command(cmd)
          File "/usr/local/lib/python2.7/distutils/dist.py", line 972, in run_command
            cmd_obj.run()
          File "/usr/local/lib/python2.7/site-packages/setuptools/command/install.py", line 53, in run
            return _install.run(self)
          File "/usr/local/lib/python2.7/distutils/command/install.py", line 590, in run
            self.record)
          File "/usr/local/lib/python2.7/distutils/cmd.py", line 349, in execute
            util.execute(func, args, msg, dry_run=self.dry_run)
          File "/usr/local/lib/python2.7/distutils/util.py", line 400, in execute
            func(*args)
          File "/usr/local/lib/python2.7/distutils/file_util.py", line 228, in write_file
            f.write(line + "\n")
        TypeError: can only concatenate list (not "str") to list
Error: setup.py did not install dreampie-1.1: cannot install the package
rubik commented 13 years ago

Argh... Thank you for pointing this out. I get the same error both on Python2.6 and Python2.7...

P.S. This does not concern the problem, but you can install packages from launchpad using the bzr+url syntax:

$ pyg install bzr+lp:dreampie
....
rubik commented 13 years ago

I came to the conclusion that it's a distutils bug. When we use --single-version-externally-managed setuptools wants a --record option too. But when we set the record it fails (even if we are launching a simple python setup.py install --record <path>). Here is dreampie setup:

$ python setup.py install --record "pyg-record-test.rec"
running install
running build
running build_py
running build_scripts
running build_subp_lib
running install_lib
running install_scripts
changing mode of /home/miki/env2/bin/dreampie to 755
running install_data
running install_egg_info
Removing /home/miki/env2/lib/python2.6/site-packages/dreampie-1.1-py2.6.egg-info
Writing /home/miki/env2/lib/python2.6/site-packages/dreampie-1.1-py2.6.egg-info
running install_subp_lib
writing list of installed files to 'pyg-record-test.rec'
Traceback (most recent call last):
  File "setup.py", line 161, in <module>
    setup(**setup_args)
  File "/usr/lib/python2.6/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/usr/lib/python2.6/distutils/dist.py", line 975, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python2.6/distutils/dist.py", line 995, in run_command
    cmd_obj.run()
  File "/usr/lib/python2.6/distutils/command/install.py", line 642, in run
    self.record)
  File "/usr/lib/python2.6/distutils/cmd.py", line 358, in execute
    util.execute(func, args, msg, dry_run=self.dry_run)
  File "/usr/lib/python2.6/distutils/util.py", line 408, in execute
    func(*args)
  File "/usr/lib/python2.6/distutils/file_util.py", line 252, in write_file
    f.write(line + "\n")
TypeError: can only concatenate list (not "str") to list
rubik commented 13 years ago

dreampie uses distutils. If we manage to replace that function with setuptools' one it could work.

fdev31 commented 13 years ago

Did you spot the function we have to replace ? To me it might be a complex use-case with custom Command defined, don't know if setuptools can override that easily, we will have to check :P

rubik commented 13 years ago

With the changes of the above commit it works, but we shouldn't remove the --single-version-externally-managed option. As you can see, setuptools automatically redirects to distutils:

      File "/usr/local/lib/python2.7/distutils/dist.py", line 972, in run_command
        cmd_obj.run()
 -->  File "/usr/local/lib/python2.7/site-packages/setuptools/command/install.py", line 53, in run
 -->    return _install.run(self)
      File "/usr/local/lib/python2.7/distutils/command/install.py", line 590, in run
        self.record)

_install refers to the distutils' install command. Maybe we can override the write_file function in distutils/file_util.py...

fdev31 commented 13 years ago

I think distutils hacks / special cases handling could wait for a next release so we can try to provide a clean "exceptions" handling... did you manage to get a compatibility layer with other frameworks like distutils2 ?

rubik commented 13 years ago

Yes, you're right, I'll change the milestone. As for distutils2, I think we can improve pkgtools, maybe creating a new version (like pkgtools2 or something), that handles both frameworks.

fdev31 commented 13 years ago

Short answer: Oh nice, would you be interested in some pkgtools.egg submodule ? Long answer: Oh, I didn't realize you own pkgtools as well... I don't know if you remember but I talked about an alternative packaging format (a zip containing an .egg plus a .py file to run the application...). You can read some bits of it here: http://zicbee.gnux.info/hg/zicbee-workshop/file/a70dbb7649ae/manage (The the Installer class), that code started from a script-like thing but now it's too limited for this model, an integration + improvement into a wider-target library could be nice... don't you think ?

rubik commented 13 years ago

Sorry for the delay but I wasn't at home. I checked zicbee (I didn't know it was yours! LOL). That's really interesting! bee.egg looks like a bundle with the EGG-INFO file, so we could simply create a bundle with all the required packages and then add metadata.

fdev31 commented 13 years ago

Don't apologies, I can't tell I'm very reactive at the moment :P Heh, did you really know about zicbee before checking this code ? I wasn't expecting real users/testers ;) You got the idea, this packaging technique is more or less a bundle, the only tricky part is to "merge" EGG-INFO (and allow the user to customize the way it's merged, there is some hard-coded structure for that in zicbee....). I would be happy to be able to remove my ad-hoc code & use something else to distribute zicbee & others :P

rubik commented 13 years ago

Heh, did you really know about zicbee before checking this code ? I wasn't expecting real users/testers ;)

No, I didn't. But that's probably me, I don't have big playlists and I dont't listen to music very often!

And regarding that packaging technique, do you want it to be included in this release or in the next ones? I think we can extend a little the bundle method, it shouldn't be so difficult.

fdev31 commented 13 years ago

I would prefer "as soon as possible" but I can easily wait for the next release... if you have some time, just feel free ;) I think it's a nice feature but there is no emergency.

rubik commented 13 years ago

Ok, since I find it very interesting I started working on it. I have modified the Bundler, made it more flexible.

fdev31 commented 13 years ago

Oh great, thanks ! I was playing with features I rarely use an find some behavior a little odd (this is the novice eyes ;)), Maybe you could explain me how it's supposed to work so we can spot the improvement points:

rubik commented 13 years ago

Ah yes git is a bit complicated. To make it work I had to copy my .ssh folder from my home to the root (because I run pyg install through sudo), but I never stumbled into that error...

As for the other problem, install accepts, among the others, two inputs:

Now, in the first example you are installing Pyg from an URL (that points to the tarball), but that installs only the specified package, not its dependecies (I don't know whether this is a bug or not). In the latter example you are using the -e option, that requires the scm prefix. Yeah it is not clear! :) But at the moment it is just a copy of the -e option in Pip, we could make it accepts all install's argument in the future.

rubik commented 13 years ago

I'm going to rewrite (in part) the Bundler: I don't like it now because it is not very usable...

fdev31 commented 13 years ago

Ok, could you think about some feature at the same time ? :) Still in the goal of packaging python programs for non-python developers (or non-developers): When we use "pyg bundle" it will fetch all sources etc... not using currently installed sources.

If I "python setup.py install" a development package, I expect it to be bundled instead of the released one, don't you agree ?

I think pip have some ways to workaround it (with a cache folder) but it's not very easy as well.

Another remark almost linked to bundle: the freeze command have the same name as in pip, but I think it's very badly named (it's more something like "packages" or "show" or something like that, in ONE world it's not obvious but I think it's possible to find a better name :))

rubik commented 13 years ago

I managed to write something, but I'm going to open a new issue for that. How do you want to call that bundle/egg/pack? The file-extension I mean. I saw you called yours "Zicbee Pack", but on my system the .pack extension is already linked to Pack200 Java archives, I don't know what they are. So in the example I called it pypack, but we should determine the extension.

For the other bundle feature, we can leave the default process as it is, and add an option for that. It is tricky, though... Regarding the freeze command, we can easily replace it with another name. I think "show" and "packages" are good alternatives as well, what do you think?

fdev31 commented 13 years ago

About the names, I like "show" since it's short... or "installed" ? (people type that fast since it's a common word)

pyg site

Showing some site informations (preceded by '#') + package list can be great as well (in fact that's my favourite)... are comment allowed in requirements file ? If not, let's go for "show" but I would naturally switch "list" & "show" (as in "list packages" and "show versions").

rubik commented 13 years ago

Yes, comments are allowed in requirements file. So let's go for pyg site, shall I open a new issue?

fdev31 commented 13 years ago

Yep, using the bugtracker to keep track of the ideas is not a bad idea :)

rubik commented 13 years ago

From tomorrow I'll work on the new bundle feature you pointed out! :)

fdev31 commented 13 years ago

Great ! but which ones ? :) I don't know if I'll be free enough but I'll try to improve the pack command, especially the generated script which is just a place holder for now (thanks for that :)).

rubik commented 13 years ago

I'll start from pyg site and then I'll work on the other one.