mesonbuild / meson-python

Meson PEP 517 Python build backend
https://mesonbuild.com/meson-python/
MIT License
126 stars 65 forks source link

Debug build type still produces optimized extensions #459

Closed WillAyd closed 1 year ago

WillAyd commented 1 year ago

When building pandas, if I specify a command like:

pip install -ve . --no-build-isolation --config-settings=builddir="debug" --config-settings=setup-args="-Dbuildtype=debug"

Shared libraries / extensions still get built with -O2. compile_commands.json confirms that while -O0 is passed in, it gets overridden later in the command:

  {
    "directory": "/home/willayd/clones/pandas/debug",
    "command": "/home/willayd/mambaforge/envs/pandas-dev/bin/x86_64-conda-linux-gnu-cc -Ipandas/_libs/tslibs/base.cpython-310-
x86_64-linux-gnu.so.p -Ipandas/_libs/tslibs -I../pandas/_libs/tslibs -I../../../mambaforge/envs/pandas-dev/lib/python3.10/site-packages
/numpy/core/include -I../pandas/_libs/include -I/home/willayd/mambaforge/envs/pandas-dev/include/python3.10 -fvisibility=hidden 
-fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -w -std=c99 -O0 -g -DNPY_NO_DEPRECATED_API=0 
-DNPY_TARGET_VERSION=NPY_1_21_API_VERSION -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong 
-fno-plt -O2 -ffunction-sections -pipe -isystem /home/willayd/mambaforge/envs/pandas-dev/include -DNDEBUG 
-D_FORTIFY_SOURCE=2 -O2 -isystem /home/willayd/mambaforge/envs/pandas-dev/include -fPIC -MD -MQ pandas/_libs/tslibs
/base.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_base.pyx.c.o -MF pandas/_libs/tslibs/base.cpython-
310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_base.pyx.c.o.d -o pandas/_libs/tslibs/base.cpython-310-x86_64-
linux-gnu.so.p/meson-generated_pandas__libs_tslibs_base.pyx.c.o -c pandas/_libs/tslibs/base.cpython-310-x86_64-linux-gnu.so.p
/pandas/_libs/tslibs/base.pyx.c",
    "file": "pandas/_libs/tslibs/base.cpython-310-x86_64-linux-gnu.so.p/pandas/_libs/tslibs/base.pyx.c",
    "output": "pandas/_libs/tslibs/base.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_base.pyx.c.o"
  },
dnicolodi commented 1 year ago

I cannot reproduce. Can you please provide a complete build log?

WillAyd commented 1 year ago

Are you asking for the complete compile_commands.json file or something else?

dnicolodi commented 1 year ago

I would like to see the output of the pip install -ve ... command. Also, did you previously use the same build directory with a different meson project configuration?

WillAyd commented 1 year ago

No reuse of the build directory. Here's the output

```sh $ rm -rf debug $ pip install -ve . --no-build-isolation --config-settings=builddir="debug" --config-settings=setup-args="-Dbuildtype=debug" Using pip 23.2.1 from /home/willayd/mambaforge/envs/pandas-dev/lib/python3.10/site-packages/pip (python 3.10) Obtaining file:///home/willayd/clones/pandas Running command Checking if build backend supports build_editable Checking if build backend supports build_editable ... done Running command Preparing editable metadata (pyproject.toml) + meson setup /home/willayd/clones/pandas /home/willayd/clones/pandas/debug -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md --vsenv -Dbuildtype=debug --native-file=/home/willayd/clones/pandas/debug/meson-python-native-file.ini The Meson build system Version: 1.0.1 Source dir: /home/willayd/clones/pandas Build dir: /home/willayd/clones/pandas/debug Build type: native build Project name: pandas Project version: 2.1.0rc0+165.gcea82a500d C compiler for the host machine: /home/willayd/mambaforge/envs/pandas-dev/bin/x86_64-conda-linux-gnu-cc (gcc 12.3.0 "x86_64-conda-linux-gnu-cc (conda-forge gcc 12.3.0-0) 12.3.0") C linker for the host machine: /home/willayd/mambaforge/envs/pandas-dev/bin/x86_64-conda-linux-gnu-cc ld.bfd 2.40 C++ compiler for the host machine: /home/willayd/mambaforge/envs/pandas-dev/bin/x86_64-conda-linux-gnu-c++ (gcc 12.3.0 "x86_64-conda-linux-gnu-c++ (conda-forge gcc 12.3.0-0) 12.3.0") C++ linker for the host machine: /home/willayd/mambaforge/envs/pandas-dev/bin/x86_64-conda-linux-gnu-c++ ld.bfd 2.40 Cython compiler for the host machine: cython (cython 0.29.33) Host machine cpu family: x86_64 Host machine cpu: x86_64 Program python found: YES (/home/willayd/mambaforge/envs/pandas-dev/bin/python3.10) Found pkg-config: /usr/bin/pkg-config (1.8.1) Build targets in project: 54 pandas 2.1.0rc0+165.gcea82a500d User defined options Native files: /home/willayd/clones/pandas/debug/meson-python-native-file.ini buildtype : debug b_ndebug : if-release b_vscrt : md Found ninja-1.11.1 at /home/willayd/mambaforge/envs/pandas-dev/bin/ninja + /home/willayd/mambaforge/envs/pandas-dev/bin/ninja [1/154] Generating pandas/_libs/index_class_helper_pxi with a custom command [2/154] Generating pandas/_libs/khash_primitive_helper_pxi with a custom command [3/154] Generating pandas/_libs/hashtable_func_helper_pxi with a custom command [4/154] Generating pandas/_libs/algos_take_helper_pxi with a custom command [5/154] Generating pandas/__init__.py with a custom command [6/154] Generating pandas/_libs/algos_common_helper_pxi with a custom command [7/154] Generating pandas/_libs/sparse_op_helper_pxi with a custom command [8/154] Generating pandas/_libs/hashtable_class_helper_pxi with a custom command [9/154] Generating pandas/_libs/intervaltree_helper_pxi with a custom command [10/154] Generating write_version_file with a custom command [11/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/base.pyx [12/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/ccalendar.pyx [13/154] Compiling C object pandas/_libs/tslibs/parsing.cpython-310-x86_64-linux-gnu.so.p/.._src_parser_tokenizer.c.o [14/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/dtypes.pyx [15/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/nattype.pyx [16/154] Compiling C object pandas/_libs/tslibs/base.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_base.pyx.c.o [17/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/np_datetime.pyx [18/154] Linking target pandas/_libs/tslibs/base.cpython-310-x86_64-linux-gnu.so [19/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/conversion.pyx [20/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/strptime.pyx [21/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/parsing.pyx [22/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/offsets.pyx [23/154] Compiling C object pandas/_libs/tslibs/ccalendar.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_ccalendar.pyx.c.o [24/154] Linking target pandas/_libs/tslibs/ccalendar.cpython-310-x86_64-linux-gnu.so [25/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/timestamps.pyx [26/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/timezones.pyx [27/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/fields.pyx [28/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/period.pyx [29/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/timedeltas.pyx [30/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/tzconversion.pyx [31/154] Compiling C object pandas/_libs/tslibs/np_datetime.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_np_datetime.pyx.c.o [32/154] Linking target pandas/_libs/tslibs/np_datetime.cpython-310-x86_64-linux-gnu.so [33/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslibs/vectorized.pyx [34/154] Compiling C object pandas/_libs/tslibs/dtypes.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_dtypes.pyx.c.o [35/154] Linking target pandas/_libs/tslibs/dtypes.cpython-310-x86_64-linux-gnu.so [36/154] Compiling C object pandas/_libs/tslibs/nattype.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_nattype.pyx.c.o [37/154] Linking target pandas/_libs/tslibs/nattype.cpython-310-x86_64-linux-gnu.so [38/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/arrays.pyx [39/154] Compiling C object pandas/_libs/tslibs/conversion.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_conversion.pyx.c.o [40/154] Linking target pandas/_libs/tslibs/conversion.cpython-310-x86_64-linux-gnu.so [41/154] Compiling C object pandas/_libs/arrays.cpython-310-x86_64-linux-gnu.so.p/src_vendored_nanoarrow.c.o [42/154] Compiling C object pandas/_libs/arrays.cpython-310-x86_64-linux-gnu.so.p/src_bitmask_algorithms.c.o [43/154] Compiling C object pandas/_libs/tslibs/timezones.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_timezones.pyx.c.o [44/154] Linking target pandas/_libs/tslibs/timezones.cpython-310-x86_64-linux-gnu.so [45/154] Compiling C object pandas/_libs/tslibs/vectorized.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_vectorized.pyx.c.o [46/154] Linking target pandas/_libs/tslibs/vectorized.cpython-310-x86_64-linux-gnu.so [47/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/hashing.pyx [48/154] Compiling C object pandas/_libs/tslibs/fields.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_fields.pyx.c.o [49/154] Linking target pandas/_libs/tslibs/fields.cpython-310-x86_64-linux-gnu.so [50/154] Compiling C object pandas/_libs/tslibs/tzconversion.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_tzconversion.pyx.c.o [51/154] Linking target pandas/_libs/tslibs/tzconversion.cpython-310-x86_64-linux-gnu.so [52/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/indexing.pyx [53/154] Compiling C object pandas/_libs/tslibs/parsing.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_parsing.pyx.c.o [54/154] Linking target pandas/_libs/tslibs/parsing.cpython-310-x86_64-linux-gnu.so [55/154] Compiling C object pandas/_libs/tslibs/strptime.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_strptime.pyx.c.o [56/154] Linking target pandas/_libs/tslibs/strptime.cpython-310-x86_64-linux-gnu.so [57/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/algos.pyx [58/154] Compiling C object pandas/_libs/indexing.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_indexing.pyx.c.o [59/154] Linking target pandas/_libs/indexing.cpython-310-x86_64-linux-gnu.so [60/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/index.pyx [61/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/internals.pyx [62/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/groupby.pyx [63/154] Compiling C object pandas/_libs/hashing.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_hashing.pyx.c.o [64/154] Linking target pandas/_libs/hashing.cpython-310-x86_64-linux-gnu.so [65/154] Compiling C object pandas/_libs/tslibs/period.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_period.pyx.c.o [66/154] Linking target pandas/_libs/tslibs/period.cpython-310-x86_64-linux-gnu.so [67/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/lib.pyx [68/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/hashtable.pyx [69/154] Compiling C object pandas/_libs/lib.cpython-310-x86_64-linux-gnu.so.p/src_parser_tokenizer.c.o [70/154] Compiling C object pandas/_libs/arrays.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_arrays.pyx.c.o [71/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/interval.pyx [72/154] Linking target pandas/_libs/arrays.cpython-310-x86_64-linux-gnu.so [73/154] Compiling C object pandas/_libs/pandas_datetime.cpython-310-x86_64-linux-gnu.so.p/src_vendored_numpy_datetime_np_datetime.c.o [74/154] Compiling C object pandas/_libs/pandas_datetime.cpython-310-x86_64-linux-gnu.so.p/src_datetime_date_conversions.c.o [75/154] Compiling C object pandas/_libs/tslibs/timestamps.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_timestamps.pyx.c.o [76/154] Linking target pandas/_libs/tslibs/timestamps.cpython-310-x86_64-linux-gnu.so [77/154] Compiling C object pandas/_libs/pandas_datetime.cpython-310-x86_64-linux-gnu.so.p/src_datetime_pd_datetime.c.o [78/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/missing.pyx [79/154] Compiling C object pandas/_libs/pandas_parser.cpython-310-x86_64-linux-gnu.so.p/src_parser_io.c.o [80/154] Compiling C object pandas/_libs/pandas_datetime.cpython-310-x86_64-linux-gnu.so.p/src_vendored_numpy_datetime_np_datetime_strings.c.o [81/154] Linking target pandas/_libs/pandas_datetime.cpython-310-x86_64-linux-gnu.so [82/154] Compiling C object pandas/_libs/pandas_parser.cpython-310-x86_64-linux-gnu.so.p/src_parser_pd_parser.c.o [83/154] Compiling C object pandas/_libs/pandas_parser.cpython-310-x86_64-linux-gnu.so.p/src_parser_tokenizer.c.o [84/154] Linking target pandas/_libs/pandas_parser.cpython-310-x86_64-linux-gnu.so [85/154] Compiling C object pandas/_libs/parsers.cpython-310-x86_64-linux-gnu.so.p/src_parser_io.c.o [86/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/join.pyx [87/154] Compiling C object pandas/_libs/parsers.cpython-310-x86_64-linux-gnu.so.p/src_parser_tokenizer.c.o [88/154] Compiling C object pandas/_libs/json.cpython-310-x86_64-linux-gnu.so.p/src_vendored_ujson_python_ujson.c.o [89/154] Compiling C object pandas/_libs/json.cpython-310-x86_64-linux-gnu.so.p/src_vendored_ujson_python_JSONtoObj.c.o [90/154] Compiling C object pandas/_libs/json.cpython-310-x86_64-linux-gnu.so.p/src_vendored_ujson_lib_ultrajsonenc.c.o [91/154] Compiling C object pandas/_libs/json.cpython-310-x86_64-linux-gnu.so.p/src_vendored_ujson_lib_ultrajsondec.c.o [92/154] Compiling C object pandas/_libs/tslibs/timedeltas.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_timedeltas.pyx.c.o [93/154] Compiling C object pandas/_libs/json.cpython-310-x86_64-linux-gnu.so.p/src_vendored_ujson_python_objToJSON.c.o [94/154] Linking target pandas/_libs/tslibs/timedeltas.cpython-310-x86_64-linux-gnu.so [95/154] Linking target pandas/_libs/json.cpython-310-x86_64-linux-gnu.so [96/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/ops_dispatch.pyx [97/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/parsers.pyx [98/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/properties.pyx [99/154] Compiling C object pandas/_libs/ops_dispatch.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_ops_dispatch.pyx.c.o [100/154] Linking target pandas/_libs/ops_dispatch.cpython-310-x86_64-linux-gnu.so [101/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/ops.pyx [102/154] Compiling C object pandas/_libs/internals.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_internals.pyx.c.o [103/154] Linking target pandas/_libs/internals.cpython-310-x86_64-linux-gnu.so [104/154] Compiling C object pandas/_libs/properties.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_properties.pyx.c.o [105/154] Linking target pandas/_libs/properties.cpython-310-x86_64-linux-gnu.so [106/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/byteswap.pyx [107/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/reshape.pyx [108/154] Compiling C object pandas/_libs/byteswap.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_byteswap.pyx.c.o [109/154] Linking target pandas/_libs/byteswap.cpython-310-x86_64-linux-gnu.so [110/154] Compiling C object pandas/_libs/missing.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_missing.pyx.c.o [111/154] Linking target pandas/_libs/missing.cpython-310-x86_64-linux-gnu.so [112/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/sas.pyx [113/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/tslib.pyx [114/154] Compiling C object pandas/_libs/ops.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_ops.pyx.c.o [115/154] Linking target pandas/_libs/ops.cpython-310-x86_64-linux-gnu.so [116/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/testing.pyx [117/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/sparse.pyx [118/154] Compiling C object pandas/_libs/testing.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_testing.pyx.c.o [119/154] Linking target pandas/_libs/testing.cpython-310-x86_64-linux-gnu.so [120/154] Compiling C object pandas/_libs/tslibs/offsets.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslibs_offsets.pyx.c.o [121/154] Compiling C object pandas/_libs/reshape.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_reshape.pyx.c.o [122/154] Linking target pandas/_libs/tslibs/offsets.cpython-310-x86_64-linux-gnu.so [123/154] Linking target pandas/_libs/reshape.cpython-310-x86_64-linux-gnu.so [124/154] Compiling C object pandas/_libs/sas.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_sas.pyx.c.o [125/154] Linking target pandas/_libs/sas.cpython-310-x86_64-linux-gnu.so [126/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/writers.pyx [127/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/window/indexers.pyx [128/154] Compiling Cython source /home/willayd/clones/pandas/pandas/_libs/window/aggregations.pyx [129/154] Compiling C object pandas/_libs/tslib.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_tslib.pyx.c.o [130/154] Linking target pandas/_libs/tslib.cpython-310-x86_64-linux-gnu.so [131/154] Compiling C object pandas/_libs/lib.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_lib.pyx.c.o [132/154] Linking target pandas/_libs/lib.cpython-310-x86_64-linux-gnu.so [133/154] Compiling C object pandas/_libs/parsers.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_parsers.pyx.c.o [134/154] Compiling C object pandas/_libs/window/indexers.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_window_indexers.pyx.c.o [135/154] Linking target pandas/_libs/parsers.cpython-310-x86_64-linux-gnu.so [136/154] Linking target pandas/_libs/window/indexers.cpython-310-x86_64-linux-gnu.so [137/154] Compiling C object pandas/_libs/writers.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_writers.pyx.c.o [138/154] Linking target pandas/_libs/writers.cpython-310-x86_64-linux-gnu.so [139/154] Compiling C object pandas/_libs/index.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_index.pyx.c.o [140/154] Linking target pandas/_libs/index.cpython-310-x86_64-linux-gnu.so [141/154] Compiling C++ object pandas/_libs/window/aggregations.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_window_aggregations.pyx.cpp.o [142/154] Linking target pandas/_libs/window/aggregations.cpython-310-x86_64-linux-gnu.so [143/154] Compiling C object pandas/_libs/sparse.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_sparse.pyx.c.o [144/154] Linking target pandas/_libs/sparse.cpython-310-x86_64-linux-gnu.so [145/154] Compiling C object pandas/_libs/interval.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_interval.pyx.c.o [146/154] Linking target pandas/_libs/interval.cpython-310-x86_64-linux-gnu.so [147/154] Compiling C object pandas/_libs/hashtable.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_hashtable.pyx.c.o [148/154] Linking target pandas/_libs/hashtable.cpython-310-x86_64-linux-gnu.so [149/154] Compiling C object pandas/_libs/algos.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_algos.pyx.c.o [150/154] Compiling C object pandas/_libs/groupby.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_groupby.pyx.c.o [151/154] Linking target pandas/_libs/algos.cpython-310-x86_64-linux-gnu.so [152/154] Linking target pandas/_libs/groupby.cpython-310-x86_64-linux-gnu.so [153/154] Compiling C object pandas/_libs/join.cpython-310-x86_64-linux-gnu.so.p/meson-generated_pandas__libs_join.pyx.c.o [154/154] Linking target pandas/_libs/join.cpython-310-x86_64-linux-gnu.so Preparing editable metadata (pyproject.toml) ... done Requirement already satisfied: numpy>=1.22.4 in /home/willayd/mambaforge/envs/pandas-dev/lib/python3.10/site-packages (from pandas==2.1.0rc0+165.gcea82a500d) (1.24.4) Requirement already satisfied: python-dateutil>=2.8.2 in /home/willayd/mambaforge/envs/pandas-dev/lib/python3.10/site-packages (from pandas==2.1.0rc0+165.gcea82a500d) (2.8.2) Requirement already satisfied: pytz>=2020.1 in /home/willayd/mambaforge/envs/pandas-dev/lib/python3.10/site-packages (from pandas==2.1.0rc0+165.gcea82a500d) (2023.3) Requirement already satisfied: tzdata>=2022.1 in /home/willayd/mambaforge/envs/pandas-dev/lib/python3.10/site-packages (from pandas==2.1.0rc0+165.gcea82a500d) (2023.3) Requirement already satisfied: six>=1.5 in /home/willayd/mambaforge/envs/pandas-dev/lib/python3.10/site-packages (from python-dateutil>=2.8.2->pandas==2.1.0rc0+165.gcea82a500d) (1.16.0) Building wheels for collected packages: pandas Running command Building editable for pandas (pyproject.toml) Building editable for pandas (pyproject.toml) ... done Created wheel for pandas: filename=pandas-2.1.0rc0+165.gcea82a500d-cp310-cp310-linux_x86_64.whl size=33375 sha256=d03ac9b87a25e4e25bd0a648a3b4273f9b7b38f814e912b72980b0dad7a2d9c5 Stored in directory: /tmp/pip-ephem-wheel-cache-73mue765/wheels/ca/3f/24/ea7b20c6baef01b7fa225108b21f1fa396c42adedbfb522b7c Successfully built pandas Installing collected packages: pandas Attempting uninstall: pandas Found existing installation: pandas 2.1.0rc0+164.g62657840f6.dirty Uninstalling pandas-2.1.0rc0+164.g62657840f6.dirty: Removing file or directory /home/willayd/mambaforge/envs/pandas-dev/lib/python3.10/site-packages/__pycache__/_pandas_editable_loader.cpython-310.pyc Removing file or directory /home/willayd/mambaforge/envs/pandas-dev/lib/python3.10/site-packages/_pandas_editable_loader.py Removing file or directory /home/willayd/mambaforge/envs/pandas-dev/lib/python3.10/site-packages/pandas-2.1.0rc0+164.g62657840f6.dirty.dist-info/ Removing file or directory /home/willayd/mambaforge/envs/pandas-dev/lib/python3.10/site-packages/pandas-editable.pth Successfully uninstalled pandas-2.1.0rc0+164.g62657840f6.dirty Successfully installed pandas-2.1.0rc0+165.gcea82a500d ```
dnicolodi commented 1 year ago

Nothing strange here. And nothing unusual in the pandas meson.build, at least at a rapid check. Still I cannot reproduce the issue. Let me try to build pandas.

WillAyd commented 1 year ago

Ah I think I figured it out. Mamba/conda mess around with CFLAGS, so meson must be picking that up

dnicolodi commented 1 year ago

Meson obeys $CFLAGS if it is set, yes.

dnicolodi commented 1 year ago

@WillAyd I see a few small problems with the pandas' meson.build. Should I open a PR?

WillAyd commented 1 year ago

For sure - would love any contributions to improve that

WillAyd commented 1 year ago

OK in this particular case it looks like I have to set both CFLAGS and CPPFLAGS

export CFLAGS="$CFLAGS -O0"
export CPPFLAGS="$CPPFLAGS -O0"

The reasoning there is clear, but I'm wondering if meson-python should auto-detect if you are using conda/mamba and set these flags for you with debug builds?

dnicolodi commented 1 year ago

I'm wondering if meson-python should auto-detect if you are using conda/mamba and set these flags for you with debug builds?

This fees way to magical for something a build tool should do. I don't even know what a reliable way to detect conda or mamba would be. Let alone the fact that it is impossible to know whether the environment variables are set the way they are because the user means it, or because that's the environment default.

I don't think conda or mamba setting a default value for $CFLAGS is a great idea, anyway.

WillAyd commented 1 year ago

Yea I don't disagree that its confusing for mamba to be doing that. Seems unlikely to change though.

What's interesting is that prior to meson I never had this amount of trouble to get non-optimized extensions. I'm guessing setuptools just ignored those flags, or maybe detected conda like this

https://stackoverflow.com/questions/70255012/how-do-you-check-to-see-if-any-conda-environment-is-active-with-a-flag

eli-schwartz commented 1 year ago

I do recall that setuptools had an unbelievable hodgepodge of flags originally used when compiling CPython itself, which tended to confuse things a lot. I'm not sure what else it added, or in which priority order.

rgommers commented 1 year ago

Also related to gh-207.

Yea I don't disagree that its confusing for mamba to be doing that. Seems unlikely to change though.

Conda indeed makes a mess of CFLAGS, CXXFLAGS, FFLAGS and LDFLAGS, which is quite annoying. Here is a sample:

$ mamba activate numpy-dev
$ echo $CFLAGS
-march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/rgommers/mambaforge/envs/numpy-dev/include
$ echo $LDFLAGS
-Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags -Wl,--gc-sections -Wl,--allow-shlib-undefined -Wl,-rpath,/home/rgommers/mambaforge/envs/numpy-dev/lib -Wl,-rpath-link,/home/rgommers/mambaforge/envs/numpy-dev/lib -L/home/rgommers/mambaforge/envs/numpy-dev/lib

These are the flags used for building packages, but they're injected always rather than only during package build. The rationale of "we want to match what's done during packaging" is useful only to the folks doing packaging, and bad for everyone else. I had to fight to even get things like -fopenmp and -std=c99 removed.

I think what meson and meson-python do is fundamentally correct here, for both the env vars and debug flavors. However, I think we can address this better with some docs on how to get a debug build, with a note on conda envs. Under the How to guides, either as a separate "Using debug builds" or under Use build config settings. Would that work for everyone?

dnicolodi commented 1 year ago

The fact that conda injects environment variables that are known to influence compilation (actually, with the precise intent to influence compilation) is indeed not very nice. Especially because conda users do not seem to be made aware of this. However, there isn't much we can do other than adding documentation. Better documentation is always good. But I would like to try to do not make the documentation too conda-specific.

I think there are two aspects that need to be noted in the documentation: the fact that meson uses some environment variables to define compilation options (and that these variables can be set without the user doing anything), and how to get a debug build.

The place for the first piece of information is probably both in Environment variables and in Default build options.

The second piece of information probably should go in a new section, as @rgommers suggested.

rgommers commented 1 year ago

The second piece of information probably should go in a new section, as @rgommers suggested.

I opened a PR for this: gh-466.