~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to setup.py

  • Committer: mattgiuca
  • Date: 2007-12-21 03:45:47 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:122
setup.py: build action now copies all operating system files into the jail.
(Just missing a Python symlink).

Show diffs side-by-side

added added

removed removed

Lines of Context:
449
449
        'trampoline/trampoline.c'], dry)
450
450
 
451
451
    # Create the jail and its subdirectories
 
452
    # Note: Other subdirs will be made by copying files
452
453
    action_mkdir('jail', dry)
453
 
    action_mkdir('jail/bin', dry)
454
 
    action_mkdir('jail/lib', dry)
455
 
    action_mkdir('jail/usr/bin', dry)
456
 
    action_mkdir('jail/usr/lib', dry)
457
 
    action_mkdir('jail/opt/ivle', dry)
458
454
    action_mkdir('jail/home', dry)
459
455
    action_mkdir('jail/tmp', dry)
460
456
 
461
 
    # Copy all console files into the jail
 
457
    # Copy all console and operating system files into the jail
462
458
    action_copylist(install_list.list_console, 'jail/opt/ivle', dry)
463
 
 
464
 
    # TODO: Copy operating system files into the jail
 
459
    copy_os_files_jail(dry)
465
460
 
466
461
    # Compile .py files into .pyc or .pyo files
467
462
    compileall.compile_dir('www', quiet=True)
469
464
 
470
465
    return 0
471
466
 
 
467
def copy_os_files_jail(dry):
 
468
    """Copies necessary Operating System files from their usual locations
 
469
    into the jail/ directory of the cwd."""
 
470
    # Currently source paths are configured for Ubuntu.
 
471
    copy_file_to_jail('/lib/ld-linux.so.2', dry)
 
472
    copy_file_to_jail('/lib/tls/i686/cmov/libc.so.6', dry)
 
473
    copy_file_to_jail('/lib/tls/i686/cmov/libdl.so.2', dry)
 
474
    copy_file_to_jail('/lib/tls/i686/cmov/libm.so.6', dry)
 
475
    copy_file_to_jail('/lib/tls/i686/cmov/libpthread.so.0', dry)
 
476
    copy_file_to_jail('/lib/tls/i686/cmov/libutil.so.1', dry)
 
477
    copy_file_to_jail('/usr/bin/python2.5', dry)
 
478
    # TODO: ln -s jail/usr/bin/python2.5 jail/usr/bin/python
 
479
    action_copytree('/usr/lib/python2.5', 'jail/usr/lib/python2.5', dry)
 
480
 
 
481
def copy_file_to_jail(src, dry):
 
482
    """Copies a single file from an absolute location into the same location
 
483
    within the jail. src must begin with a '/'. The jail will be located
 
484
    in a 'jail' subdirectory of the current path."""
 
485
    action_copyfile(src, 'jail' + src, dry)
 
486
 
472
487
def install(args):
473
488
    # Get "dry" and "nojail" variables from command line
474
489
    (opts, args) = getopt.gnu_getopt(args, "n", ['dry', 'nojail'])
584
599
    if not dry:
585
600
        shutil.copyfile(src, dst)
586
601
 
 
602
def action_symlink(src, dst, dry):
 
603
    """Creates a symlink in a given location. Creates all parent directories
 
604
    as necessary.
 
605
    """
 
606
    dstdir = os.path.split(dst)[0]
 
607
    if not os.path.isdir(dstdir):
 
608
        action_mkdir(dstdir, dry)
 
609
    print "ln -s", src, dst
 
610
    if not dry:
 
611
        os.symlink(src, dst)
 
612
 
587
613
def action_chown_setuid(file, dry):
588
614
    """Chowns a file to root, and sets the setuid bit on the file.
589
615
    Calling this function requires the euid to be root.