Added the nolink option to the copy command
This commit is contained in:
parent
3a013f56c4
commit
14f98446ea
@ -3,8 +3,8 @@
|
||||
# create required directories
|
||||
makedir @initrd@/lib/modules
|
||||
makedir @initrd@/lib/firmware
|
||||
link @initrd@/modules to @initrd@/lib/modules
|
||||
link @initrd@/firmware to @initrd@/lib/firmware
|
||||
link @initrd@/modules to lib/modules
|
||||
link @initrd@/firmware to lib/firmware
|
||||
makedir @initrd@/sbin
|
||||
makedir @initrd@/dev
|
||||
makedir @initrd@/etc
|
||||
@ -168,16 +168,16 @@ copy @instroot@ sbin/rmmod to @initrd@ sbin
|
||||
edit @initrd@/.profile text "PATH=/bin:/usr/bin:/usr/sbin:/mnt/sysimage/sbin:/mnt/sysimage/usr/sbin:/mnt/sysimage/bin:/mnt/sysimage/usr/bin\nexport PATH"
|
||||
|
||||
# terminfos
|
||||
copy @instroot@ usr/share/terminfo/a/ansi to @initrd@ etc/terminfo/a
|
||||
copy @instroot@ usr/share/terminfo/d/dumb to @initrd@ etc/terminfo/d
|
||||
copy @instroot@ usr/share/terminfo/l/linux to @initrd@ etc/terminfo/l
|
||||
copy @instroot@ usr/share/terminfo/s/screen to @initrd@ etc/terminfo/s
|
||||
copy @instroot@ usr/share/terminfo/v/vt100 to @initrd@ etc/terminfo/v
|
||||
copy @instroot@ usr/share/terminfo/v/vt100-nav to @initrd@ etc/terminfo/v
|
||||
copy @instroot@ usr/share/terminfo/v/vt102 to @initrd@ etc/terminfo/v
|
||||
copy @instroot@ usr/share/terminfo/x/xterm to @initrd@ etc/terminfo/x
|
||||
copy @instroot@ usr/share/terminfo/x/xterm-color to @initrd@ etc/terminfo/x
|
||||
copy @instroot@ usr/share/terminfo/g/gnome to @initrd@ etc/terminfo/g
|
||||
copy @instroot@ usr/share/terminfo/a/ansi to @initrd@ etc/terminfo/a nolinks
|
||||
copy @instroot@ usr/share/terminfo/d/dumb to @initrd@ etc/terminfo/d nolinks
|
||||
copy @instroot@ usr/share/terminfo/l/linux to @initrd@ etc/terminfo/l nolinks
|
||||
copy @instroot@ usr/share/terminfo/s/screen to @initrd@ etc/terminfo/s nolinks
|
||||
copy @instroot@ usr/share/terminfo/v/vt100 to @initrd@ etc/terminfo/v nolinks
|
||||
copy @instroot@ usr/share/terminfo/v/vt100-nav to @initrd@ etc/terminfo/v nolinks
|
||||
copy @instroot@ usr/share/terminfo/v/vt102 to @initrd@ etc/terminfo/v nolinks
|
||||
copy @instroot@ usr/share/terminfo/x/xterm to @initrd@ etc/terminfo/x nolinks
|
||||
copy @instroot@ usr/share/terminfo/x/xterm-color to @initrd@ etc/terminfo/x nolinks
|
||||
copy @instroot@ usr/share/terminfo/g/gnome to @initrd@ etc/terminfo/g nolinks
|
||||
chmod @initrd@/etc/terminfo/*/* mode 0644
|
||||
|
||||
# misc
|
||||
|
@ -458,9 +458,11 @@ class Lorax(object):
|
||||
os.chdir(cwd)
|
||||
|
||||
if self.conf.buildarch not in ('s390', 's390x'):
|
||||
# XXX this is not in usr
|
||||
rm(os.path.join(self.conf.treedir, 'usr', 'sbin', 'ldconfig'))
|
||||
|
||||
rm(os.path.join(self.conf.treedir, 'etc', 'ld.so.conf'))
|
||||
# XXX why are we removing this?
|
||||
#rm(os.path.join(self.conf.treedir, 'etc', 'ld.so.conf'))
|
||||
os.system('umount %s' % procdir)
|
||||
|
||||
def scrub_treedir(self):
|
||||
|
@ -101,7 +101,7 @@ class LoraxAction(object):
|
||||
|
||||
class Copy(LoraxAction):
|
||||
|
||||
REGEX = r'^(?P<src_root>.*?)\s(?P<src_path>.*?)\sto\s(?P<dst_root>.*?)\s(?P<dst_path>.*?)(\s(?P<install>install))?$'
|
||||
REGEX = r'^(?P<src_root>.*?)\s(?P<src_path>.*?)\sto\s(?P<dst_root>.*?)\s(?P<dst_path>.*?)(\s(?P<install>install))?(\s(?P<nolinks>nolinks))?$'
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
LoraxAction.__init__(self)
|
||||
@ -116,10 +116,16 @@ class Copy(LoraxAction):
|
||||
else:
|
||||
self._attrs['install'] = False
|
||||
|
||||
nolinks = kwargs.get('nolinks', False)
|
||||
if nolinks:
|
||||
self._attrs['nolinks'] = True
|
||||
else:
|
||||
self._attrs['nolinks'] = False
|
||||
|
||||
def execute(self, verbose=False):
|
||||
cp(src_root=self.src_root, src_path=self.src_path,
|
||||
dst_root=self.dst_root, dst_path=self.dst_path,
|
||||
ignore_errors=True, verbose=verbose)
|
||||
nolinks=self.nolinks, ignore_errors=True, verbose=verbose)
|
||||
self._attrs['success'] = True
|
||||
|
||||
@property
|
||||
@ -163,12 +169,16 @@ class Copy(LoraxAction):
|
||||
def getDeps(self):
|
||||
return self._attrs['src']
|
||||
|
||||
@property
|
||||
def nolinks(self):
|
||||
return self._attrs['nolinks']
|
||||
|
||||
|
||||
class Move(Copy):
|
||||
def execute(self, verbose=False):
|
||||
mv(src_root=self.src_root, src_path=self.src_path,
|
||||
dst_root=self.dst_root, dst_path=self.dst_path,
|
||||
ignore_errors=True, verbose=verbose)
|
||||
nolinks=self.nolinks, ignore_errors=True, verbose=verbose)
|
||||
self._attrs['success'] = True
|
||||
|
||||
|
||||
|
@ -297,8 +297,10 @@ class InitRD(object):
|
||||
devices.add((vend, dev))
|
||||
|
||||
# create pci.ids
|
||||
# XXX this file is NOT in the original initrd image...
|
||||
src = os.path.join(self.conf.treedir, 'usr', 'share', 'hwdata', 'pci.ids')
|
||||
dst = os.path.join(self.conf.initrddir, 'pci.ids')
|
||||
#dst = os.path.join(self.conf.initrddir, 'pci.ids')
|
||||
dst = os.path.join(self.conf.treedir, 'pci.ids')
|
||||
|
||||
input = open(src, 'r')
|
||||
pcitable = input.readlines()
|
||||
|
@ -64,7 +64,7 @@ def touch(filename, verbose=False):
|
||||
|
||||
return True
|
||||
|
||||
def cp(src_path, dst_path, src_root='/', dst_root='/', ignore_errors=False, verbose=True):
|
||||
def cp(src_path, dst_path, src_root='/', dst_root='/', nolinks=False, ignore_errors=False, verbose=True):
|
||||
filecopy = Copy(ignore_errors, verbose)
|
||||
|
||||
src = os.path.join(src_root, src_path)
|
||||
@ -74,11 +74,11 @@ def cp(src_path, dst_path, src_root='/', dst_root='/', ignore_errors=False, verb
|
||||
if src_path[0] != '/' and fname[0] == '/':
|
||||
fname = fname[1:]
|
||||
|
||||
filecopy.copy(fname, dst_path, src_root, dst_root)
|
||||
filecopy.copy(fname, dst_path, src_root, dst_root, nolinks)
|
||||
|
||||
return filecopy.errors
|
||||
|
||||
def mv(src_path, dst_path, src_root='/', dst_root='/', ignore_errors=False, verbose=True):
|
||||
def mv(src_path, dst_path, src_root='/', dst_root='/', nolinks=False, ignore_errors=False, verbose=True):
|
||||
errors = cp(src_path, dst_path, src_root, dst_root, ignore_errors, verbose)
|
||||
|
||||
# if everything was copied, remove the source
|
||||
@ -144,7 +144,7 @@ class Copy(object):
|
||||
|
||||
self.errors = []
|
||||
|
||||
def copy(self, src_path, dst_path, src_root='/', dst_root='/'):
|
||||
def copy(self, src_path, dst_path, src_root='/', dst_root='/', nolinks=False):
|
||||
# normalize the source and destination paths
|
||||
src, dst = normalize(src_root, src_path, dst_root, dst_path)
|
||||
|
||||
@ -195,7 +195,10 @@ class Copy(object):
|
||||
|
||||
if os.path.islink(src):
|
||||
|
||||
self.__copy_link(src_path, dst_path, src_root, dst_root, src, dst)
|
||||
if nolinks:
|
||||
self.__copy_file(os.path.realpath(src), dst)
|
||||
else:
|
||||
self.__copy_link(src_path, dst_path, src_root, dst_root, src, dst)
|
||||
|
||||
else:
|
||||
|
||||
@ -209,7 +212,22 @@ class Copy(object):
|
||||
|
||||
if os.path.islink(src):
|
||||
|
||||
self.__copy_link(src_path, dst_path, src_root, dst_root, src, new_dst)
|
||||
if nolinks:
|
||||
real_src = os.path.realpath(src)
|
||||
|
||||
if not os.path.exists(new_dst):
|
||||
os.makedirs(new_dst)
|
||||
|
||||
for fname in os.listdir(real_src):
|
||||
fname = os.path.join(real_src, fname)
|
||||
|
||||
if os.path.isfile(fname):
|
||||
self.__copy_file(fname, new_dst)
|
||||
else:
|
||||
dst = os.path.join(new_dst, os.path.basename(fname))
|
||||
shutil.copytree(fname, dst, symlinks=False)
|
||||
else:
|
||||
self.__copy_link(src_path, dst_path, src_root, dst_root, src, new_dst)
|
||||
|
||||
else:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user