Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clang support #83

Closed
wants to merge 1 commit into from
Closed

Clang support #83

wants to merge 1 commit into from

Conversation

timkpaine
Copy link
Member

@timkpaine timkpaine commented Feb 14, 2024

This PR adds clang support. Right now it does so by:

  • adding template<> blocks that g++ is comfortable eliding
  • adding missing constexpr to TypeTraits that g++ is comfortable eliding
  • tweaking vector<bool> specialization on clang compiler to rely on boost::containers::vector which avoids bitwise specialization that makes life annoying
  • a bunch of miscellaneous fixes to warnings that g++ does not notice
    • misnamed header guards
    • missing overrides

The mac builds have both been ported to clang++ and the builds are passing (tests passing locally).

Unblocks #10 and #32
Full Build: https://github.com/Point72/csp/actions/runs/7938321028

TODO

  • remove arrow Mac guard in parquet adapter / tests
  • double check accessing bool fields from structs as ts
  • (maybe) consolidate Mac builds now that we can cross-compile to arm64
  • (maybe) build universal2 binaries
  • update developer docs to remove extra mac steps for g++

@timkpaine timkpaine added lang: c++ Issues and PRs related to the C++ codebase tag: wip PRs that are a work in progress - converted to drafts labels Feb 14, 2024
@timkpaine timkpaine force-pushed the tkp/clang branch 2 times, most recently from 102f847 to 6db7b18 Compare February 16, 2024 18:50
@timkpaine timkpaine marked this pull request as ready for review February 16, 2024 20:09
@timkpaine timkpaine changed the title [WIP] clang support Clang support Feb 16, 2024
@timkpaine timkpaine removed the tag: wip PRs that are a work in progress - converted to drafts label Feb 20, 2024
@ngoldbaum
Copy link
Collaborator

tweaking vector specialization on clang compiler to rely on boost::containers::vector which avoids bitwise specialization that makes life annoying

Not sure if there are performance reasons to favor STL vectors on gcc, but otherwise would it make sense to use boost on gcc too? Mostly to avoid the ifdefs.

@ngoldbaum
Copy link
Collaborator

ngoldbaum commented Feb 21, 2024

I don’t think universal2 wheels are particularly useful. It would be nice if we could cross-compile x86_64 wheels on arm but the docs only talk about cross-compiling for arm on intel: https://cibuildwheel.readthedocs.io/en/stable/faq/#how-to-cross-compile

@robambalu
Copy link
Collaborator

What’s the best way to test out building with clang. these changes seem more intrusive than need be

@timkpaine
Copy link
Member Author

I don’t think universal2 wheels are particularly useful. It would be nice if we could cross-compile x86_64 wheels on arm but the docs only talk about cross-compiling for arm on intel: https://cibuildwheel.readthedocs.io/en/stable/faq/#how-to-cross-compile

We’ll likely cross-compile to arm from x86 as the x86 mac runners are more plentiful on github actions than the arm runners (at least as of right now)

@timkpaine timkpaine added the type: enhancement Issues and PRs related to improvements to existing features label Feb 21, 2024
@ngoldbaum
Copy link
Collaborator

What’s the best way to test out building with clang.

I looked at building with clang on RHEL 7 today. It looks like all you need to do on top of the conda-forge environment created from dev-environment.yml on the wiki is install clang from conda-forge:

$ conda activate csp
$ mamba install clangdev

Then build csp with CC and CXX set appropriately:

$ CC=clang CXX=clang++ make build
$ python -m pip install -e . --no-deps --no-build-isolation

I tried first with the clang-toolset-7 redhat package, but that doesn't work because of lack of support for some gcc compiler flags (-fno-plt in particular). Thankfully there's a linux clang package on conda-forge that seems to work. It's not exactly the same clang version as on MacOS but you should be able to make headway on slimming down this PR at least and hopefully deal with any differences on MacOS via CI output.

There are some compiler warnings and for whatever reason TestEngine.test_stop_time hangs, but it looks like things are mostly working on this setup.

@robambalu
Copy link
Collaborator

robambalu commented Mar 1, 2024 via email

@ngoldbaum
Copy link
Collaborator

ngoldbaum commented Mar 1, 2024

Hmm, I think that might be provided by libclang-cpp. Here's my full environment list, you can check conda list to see if there's anything different on your setup.

# packages in environment at /home/vagrant/github/csp_venv/envs/csp:
--
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
anyio                     4.3.0              pyhd8ed1ab_0    conda-forge
atk-1.0                   2.36.0               h3371d22_4    conda-forge
aws-c-auth                0.7.16               h79b3bcb_6    conda-forge
aws-c-cal                 0.6.10               hb29e0c7_1    conda-forge
aws-c-common              0.9.13               hd590300_0    conda-forge
aws-c-compression         0.2.18               hecc5fa9_1    conda-forge
aws-c-event-stream        0.4.2                hf9b2f7b_4    conda-forge
aws-c-http                0.8.1                h5d7533a_5    conda-forge
aws-c-io                  0.14.5               h50678d4_1    conda-forge
aws-c-mqtt                0.10.2               hf479d2b_4    conda-forge
aws-c-s3                  0.5.2                h4ad9680_0    conda-forge
aws-c-sdkutils            0.1.15               hecc5fa9_1    conda-forge
aws-checksums             0.1.18               hecc5fa9_1    conda-forge
aws-crt-cpp               0.26.2               h19f5d62_7    conda-forge
aws-sdk-cpp               1.11.267             h5606698_1    conda-forge
binutils                  2.40                 hdd6e379_0    conda-forge
binutils_impl_linux-64    2.40                 hf600244_0    conda-forge
binutils_linux-64         2.40                 hbdbef99_2    conda-forge
bison                     3.8.2                h59595ed_0    conda-forge
brotli-python             1.1.0           py311hb755f60_1    conda-forge
bump2version              1.0.1              pyh9f0ad1d_0    conda-forge
bzip2                     1.0.8                hd590300_5    conda-forge
c-ares                    1.27.0               hd590300_0    conda-forge
c-compiler                1.7.0                hd590300_0    conda-forge
ca-certificates           2024.2.2             hbcca054_0    conda-forge
cairo                     1.16.0            ha61ee94_1014    conda-forge
certifi                   2024.2.2           pyhd8ed1ab_0    conda-forge
cffi                      1.16.0          py311hb3a22ac_0    conda-forge
charset-normalizer        3.3.2              pyhd8ed1ab_0    conda-forge
clang                     14.0.6               ha770c72_1    conda-forge
clang-14                  14.0.6          default_h7634d5b_1    conda-forge
clang-format              14.0.6          default_h7634d5b_1    conda-forge
clang-format-14           14.0.6          default_h7634d5b_1    conda-forge
clang-tools               14.0.6          default_h7634d5b_1    conda-forge
clangdev                  14.0.6          default_h7634d5b_1    conda-forge
clangxx                   14.0.6          default_h1e1816b_1    conda-forge
cmake                     3.28.3               hcfe8598_0    conda-forge
cmarkgfm                  0.8.0           py311h459d7ec_3    conda-forge
colorama                  0.4.6              pyhd8ed1ab_0    conda-forge
compilers                 1.7.0                ha770c72_0    conda-forge
coverage                  7.4.3           py311h459d7ec_1    conda-forge
cryptography              42.0.5          py311h63ff55d_0    conda-forge
csp                       0.1.0                    pypi_0    pypi
curl                      8.5.0                hca28451_0    conda-forge
cxx-compiler              1.7.0                h00ab1b0_0    conda-forge
cyrus-sasl                2.1.27               h54b06d7_7    conda-forge
dbus                      1.13.6               h5008d03_3    conda-forge
distro                    1.9.0              pyhd8ed1ab_0    conda-forge
docutils                  0.20.1          py311h38be061_3    conda-forge
exceptiongroup            1.2.0              pyhd8ed1ab_2    conda-forge
expat                     2.5.0                hcb278e6_1    conda-forge
flex                      2.6.4             h58526e2_1004    conda-forge
font-ttf-dejavu-sans-mono 2.37                 hab24e00_0    conda-forge
font-ttf-inconsolata      3.000                h77eed37_0    conda-forge
font-ttf-source-code-pro  2.038                h77eed37_0    conda-forge
font-ttf-ubuntu           0.83                 h77eed37_1    conda-forge
fontconfig                2.14.2               h14ed4e7_0    conda-forge
fonts-conda-ecosystem     1                             0    conda-forge
fonts-conda-forge         1                             0    conda-forge
fortran-compiler          1.7.0                heb67821_0    conda-forge
freetype                  2.12.1               h267a509_2    conda-forge
fribidi                   1.0.10               h36c2ea0_0    conda-forge
gcc                       12.3.0               h8d2909c_2    conda-forge
gcc_impl_linux-64         12.3.0               he2b93b0_5    conda-forge
gcc_linux-64              12.3.0               h76fc315_2    conda-forge
gdk-pixbuf                2.42.8               hff1cb4f_1    conda-forge
gettext                   0.21.1               h27087fc_0    conda-forge
gflags                    2.2.2             he1b5a44_1004    conda-forge
gfortran                  12.3.0               h499e0f7_2    conda-forge
gfortran_impl_linux-64    12.3.0               hfcedea8_5    conda-forge
gfortran_linux-64         12.3.0               h7fe76b4_2    conda-forge
giflib                    5.2.1                h0b41bf4_3    conda-forge
git                       2.44.0          pl5321h709897a_0    conda-forge
glog                      0.7.0                hed5481d_0    conda-forge
graphite2                 1.3.13            h58526e2_1001    conda-forge
graphviz                  6.0.1                h5abf519_0    conda-forge
greenlet                  3.0.3           py311hb755f60_0    conda-forge
gtk2                      2.24.33              h90689f9_2    conda-forge
gts                       0.7.6                h64030ff_2    conda-forge
gxx                       12.3.0               h8d2909c_2    conda-forge
gxx_impl_linux-64         12.3.0               he2b93b0_5    conda-forge
gxx_linux-64              12.3.0               h8a814eb_2    conda-forge
h11                       0.14.0             pyhd8ed1ab_0    conda-forge
h2                        4.1.0              pyhd8ed1ab_0    conda-forge
harfbuzz                  5.2.0                hf9f4e7c_0    conda-forge
hpack                     4.0.0              pyh9f0ad1d_0    conda-forge
httpcore                  1.0.4              pyhd8ed1ab_0    conda-forge
httpx                     0.27.0             pyhd8ed1ab_0    conda-forge
hyperframe                6.0.1              pyhd8ed1ab_0    conda-forge
icu                       70.1                 h27087fc_0    conda-forge
idna                      3.6                pyhd8ed1ab_0    conda-forge
importlib-metadata        7.0.1              pyha770c72_0    conda-forge
importlib_metadata        7.0.1                hd8ed1ab_0    conda-forge
iniconfig                 2.0.0              pyhd8ed1ab_0    conda-forge
isort                     5.13.2             pyhd8ed1ab_0    conda-forge
jaraco.classes            3.3.1              pyhd8ed1ab_0    conda-forge
jeepney                   0.8.0              pyhd8ed1ab_0    conda-forge
jpeg                      9e                   h166bdaf_2    conda-forge
kernel-headers_linux-64   2.6.32              he073ed8_17    conda-forge
keyring                   24.3.1          py311h38be061_0    conda-forge
keyutils                  1.6.1                h166bdaf_0    conda-forge
krb5                      1.21.2               h659d440_0    conda-forge
lcms2                     2.14                 h6ed2654_0    conda-forge
ld_impl_linux-64          2.40                 h41732ed_0    conda-forge
lerc                      4.0.0                h27087fc_0    conda-forge
libabseil                 20240116.1      cxx17_h59595ed_2    conda-forge
libarrow                  14.0.2          h5001e6d_10_cpu    conda-forge
libarrow-acero            14.0.2          h59595ed_10_cpu    conda-forge
libarrow-dataset          14.0.2          h59595ed_10_cpu    conda-forge
libarrow-flight           14.0.2          hf334d8d_10_cpu    conda-forge
libarrow-flight-sql       14.0.2          h469e5c9_10_cpu    conda-forge
libarrow-gandiva          14.0.2          h3f306ff_10_cpu    conda-forge
libarrow-substrait        14.0.2          h469e5c9_10_cpu    conda-forge
libblas                   3.9.0           21_linux64_openblas    conda-forge
libbrotlicommon           1.1.0                hd590300_1    conda-forge
libbrotlidec              1.1.0                hd590300_1    conda-forge
libbrotlienc              1.1.0                hd590300_1    conda-forge
libcblas                  3.9.0           21_linux64_openblas    conda-forge
libclang                  14.0.6          default_h7634d5b_1    conda-forge
libclang-cpp              14.0.6          default_h7634d5b_1    conda-forge
libclang-cpp14            14.0.6          default_h7634d5b_1    conda-forge
libclang13                14.0.6          default_h9986a30_1    conda-forge
libcrc32c                 1.1.2                h9c3ff4c_0    conda-forge
libcurl                   8.5.0                hca28451_0    conda-forge
libdeflate                1.14                 h166bdaf_0    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libev                     4.33                 hd590300_2    conda-forge
libevent                  2.1.12               hf998b51_1    conda-forge
libexpat                  2.5.0                hcb278e6_1    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libgcc-devel_linux-64     12.3.0             h8bca6fd_105    conda-forge
libgcc-ng                 13.2.0               h807b86a_5    conda-forge
libgd                     2.3.3                h18fbbfe_3    conda-forge
libgfortran-ng            13.2.0               h69a702a_5    conda-forge
libgfortran5              13.2.0               ha4646dd_5    conda-forge
libglib                   2.72.1               h2d90d5f_0    conda-forge
libgomp                   13.2.0               h807b86a_5    conda-forge
libgoogle-cloud           2.21.0               h72bcb37_2    conda-forge
libgoogle-cloud-storage   2.21.0               hc7a4891_2    conda-forge
libgrpc                   1.61.1               h42401df_1    conda-forge
libiconv                  1.17                 hd590300_2    conda-forge
libjpeg-turbo             2.1.4                h166bdaf_0    conda-forge
liblapack                 3.9.0           21_linux64_openblas    conda-forge
libllvm14                 14.0.6               hcd5def8_4    conda-forge
libllvm15                 15.0.7               hadd5161_1    conda-forge
libllvm16                 16.0.1               hadd5161_0    conda-forge
libnghttp2                1.58.0               h47da74e_1    conda-forge
libnl                     3.9.0                hd590300_0    conda-forge
libnsl                    2.0.1                hd590300_0    conda-forge
libntlm                   1.4               h7f98852_1002    conda-forge
libnuma                   2.0.16               h0b41bf4_1    conda-forge
libopenblas               0.3.26          pthreads_h413a1c8_0    conda-forge
libparquet                14.0.2          h352af49_10_cpu    conda-forge
libpng                    1.6.43               h2797004_0    conda-forge
libprotobuf               4.25.2               h08a7969_1    conda-forge
libre2-11                 2023.09.01           h5a48ba9_2    conda-forge
librsvg                   2.54.4               h7abd40a_0    conda-forge
libsanitizer              12.3.0               h0f45ef3_5    conda-forge
libsqlite                 3.45.1               h2797004_0    conda-forge
libssh2                   1.11.0               h0841786_0    conda-forge
libstdcxx-devel_linux-64  12.3.0             h8bca6fd_105    conda-forge
libstdcxx-ng              13.2.0               h7e041cc_5    conda-forge
libthrift                 0.19.0               hb90f79a_1    conda-forge
libtiff                   4.4.0                h82bc61c_5    conda-forge
libtool                   2.4.7                h27087fc_0    conda-forge
libutf8proc               2.8.0                h166bdaf_0    conda-forge
libuuid                   2.38.1               h0b41bf4_0    conda-forge
libuv                     1.47.0               hd590300_0    conda-forge
libwebp                   1.2.4                h522a892_0    conda-forge
libwebp-base              1.2.4                h166bdaf_0    conda-forge
libxcb                    1.13              h7f98852_1004    conda-forge
libxcrypt                 4.4.36               hd590300_1    conda-forge
libxml2                   2.10.3               hca2bb57_4    conda-forge
libzlib                   1.2.13               hd590300_5    conda-forge
llvm-tools                14.0.6               hcd5def8_4    conda-forge
llvmdev                   14.0.6               hcd5def8_4    conda-forge
lz4-c                     1.9.4                hcb278e6_0    conda-forge
m4                        1.4.18            h516909a_1001    conda-forge
markdown-it-py            3.0.0              pyhd8ed1ab_0    conda-forge
mdurl                     0.1.2              pyhd8ed1ab_0    conda-forge
more-itertools            10.2.0             pyhd8ed1ab_0    conda-forge
ncurses                   6.4                  h59595ed_2    conda-forge
nh3                       0.2.15          py311h46250e7_0    conda-forge
ninja                     1.11.1               h924138e_0    conda-forge
numpy                     1.26.4          py311h64a7726_0    conda-forge
openjpeg                  2.5.0                h7d73246_1    conda-forge
openssl                   3.2.1                hd590300_0    conda-forge
orc                       1.9.2                h00e871a_2    conda-forge
packaging                 23.2               pyhd8ed1ab_0    conda-forge
pandas                    2.2.1           py311h320fe9a_0    conda-forge
pango                     1.50.10              hc4f8a73_0    conda-forge
pcre                      8.45                 h9c3ff4c_0    conda-forge
pcre2                     10.43                hcad00b1_0    conda-forge
perl                      5.32.1          7_hd590300_perl5    conda-forge
perl-ipc-system-simple    1.30            pl5321ha770c72_0    conda-forge
pillow                    9.2.0           py311h9461556_3    conda-forge
pip                       24.0               pyhd8ed1ab_0    conda-forge
pixman                    0.43.2               h59595ed_0    conda-forge
pkginfo                   1.9.6              pyhd8ed1ab_0    conda-forge
pluggy                    1.4.0              pyhd8ed1ab_0    conda-forge
polars                    0.20.13         py311h2bb2bab_0    conda-forge
psutil                    5.9.8           py311h459d7ec_0    conda-forge
pthread-stubs             0.4               h36c2ea0_1001    conda-forge
pyarrow                   14.0.2          py311h39c9aba_10_cpu    conda-forge
pycparser                 2.21               pyhd8ed1ab_0    conda-forge
pygments                  2.17.2             pyhd8ed1ab_0    conda-forge
pysocks                   1.7.1              pyha2e5f31_6    conda-forge
pytest                    8.0.2              pyhd8ed1ab_0    conda-forge
pytest-asyncio            0.23.5             pyhd8ed1ab_0    conda-forge
pytest-cov                4.1.0              pyhd8ed1ab_0    conda-forge
pytest-sugar              1.0.0              pyhd8ed1ab_0    conda-forge
python                    3.11.8          hab00c5b_0_cpython    conda-forge
python-dateutil           2.9.0              pyhd8ed1ab_0    conda-forge
python-graphviz           0.20.1             pyh22cad53_0    conda-forge
python-rapidjson          1.16            py311hb755f60_0    conda-forge
python-tzdata             2024.1             pyhd8ed1ab_0    conda-forge
python_abi                3.11                    4_cp311    conda-forge
pytz                      2024.1             pyhd8ed1ab_0    conda-forge
rdma-core                 50.0                 hd3aeb46_0    conda-forge
re2                       2023.09.01           h7f4b329_2    conda-forge
readline                  8.2                  h8228510_1    conda-forge
readme_renderer           42.0               pyhd8ed1ab_0    conda-forge
requests                  2.31.0             pyhd8ed1ab_0    conda-forge
requests-toolbelt         1.0.0              pyhd8ed1ab_0    conda-forge
rfc3986                   2.0.0              pyhd8ed1ab_0    conda-forge
rhash                     1.4.4                hd590300_0    conda-forge
rich                      13.7.1             pyhd8ed1ab_0    conda-forge
ruamel.yaml               0.18.6          py311h459d7ec_0    conda-forge
ruamel.yaml.clib          0.2.8           py311h459d7ec_0    conda-forge
ruff                      0.3.0           py311h7145743_0    conda-forge
s2n                       1.4.5                h06160fa_0    conda-forge
scikit-build              0.17.6             pyh4af843d_0    conda-forge
secretstorage             3.3.3           py311h38be061_2    conda-forge
setuptools                69.1.1             pyhd8ed1ab_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
snappy                    1.1.10               h9fff704_0    conda-forge
sniffio                   1.3.1              pyhd8ed1ab_0    conda-forge
sqlalchemy                2.0.27          py311h459d7ec_0    conda-forge
sysroot_linux-64          2.12                he073ed8_17    conda-forge
tar                       1.34                 hb2e2bae_1    conda-forge
termcolor                 2.4.0              pyhd8ed1ab_0    conda-forge
tk                        8.6.13          noxft_h4845f30_101    conda-forge
toml                      0.10.2             pyhd8ed1ab_0    conda-forge
tomli                     2.0.1              pyhd8ed1ab_0    conda-forge
tornado                   6.4             py311h459d7ec_0    conda-forge
twine                     5.0.0              pyhd8ed1ab_0    conda-forge
typing-extensions         4.10.0               hd8ed1ab_0    conda-forge
typing_extensions         4.10.0             pyha770c72_0    conda-forge
tzdata                    2024a                h0c530f3_0    conda-forge
ucx                       1.15.0               h75e419f_3    conda-forge
unzip                     6.0                  h7f98852_3    conda-forge
urllib3                   2.2.1              pyhd8ed1ab_0    conda-forge
wheel                     0.42.0             pyhd8ed1ab_0    conda-forge
xorg-kbproto              1.0.7             h7f98852_1002    conda-forge
xorg-libice               1.1.1                hd590300_0    conda-forge
xorg-libsm                1.2.4                h7391055_0    conda-forge
xorg-libx11               1.8.4                h0b41bf4_0    conda-forge
xorg-libxau               1.0.11               hd590300_0    conda-forge
xorg-libxdmcp             1.1.3                h7f98852_0    conda-forge
xorg-libxext              1.3.4                h0b41bf4_2    conda-forge
xorg-libxrender           0.9.10            h7f98852_1003    conda-forge
xorg-renderproto          0.11.1            h7f98852_1002    conda-forge
xorg-xextproto            7.3.0             h0b41bf4_1003    conda-forge
xorg-xproto               7.0.31            h7f98852_1007    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
zip                       3.0                  hd590300_3    conda-forge
zipp                      3.17.0             pyhd8ed1ab_0    conda-forge
zlib                      1.2.13               hd590300_5    conda-forge
zstd                      1.5.5                hfc55251_0    conda-forge


@robambalu
Copy link
Collaborator

robambalu commented Mar 1, 2024 via email

@ngoldbaum
Copy link
Collaborator

Sorry, I snuck in an edit, you probably need libclang-cpp, which has libc++ and that header.

I'm a little confused why mamba install clangdev didn't install that package though. It does over here.

@robambalu
Copy link
Collaborator

robambalu commented Mar 1, 2024 via email

@robambalu
Copy link
Collaborator

robambalu commented Mar 1, 2024 via email

@ngoldbaum
Copy link
Collaborator

Somehow when I did this earlier I ended up with clang 14, which doesn't seem to hit the issue you're hitting. You could try downgrading clangdev with mamba uninstall clangdev then mamba install clangdev=14.0.6, which will get you the same version I had earlier and seems to be able to compile boost-regex and all the other dependencies.

When I created a new environment from scratch I ended up with clang 17 and hit the same error you did compiling boost-regex. I'm have no idea why clang 14 seems to work but clang 17 doesn't.

Another thing we could try is a chimera linux or FreeBSD docker image or VM image - both systems are built on LLVM so we won't hit any issues from mixing LLVM and GCC.

@robambalu
Copy link
Collaborator

robambalu commented Mar 3, 2024 via email

robambalu added a commit that referenced this pull request Mar 4, 2024
robambalu added a commit that referenced this pull request Mar 4, 2024
@timkpaine timkpaine closed this Mar 13, 2024
@timkpaine timkpaine deleted the tkp/clang branch March 13, 2024 23:16
robambalu added a commit that referenced this pull request Mar 15, 2024
Signed-off-by: Rob Ambalu <[email protected]>
robambalu added a commit that referenced this pull request Mar 27, 2024
* fixes #83 - code updates to support clang compilation / cleaned up some clang warnings

Signed-off-by: Ambalu, Robert <[email protected]>

* fixes #132 - final touches, all tests pass.  Note this had to comment out the --arch options in CMakeLists.txt, not sure what the implications are

Signed-off-by: Rob Ambalu <[email protected]>

* fixes #132 - attempt to kick off macos build

Signed-off-by: Rob Ambalu <[email protected]>

* unset CC in mac cibuildwheel setup

Signed-off-by: Nathan Goldbaum <[email protected]>

* Add support for mac conda builds

Signed-off-by: Nathan Goldbaum <[email protected]>

* Update docs for mac builds

Signed-off-by: Nathan Goldbaum <[email protected]>

* attempt to fix macos-12 conda build

Signed-off-by: Nathan Goldbaum <[email protected]>

* one more try for intel mac support

Signed-off-by: Nathan Goldbaum <[email protected]>

* reduce length of timeout for test_threaded_run

Signed-off-by: Nathan Goldbaum <[email protected]>

* make this test more meaningful now that it has a shorter timeout

Signed-off-by: Nathan Goldbaum <[email protected]>

* CMakeLists.txt - attempt tp align RPATH on linux, drop ../lib

Signed-off-by: Rob Ambalu <[email protected]>

* #132 temporarily add some debug logging to threaded engine to try to figure out why it fails on GH

Signed-off-by: Rob Ambalu <[email protected]>

* #132 fix lint for test logging

Signed-off-by: Rob Ambalu <[email protected]>

* #132 enable stdout logging for tests, revert test_engine back to old timing

Signed-off-by: Rob Ambalu <[email protected]>

* #132 - next atempt

Signed-off-by: Rob Ambalu <[email protected]>

* #132 - next attempt

Signed-off-by: Rob Ambalu <[email protected]>

* #132 - next attempt

Signed-off-by: Rob Ambalu <[email protected]>

* fixes #132 - Fix race condition exposed in macos build where push events can be deferred indefinitely if timer executes before event ( wait will keep waiting until max time, even if an event is pending )
Simplify QueueWaiter ( remove it entirely ) and move condvar/mutex/blocking logic directly into SRMWLockFreeQueue so that we can check on m_head directly.
Revert all intermediate changes that were committed for testing / tracking down this issue

Signed-off-by: Rob Ambalu <[email protected]>

* fixes #132 - undo intrusive LFQueue changes ( for now ), simplify the fix and attack the queue issue properly another day.  fix cpp time test

Signed-off-by: Rob Ambalu <[email protected]>

* fixes #132 - fix comment typo

Signed-off-by: Rob Ambalu <[email protected]>

* clean up ci/cd code and ensure mac tests run

Signed-off-by: Tim Paine <[email protected]>

---------

Signed-off-by: Ambalu, Robert <[email protected]>
Signed-off-by: Rob Ambalu <[email protected]>
Signed-off-by: Rob Ambalu <[email protected]>
Signed-off-by: Nathan Goldbaum <[email protected]>
Signed-off-by: Tim Paine <[email protected]>
Co-authored-by: Nathan Goldbaum <[email protected]>
Co-authored-by: Tim Paine <[email protected]>
Co-authored-by: Tim Paine <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lang: c++ Issues and PRs related to the C++ codebase type: enhancement Issues and PRs related to improvements to existing features
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants