Here is what the code looks like (not sure how to add to this as a code sample, just as text.) I've also tried adding an "r" in various forms in the CalculateField line, to no avail. When using the print function for the fc, the filepath/name appears as it should.
The parsing with the .split("\") was for a later field calculator expression, but mentioned because to indicate that it is important that the file path be exact.
for dirpath, dirnames, filenames in walk:
for filename in filenames:
fcs.append(os.path.join(dirpath, filename))
for fc in fcs:
print fc
arcpy.CalculateField_management(fc, 'Source', '"' + fc + '"' , "PYTHON")