首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scons uninstall运行Substfile

scons uninstall运行Substfile
EN

Stack Overflow用户
提问于 2021-07-03 11:56:31
回答 2查看 67关注 0票数 0

我已经创建了用于安装systemd用户服务的SConstruct,但是当我尝试使用scons uninstall时,会创建临时服务文件,这是不应该发生的。

代码语言:javascript
复制
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')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-04 04:05:59

第二次尝试..

这里有一个很小的例子,它应该对你有效。

代码语言:javascript
复制
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')
票数 1
EN

Stack Overflow用户

发布于 2021-07-03 20:51:04

SCons构建器调用是节点之间关系的声明。通过调用Command构建器,您已经将目标"uninstall"与源INSTALLED关联起来。因此,为了“构建”这个目标,您需要源,而源是通过调用Install构建器返回的节点列表。因此,Install必须在uninstall发生之前发生。你有什么理由不想在这里使用SCons的干净功能吗?要查看这一点,请尝试:scons --tree=all,linedraw -n uninstall

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68233104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档