install
author Paul Crowley <paul@lshift.net>
Fri, 06 Mar 2009 16:15:28 +0000
changeset 80 fcb20d7593e6
parent 79 3a58a95fae2f
child 84 964b04126d01
permissions -rwxr-xr-x
Rewrite install script in Python
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
80
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
     1
#!/usr/bin/env python
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
     2
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
     3
import shutil
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
     4
import os
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
     5
import pwd
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
     6
import subprocess
27
ec31ba248edd Installer to set things up automatically
Paul Crowley <paul@ciphergoth.org>
parents:
diff changeset
     7
80
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
     8
def installFiles(d, *sources):
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
     9
    os.makedirs(d)
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    10
    for f in sources:
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    11
        shutil.copy(f, d)
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    12
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    13
dest = '/usr/local/lib/mercurial-server'
27
ec31ba248edd Installer to set things up automatically
Paul Crowley <paul@ciphergoth.org>
parents:
diff changeset
    14
80
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    15
installFiles(dest,
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    16
    'src/hg-ssh',
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    17
    'src/refresh-auth')
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    18
installFiles(dest + '/mercurialserver',
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    19
    'src/mercurialserver/__init__.py',
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    20
    'src/mercurialserver/paths.py',
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    21
    'src/mercurialserver/changes.py',
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    22
    'src/mercurialserver/access.py',
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    23
    'src/mercurialserver/servelog.py',
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    24
    'src/mercurialserver/refreshauth.py',
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    25
    'src/mercurialserver/ruleset.py')
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    26
installFiles(dest + '/init',
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    27
    'src/init/hginit',
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    28
    'src/init/hgadmin-hgrc')
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    29
installFiles('/etc/mercurial-server',
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    30
    'src/init/conf/remote-hgrc',
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    31
    'src/init/conf/access.conf')
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    32
installFiles('/etc/mercurial-server/keys/root')
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    33
installFiles('/etc/mercurial-server/keys/users')
27
ec31ba248edd Installer to set things up automatically
Paul Crowley <paul@ciphergoth.org>
parents:
diff changeset
    34
80
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    35
def becomeFunc(u):
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    36
    p = pwd.getpwnam(u)
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    37
    def become():
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    38
        os.setgid(p.pw_gid)
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    39
        os.setegid(p.pw_gid)
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    40
        os.setuid(p.pw_uid)
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    41
        os.seteuid(p.pw_uid)
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    42
    return become
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    43
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    44
try:
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    45
   pwd.getpwnam('hg')
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    46
except KeyError:
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    47
    subprocess.check_call(
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    48
        "adduser --system --shell /bin/sh --group --disabled-password".split() + 
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    49
        ["--gecos", "Mercurial repositories", "hg"])
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    50
        
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    51
    subprocess.check_call([dest + '/init/hginit'], preexec_fn = becomeFunc('hg'))
fcb20d7593e6 Rewrite install script in Python
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    52