*Synopsis*: Cadmium .NOT file processing problem with CWD relative file paths
CR 6798660 changed on Jan 28 2009 by <User 1-5Q-8204>
=== Field ============ === New Value ============= === Old Value =============
Public Comments New Note
Status 3-Accepted 1-Dispatched
====================== =========================== ===========================
*Change Request ID*: 6798660
*Synopsis*: Cadmium .NOT file processing problem with CWD relative file paths
Product: solaris
Category: consolidation
Subcategory: os-net-tools
Type: Defect
Subtype:
Status: 3-Accepted
Substatus:
Priority: 4-Low
Introduced In Release:
Introduced In Build:
Responsible Engineer:
Keywords:
=== *Description* ============================================================
I've been working on adding a new linker mapfile check
(mapfilechk) to cadmium, patterned on cddlchk, as detailed
in the CR:
6785284 Mapfile versioning rules need to be more visible to gatelings
In a nutshell, there will be a standard comment in all of the OSnet
link-editor mapfiles, and the mapfilechk command will be used to
keep them intact. I already have it working, largely by copying
cddlchk, and modifying it to suit. However, I've hit a problem
with cdm.py.
mapfilechk examines any file with a name that matches '*mapfile*',
and ignores all others. However, there are a small number of files
in OSnet that match this pattern that are not actually mapfiles.
For instance, mapfilechk itself. I need to have an exceptions list
for these files. I am using the .NOT file mechanism supported in
cdm.py via the not_check() function. Using cddlchk as an example:
def cdm_cddlchk(ui, repo, *args, **opts):
...
filelist = opts.get('filelist') or _buildfilelist(repo, args)
...
exclude = not_check(repo, 'cddlchk')
for f, e in filelist.iteritems():
if e and e.is_removed():
continue
elif (e or opts.get('honour_nots')) and exclude(f):
ui.status('Skipping %s...\n' % f)
continue
...
The problem I'm encountering is that the list of files returned by
_buildfilelist() is relative to the working directory, while the
list of file path exceptions needs to be relative to the workspace
root. Consequently, exclude() only matches if my working directory
is set to the workspace root.
Having the list of files generated by _buildfilelist() be relative to
the workspace is convenient for the tools, since they can simply open
the desired files from those paths. However, for the purposes of
excluding files, they need to be taken relative to the workspace root
instead.
*** (#1 of 1): 2009-01-28 16:52:29 GMT+00:00 <User 1-28L01W>
=== *Public Comments* ========================================================
One solution would be to enhance cdm.py:_buildfilelist() to always set the
value, regardless of whether a file was in the active list. It would then need
a separate means of tracking whether or not we were using the active list vs
specific file(s), and the exclude() checks should be updated to be on the
value, rather than the key, from the filelist dictionary.
*** (#1 of 1): 2009-01-28 18:52:55 GMT+00:00 <User 1-5Q-8204>
=== *Workaround* =============================================================
=== *Additional Details* =====================================================
Targeted Release:
Commit To Fix In Build:
Fixed In Build:
Integrated In Build:
Verified In Build:
See Also: 6785284
Duplicate of:
Hooks:
Hook1:
Hook2:
Hook3:
Hook4:
Hook5:
Hook6:
Program Management:
Root Cause:
Fix Affects Documentation: No
Fix Affects Localization: No
=== *History* ================================================================
Date Submitted: 2009-01-28 16:52:29 GMT+00:00
Submitted By: <User 1-28L01W>
Status Changed Date Updated Updated By
3-Accepted 2009-01-28 18:52:55 GMT+00:00 <User 1-5Q-8204>
=== *Service Request* ========================================================
Impact: Limited
Functionality: Primary
Severity: 3
Product Name: solaris
Product Release: solaris_nevada
Product Build:
Operating System: solaris_nevada
Hardware: generic
Submitted Date: 2009-01-28 16:52:29 GMT+00:00
=== *Multiple Release (MR) Cluster* - 0 ======================================