Search code examples
pythonsystemdscons

scons uninstall runs Substfile


I have created the SConstruct to install the systemd user services but when I try to scons uninstall the temporary services files are creates which should not happen.

import os

PATH_WD = os.path.abspath(os.curdir)

env = Environment(
    SUBSTFILESUFFIX = '.service',
    SUBST_DICT      = { '{{PATH_ROOT}}' : os.path.dirname(PATH_WD) },
    ENV             = {
        'DBUS_SESSION_BUS_ADDRESS' : os.environ['DBUS_SESSION_BUS_ADDRESS'],
        'XDG_RUNTIME_DIR'          : os.environ['XDG_RUNTIME_DIR']
    }
)

INSTALLED = env.Install(
    target = os.path.expanduser('~/.config/systemd/user/'),
    source = [
        env.Substfile('service1'),
        env.Substfile('service2'),
    ]
)
env.AddPostAction(INSTALLED, env.Action('systemctl --user daemon-reload'))

Alias('install', INSTALLED)

NoClean(INSTALLED)

Command('uninstall', INSTALLED, Delete(INSTALLED))

Default('install')


Solution

  • Second try..

    Here's a trivial example which should work for you..

    env=Environment()
    
    prog=env.Program('main.c')
    Default(prog)
    
    installed_prog = env.Install('install_dir', prog)
    Alias('install', installed_prog)
    NoClean(installed_prog)
    
    # You don't have to specify targets to Alias.. so it won't 
    # try to build those before executing the Action 
    Alias('uninstall', action=Delete(installed_prog))
    AlwaysBuild('uninstall')