Modify

Opened 6 years ago

Closed 6 years ago

#3758 closed defect (fixed)

Broken egg install, conflict with tracusermanagerplugin 0.3

Reported by: michal.a.malecki@… Owned by: k0s
Priority: highest Component: AutocompleteUsersPlugin
Severity: normal Keywords:
Cc: Trac Release: 0.11

Description

After standard egg installation, JS and CSS files are not present. While building an egg with setup bdist_egg, html calatogue is not included within the egg - thus plugin does not work. The appropriate directory in .egg-cache dir in trac env does not get created.

After copying html directory manually to Lib/site-packages/trac/ in python installation, it appears to work, but just till the restart of the httpd server.

After restart it starts to conflict with requests to graphics and CSS from tracusermanagerplugin , every http request resulting in http 500 message with following error:

  Trac detected an internal error:
  KeyError: 'autocompleteusers\\htdocs'

and following traceback:

  1. File "C:\Python25\Lib\site-packages\trac\web\main.py", line 423, in _dispatch_request
    Code fragment:
     418. try:
     419. if not env and env_error:
     420. raise HTTPInternalError(env_error)
     421. try:
     422. dispatcher = RequestDispatcher(env)
     423. dispatcher.dispatch(req)
     424. except RequestDone:
     425. pass
     426. resp = req._response or []
     427.  
     428. except HTTPException, e:
    
    Local variables:
    • Name Value
    • after [u' except RequestDone:', u' pass', u' resp = ...
    • before [u' try:', u' if not env and env_error:', u' raise ...
    • dispatcher <trac.web.main.RequestDispatcher object at 0x02ACE650>
    • e KeyError('autocompleteusers
      htdocs',)
    • env <trac.env.Environment object at 0x0252B5B0>
    • env_error None
    • exc_info (<type 'exceptions.KeyError'>, KeyError('autocompleteusers
      htdocs',), ...
    • filename 'C:
      Python25
      Lib
      site-packages
      trac
      web
      main.py'
    • frames [{'function': '_dispatch_request', 'lines_before': [u' try:', u' ...
    • has_admin True
    • line u' dispatcher.dispatch(req)'
    • lineno 422
    • message u"KeyError: 'autocompleteusers

      htdocs'"
    • req <Request "GET u'/chrome/tracusermanager/img/no_picture.png'">
    • resp []
    • tb <traceback object at 0x02D698F0>
    • tb_hide None
    • traceback 'Traceback (most recent call last):\n File ...
  2. File "C:\Python25\Lib\site-packages\trac\web\main.py", line 197, in dispatch
    Code fragment:
     192. req.args.get('__FORM_TOKEN') != req.form_token:
     193. raise HTTPBadRequest('Missing or invalid form token. '
     194. 'Do you have cookies enabled?')
     195.  
     196. # Process the request and render the template
     197. resp = chosen_handler.process_request(req)
     198. if resp:
     199. if len(resp) == 2: # Clearsilver
     200. chrome.populate_hdf(req)
     201. template, content_type = \
     202. self._post_process_request(req, *resp)
    
    Local variables:
    • Name Value
    • chosen_handler <trac.web.chrome.Chrome object at 0x02ABF070>
    • chrome <trac.web.chrome.Chrome object at 0x02ABF070>
    • err (<type 'exceptions.KeyError'>, KeyError('autocompleteusers
      htdocs',), ...
    • handler <trac.web.chrome.Chrome object at 0x02ABF070>
    • req <Request "GET u'/chrome/tracusermanager/img/no_picture.png'">
    • self <trac.web.main.RequestDispatcher object at 0x02ACE650>
  3. File "C:\Python25\Lib\site-packages\trac\web\chrome.py", line 364, in process_request
    Code fragment:
     359. filename = req.args['filename']
     360.  
     361. dirs = []
     362. for provider in self.template_providers:
     363. for dir in [os.path.normpath(dir[1]) for dir
     364. in provider.get_htdocs_dirs() if dir[0] == prefix]:
     365. dirs.append(dir)
     366. path = os.path.normpath(os.path.join(dir, filename))
     367. assert os.path.commonprefix([dir, path]) == dir
     368. if os.path.isfile(path):
     369. req.send_file(path, get_mimetype(path))
    
    Local variables:
    • Name Value
    • _[1] []
    • dir ('customfieldadmin', ...
    • dirs []
    • filename u'img/no_picture.png'
    • prefix u'tracusermanager'
    • provider <autocompleteusers.autocompleteusers.AutocompleteUsers object at ...
    • req <Request "GET u'/chrome/tracusermanager/img/no_picture.png'">
    • self <trac.web.chrome.Chrome object at 0x02ABF070>
  4. File "build\bdist.win32\egg\autocompleteusers\autocompleteusers.py", line 88, in get_htdocs_dirs Local variables:
    • Name Value
    • self <autocompleteusers.autocompleteusers.AutocompleteUsers object at ...
  5. File "C:\Python25\Lib\site-packages\pkg_resources.py", line 841, in resource_filename
    Code fragment:
     836. )
     837.  
     838. def resource_filename(self, package_or_requirement, resource_name):
     839. """Return a true filesystem path for specified resource"""
     840. return get_provider(package_or_requirement).get_resource_filename(
     841. self, resource_name
     842. )
     843.  
     844. def resource_stream(self, package_or_requirement, resource_name):
     845. """Return a readable file-like object for specified resource"""
     846. return get_provider(package_or_requirement).get_resource_stream(
    
    Local variables:
    • Name Value
    • package_or_requirement 'autocompleteusers.autocompleteusers'
    • resource_name 'htdocs'
    • self <pkg_resources.ResourceManager instance at 0x024C1328>
  6. File "C:\Python25\Lib\site-packages\pkg_resources.py", line 1311, in get_resource_filename
    Code fragment:
    1306. zip_path = self._resource_to_zip(resource_name)
    1307. eagers = self._get_eager_resources()
    1308. if '/'.join(self._parts(zip_path)) in eagers:
    1309. for name in eagers:
    1310. self._extract_resource(manager, self._eager_to_zip(name))
    1311. return self._extract_resource(manager, zip_path)
    1312.  
    1313. def _extract_resource(self, manager, zip_path):
    1314.  
    1315. if zip_path in self._index():
    1316. for name in self._index()[zip_path]:
    
    Local variables:
    • Name Value
    • eagers []
    • manager <pkg_resources.ResourceManager instance at 0x024C1328>
    • resource_name 'htdocs'
    • self <pkg_resources.ZipProvider instance at 0x02E560A8>
    • zip_path 'autocompleteusers
      htdocs'
  7. File "C:\Python25\Lib\site-packages\pkg_resources.py", line 1322, in _extract_resource
    Code fragment:
    1317. last = self._extract_resource(
    1318. manager, os.path.join(zip_path, name)
    1319. )
    1320. return os.path.dirname(last) # return the extracted directory name
    1321.  
    1322. zip_stat = self.zipinfo[zip_path]
    1323. t,d,size = zip_stat[5], zip_stat[6], zip_stat[3]
    1324. date_time = (
    1325. (d>>9)+1980, (d>>5)&0xF, d&0x1F, # ymd
    1326. (t&0xFFFF)>>11, (t>>5)&0x3F, (t&0x1F) * 2, 0, 0, -1 # hms, etc.
    1327. )
    
    Local variables:
    • Name Value
    • manager <pkg_resources.ResourceManager instance at 0x024C1328>
    • self <pkg_resources.ZipProvider instance at 0x02E560A8>
    • zip_path 'autocompleteusers
      htdocs'

We suspect that the problem is in line no.4 in a traceback - the refference to a nonexistent dirctory from build directory of an egg distribution.

Attachments (0)

Change History (4)

comment:1 Changed 6 years ago by k0s

  • Priority changed from normal to highest

comment:2 Changed 6 years ago by k0s

r4390 should at least include the js and css (i hope)

comment:3 Changed 6 years ago by twang@…

This can be fixed with the following patch:

--- setup.py.orig       2008-10-23 15:00:54.000000000 -0500
+++ setup.py    2008-10-23 14:56:19.000000000 -0500
@@ -12,7 +12,7 @@ setup(name='AutocompleteUsers',
       license="",
       packages=find_packages(exclude=['ez_setup', 'examples', 'tests*']),      
       include_package_data=True,
-      package_data={'autocompleteusers': ['htdocs/*']},
+      package_data={'autocompleteusers': ['htdocs/css/*, htdocs/js/*']},
       zip_safe=False,
       entry_points = """
       [trac.plugins]

comment:4 Changed 6 years ago by k0s

  • Resolution set to fixed
  • Status changed from new to closed

(In [5047]) more explicit specification of package_data; bump version; add GPL license; hopefully fixes #3758

Add Comment

Modify Ticket

Action
as closed The owner will remain k0s.
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.