blob: 1be94980e88678a8862ac268174da8b12d514d31 [file] [log] [blame]
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
from buildbot.interfaces import IRenderable
from buildbot.process.properties import WithProperties
from zope.interface import implements
class InterpolateToNativePath(WithProperties):
"""
This is a marker class, used to indicate that we
want to interpolate build properties as a paths with
the correct buildslave path separator.
"""
implements(IRenderable)
compare_attrs = ('fmtstring', 'args')
def __init__(self, fmtstring, *args, **lambda_subs):
WithProperties.__init__(self, fmtstring, *args, **lambda_subs)
def getRenderingFor(self, build):
# Upcall the base class first.
p = WithProperties.getRenderingFor(self, build)
# Then we need to normalize the path for
# watever is native on the buildslave.
# Note: Do not call normpath here, as it could
# change the path meaning if links used.
slave = build.build.slavebuilder.slave
return slave.path_module.normcase(p)
class InterpolateToPosixPath(WithProperties):
"""
This is a marker class, used to indicate that we
want to interpolate build properties as a paths with
POSIX path separator.
"""
implements(IRenderable)
compare_attrs = ('fmtstring', 'args')
def __init__(self, fmtstring, *args, **lambda_subs):
WithProperties.__init__(self, fmtstring, *args, **lambda_subs)
def getRenderingFor(self, build):
# Upcall the base class first.
p = WithProperties.getRenderingFor(self, build)
# Then we need to figure out the buildslave OS:
slave = build.build.slavebuilder.slave
if slave.slave_system == 'posix':
# Note: Do not call normpath here, as it could
# change the path meaning if links used.
p = slave.path_module.normcase(p)
elif slave.slave_system in ('win32', 'nt'):
# Preserve the case, only replace
# the path separator to the POSIX one.
p = p.replace('\\','/')
else:
# Return the string as is.
pass
return p