Skip to content

Commit

Permalink
Azure pipelines ci (#202)
Browse files Browse the repository at this point in the history
* add docker file and sconstruct

* this should work in ci

* remove branch name
  • Loading branch information
pd0wm authored Dec 3, 2019
1 parent bce9a2e commit a265d35
Show file tree
Hide file tree
Showing 5 changed files with 145 additions and 4 deletions.
24 changes: 24 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from ubuntu:16.04

RUN apt-get update && apt-get install -y libzmq3-dev clang wget git autoconf libtool curl make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl

RUN curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
ENV PATH="/root/.pyenv/bin:/root/.pyenv/shims:${PATH}"
RUN pyenv install 3.7.3
RUN pyenv global 3.7.3
RUN pyenv rehash
RUN pip3 install pyyaml==5.1.2 Cython==0.29.14 scons==3.1.1 pycapnp==0.6.4 Jinja2==2.10.3


ENV PYTHONPATH=/project

# TODO: Add tag to cereal
RUN git clone https://github.com/commaai/cereal.git /project/cereal
RUN /project/cereal/install_capnp.sh

WORKDIR /project

COPY SConstruct .
COPY . /project/opendbc

RUN scons -c && scons -j$(nproc)
57 changes: 57 additions & 0 deletions SConstruct
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import os
import subprocess

zmq = 'zmq'
arch = subprocess.check_output(["uname", "-m"], encoding='utf8').rstrip()

cereal_dir = Dir('.')

cpppath = [
'#',
'#cereal',
"#cereal/messaging",
"#opendbc/can",
'/usr/lib/include',
]

AddOption('--test',
action='store_true',
help='build test files')

AddOption('--asan',
action='store_true',
help='turn on ASAN')

ccflags_asan = ["-fsanitize=address", "-fno-omit-frame-pointer"] if GetOption('asan') else []
ldflags_asan = ["-fsanitize=address"] if GetOption('asan') else []

env = Environment(
ENV=os.environ,
CC='clang',
CXX='clang++',
CCFLAGS=[
"-g",
"-fPIC",
"-O2",
"-Werror=implicit-function-declaration",
"-Werror=incompatible-pointer-types",
"-Werror=int-conversion",
"-Werror=return-type",
"-Werror=format-extra-args",
] + ccflags_asan,
LDFLAGS=ldflags_asan,
LINKFLAGS=ldflags_asan,

CFLAGS="-std=gnu11",
CXXFLAGS="-std=c++14",
CPPPATH=cpppath,
)

Export('env', 'zmq', 'arch')

cereal = [File('#cereal/libcereal.a')]
messaging = [File('#cereal/libmessaging.a')]
Export('cereal', 'messaging')

SConscript(['cereal/SConscript'])
SConscript(['opendbc/can/SConscript'])
12 changes: 12 additions & 0 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
pr: none

pool:
vmImage: 'ubuntu-16.04'

steps:
- script: |
set -e
docker build -t opendbc .
docker run opendbc bash -c "python -m unittest discover opendbc"
displayName: 'Run Tests'
28 changes: 26 additions & 2 deletions can/packer_pyx_setup.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,35 @@
import os
import sysconfig
import subprocess
from distutils.core import Extension, setup # pylint: disable=import-error,no-name-in-module

from Cython.Build import cythonize
from Cython.Distutils import build_ext

BASEDIR = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../"))


def get_ext_filename_without_platform_suffix(filename):
name, ext = os.path.splitext(filename)
ext_suffix = sysconfig.get_config_var('EXT_SUFFIX')

if ext_suffix == ext:
return filename

ext_suffix = ext_suffix.replace(ext, '')
idx = name.find(ext_suffix)

if idx == -1:
return filename
else:
return name[:idx] + ext


class BuildExtWithoutPlatformSuffix(build_ext):
def get_ext_filename(self, ext_name):
filename = super().get_ext_filename(ext_name)
return get_ext_filename_without_platform_suffix(filename)

from common.basedir import BASEDIR
from common.cython_hacks import BuildExtWithoutPlatformSuffix

sourcefiles = ['packer_pyx.pyx']
extra_compile_args = ["-std=c++11"]
Expand Down
28 changes: 26 additions & 2 deletions can/parser_pyx_setup.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,35 @@
import os
import subprocess
import sysconfig
from distutils.core import Extension, setup # pylint: disable=import-error,no-name-in-module

from Cython.Build import cythonize
from Cython.Distutils import build_ext

BASEDIR = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../"))


def get_ext_filename_without_platform_suffix(filename):
name, ext = os.path.splitext(filename)
ext_suffix = sysconfig.get_config_var('EXT_SUFFIX')

if ext_suffix == ext:
return filename

ext_suffix = ext_suffix.replace(ext, '')
idx = name.find(ext_suffix)

if idx == -1:
return filename
else:
return name[:idx] + ext


class BuildExtWithoutPlatformSuffix(build_ext):
def get_ext_filename(self, ext_name):
filename = super().get_ext_filename(ext_name)
return get_ext_filename_without_platform_suffix(filename)

from common.basedir import BASEDIR
from common.cython_hacks import BuildExtWithoutPlatformSuffix

sourcefiles = ['parser_pyx.pyx']
extra_compile_args = ["-std=c++11"]
Expand Down

0 comments on commit a265d35

Please sign in to comment.