lalsuite merge requestshttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests2022-09-06T13:09:00Zhttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1980Update packaging from release branch2022-09-06T13:09:00ZAdam MercerUpdate packaging from release branch### Description
This merges in the packaging updates from the release branch into `master`.
### API Changes and Justification
#### Backwards Compatible Changes
- [x] This change does not modify any class/function/struct/type definiti...### Description
This merges in the packaging updates from the release branch into `master`.
### API Changes and Justification
#### Backwards Compatible Changes
- [x] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
If any of the Backwards Incompatible check boxes are ticked please
provide a justification why this change is necessary and why it needs
to be done in a backwards incompatible way.
#### Review Status
Please provide details on any reviews related to this change and
and the associated reviewers.Adam MercerAdam Mercerhttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1976Remove last usages of NDEBUG and assert()2022-09-06T08:25:44ZKarl WetteRemove last usages of NDEBUG and assert()### Description
This MR continues from !1930 and !1938 in removing the last usages of `NDEBUG` from LALSuite.
The two remaining uses of `NDEBUG` were in enabling/disabling the C macro `assert()` and its old-LAL-style equivalent `ASSERT...### Description
This MR continues from !1930 and !1938 in removing the last usages of `NDEBUG` from LALSuite.
The two remaining uses of `NDEBUG` were in enabling/disabling the C macro `assert()` and its old-LAL-style equivalent `ASSERT()`. These macros are supposed to be used only for _debugging_ code, i.e. code which is helpful for debugging, but is non-essential for the correct operation of the code, and can be removed without having any impact. Both macros are however commonly (mis)used for detecting error conditions (e.g. valid input arguments to functions, valid return values from functions), and even in test programs to check that test conditions are met. There is no reason such code should ever be disabled, as without such checks code could fail to detect errors, crash, or silently produce wrong results. This is particular true for production builds where `NDEBUG` may be set.
For `ASSERT()`, this macro is no longer enabled/disabled by `NDEBUG` but by a new macro `LAL_ASSERT_MACRO_DISABLED`. As documented in `LALStatusMacros.dox` it is not recommended to compile LALSuite with this macro set, given that `ASSERT()` is often used to detect critical errors (see #596 for an example of where disabling `ASSERT()` leads to a change in behaviour). Nevertheless one can still disable `ASSERT()` with `-DLAL_ASSERT_MACRO_DISABLED` should anyone wish to do so.
For `assert()`, this macro has been replaced with 2 new macros defined in `XLALError.h`, which are never compiled away with `NDEBUG`:
- `XLAL_CHECK_ABORT(assertion)` calls `lalAbortHook()` if `assertion` is false. This macro has been used in library code, so that `lalAbortHook()` can be replaced by e.g. the SWIG wrappings to prevent a call to `abort()` (see !1945). Ideally the `XLAL_CHECK...()` macros which raise XLAL errors would be used here, but would that require me checking that `xlalErrno` is being inspected for failures. Given that much of the use of `assert()` is in LALSimulation and LALInference, where I'm not familiar with the code, I can't guarantee that `xlalErrno` is being respected, so it seems safer to call `lalAbortHook()` which preserves the same behaviour as `assert()` (expect that the check is never compiled away).
- `XLAL_CHECK_EXIT(assertion)` calls `exit(1)` if `assertion` is false. This is fine to use in test programs where one generally wants to exit immediately if a test condition fails. It's more friendly for a test to fail with `exit()` than `abort()` (again see !1945).
To prevent usage of `assert()` reappearing in LALSuite, I've added a `./configure` option `--enable-strict-defs`, which when enabled uses `#pragma GCC poison` to prevent any usage of `assert()`. This is consistent with the [LAL Specification and Style Guide](https://lscsoft.docs.ligo.org/lalsuite/lal/group__lal__spec.html) which does not allow `assert()` in LAL code. `--enable-strict-defs` is disabled by default, so `assert()` can be still used for local debugging, but is enabled in CI to prevent `assert()` being (mis)used in production code.
To check that LALSuite now compiles with `NDEBUG` I've removed `-UNDEBUG` from the Conda builds (which unfortunately will probably conflict with !1975). Given that LALSuite should now not depend on whether `NDEBUG` is set, a separate CI job (!1971) shouldn't be needed.
Fixes #596
### API Changes and Justification
#### Backwards Compatible Changes
- [x] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
#### Review Status
cc @duncanmmacleod @jolien-creighton @adam-mercerKarl WetteKarl Wettehttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1968Merge release branch2022-09-01T13:12:31ZAdam MercerMerge release branch### Description
Merges the packaging updates from the release branch onto `master`.
### API Changes and Justification
#### Backwards Compatible Changes
- [x] This change does not modify any class/function/struct/type definitions
...### Description
Merges the packaging updates from the release branch onto `master`.
### API Changes and Justification
#### Backwards Compatible Changes
- [x] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
If any of the Backwards Incompatible check boxes are ticked please
provide a justification why this change is necessary and why it needs
to be done in a backwards incompatible way.
#### Review Status
Please provide details on any reviews related to this change and
and the associated reviewers.Adam MercerAdam Mercerhttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1949Common top-level directory for build infrastructure files2022-09-01T13:12:51ZKarl WetteCommon top-level directory for build infrastructure files### Description
The top level of LALSuite has accumulated a number of directories for common build infrastructure files, and it's starting to be a little cluttered. In addition, the top-level `gnuscripts/` directory is being used to hol...### Description
The top level of LALSuite has accumulated a number of directories for common build infrastructure files, and it's starting to be a little cluttered. In addition, the top-level `gnuscripts/` directory is being used to hold other build infrastructure files, such as `debian/` and various maintenance scripts, which aren't part of Autotools and should have a home elsewhere.
This MR creates a top-level `common/` directory to house the common `conda/`, `doxygen/`, `gnuscripts/debian/`, `swig/`, and `test/` directories. I've also added a `common/maintainer-scripts/` directory for various maintenance scripts. A `common/README.md` describes each directory in `common/`, subsuming the existing `README.md`s in the `common/` subdirectories. All symlinks have been updated.
Moving the existing top-level directories to `common/` shouldn't cause and problems in the build system; since the files under `common/` are symlinked into the `lal.../` directories, as far as the library-level build systems are concerned the files haven't actually been moved. (The top-level `gnuscripts/` itself cannot be moved as it must have the same layout relative to `configure.ac` as in the `lal.../` directories.)
Finally the top-level directory `docker/` has been renamed to `.docker/` consistent with the existing `.gitlab-ci-*.Dockerfile` files. (FWIW AFAICT `.docker/startup` isn't currently used anywhere.)
### API Changes and Justification
#### Backwards Compatible Changes
- [x] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
#### Review Status
cc @adam-mercer @duncanmmacleodKarl WetteKarl Wettehttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1946XLALSimBurstCherenkovRadiation(): new version2022-09-02T04:03:49ZSoichiro KuwaharaXLALSimBurstCherenkovRadiation(): new version### Description
Detailed description of the changes, why they are being made, etc...
Also indicate appropriate tickets and tests that have been run to
determine that the changes work as intended and do not introduce
other problems.
###...### Description
Detailed description of the changes, why they are being made, etc...
Also indicate appropriate tickets and tests that have been run to
determine that the changes work as intended and do not introduce
other problems.
### API Changes and Justification
#### Backwards Compatible Changes
- [ ] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [x] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [x] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
If any of the Backwards Incompatible check boxes are ticked please
provide a justification why this change is necessary and why it needs
to be done in a backwards incompatible way.
#### Review Status
This has not been formally reviewed, but it has been developed together with @kipp.cannon who has checked it for errors.Soichiro KuwaharaSoichiro Kuwaharahttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1944.gitignore fixups2022-09-01T13:12:58ZKarl Wette.gitignore fixups### Description
- Remove `__pycache__/` from `lal*/.gitignore` as it's already in the top-level `.gitignore`
- Add `.hypothesis/` to the top-level `.gitignore`; these directories are created by `pytest`
### API Changes and Justificatio...### Description
- Remove `__pycache__/` from `lal*/.gitignore` as it's already in the top-level `.gitignore`
- Add `.hypothesis/` to the top-level `.gitignore`; these directories are created by `pytest`
### API Changes and Justification
#### Backwards Compatible Changes
- [x] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
#### Review Status
cc @adam-mercerKarl WetteKarl Wettehttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1940Merge release branch2022-09-01T13:13:04ZAdam MercerMerge release branch### Description
Merges the packaging updates from the release branch into `master`.
### API Changes and Justification
#### Backwards Compatible Changes
- [x] This change does not modify any class/function/struct/type definitions
...### Description
Merges the packaging updates from the release branch into `master`.
### API Changes and Justification
#### Backwards Compatible Changes
- [x] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
If any of the Backwards Incompatible check boxes are ticked please
provide a justification why this change is necessary and why it needs
to be done in a backwards incompatible way.
#### Review Status
Please provide details on any reviews related to this change and
and the associated reviewers.Adam MercerAdam Mercerhttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1937Run make check -C bin in conda/install-bin.sh2022-09-01T13:13:02ZKarl WetteRun make check -C bin in conda/install-bin.sh### Description
This implements @duncanmmacleod 's suggestion (https://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1904#note_574217) of running `make check -C bin` from the `conda/install-bin.sh` script (which installs binaries). Thi...### Description
This implements @duncanmmacleod 's suggestion (https://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1904#note_574217) of running `make check -C bin` from the `conda/install-bin.sh` script (which installs binaries). This extends !1904 which implemented this just for LALPulsar. Aside from LALPulsar, this picks up a few extra test scripts in LAL, for which `lal/conda/meta.yaml.in.in` needs some dependencies added.
`lalinference/conda/install-bin.sh` is a separate script, so I also added `make check -C bin` there as well. In doing so I noticed that `lalinference/conda/meta.yaml.in.in` was missing the right `script_env` for `install-bin.sh` (cf. !1929) so this is fixed up as well.
### API Changes and Justification
#### Backwards Compatible Changes
- [x] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
#### Review Status
cc @duncanmmacleodKarl WetteKarl Wettehttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1933lalapps_run_sqlite has been replaced with ligolw_run_sqlite2022-09-14T08:40:57ZAdam Mercerlalapps_run_sqlite has been replaced with ligolw_run_sqlite### Description
Remove `lalapps_run_sqlite` as the code has be [moved](https://git.ligo.org/kipp.cannon/python-ligo-lw/-/merge_requests/27) to `python-ligolw` as `ligolw_run_sqlite`.
See #571
### API Changes and Justification
#### Ba...### Description
Remove `lalapps_run_sqlite` as the code has be [moved](https://git.ligo.org/kipp.cannon/python-ligo-lw/-/merge_requests/27) to `python-ligolw` as `ligolw_run_sqlite`.
See #571
### API Changes and Justification
#### Backwards Compatible Changes
- [ ] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [x] This change removes an existing class/function/struct/type
from a public C header file or Python module
If any of the Backwards Incompatible check boxes are ticked please
provide a justification why this change is necessary and why it needs
to be done in a backwards incompatible way.
#### Review Status
Please provide details on any reviews related to this change and
and the associated reviewers.Adam MercerAdam Mercerhttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1930Remove/cleanup usage of LAL_NDEBUG/NDEBUG in LAL2022-09-01T08:35:31ZKarl WetteRemove/cleanup usage of LAL_NDEBUG/NDEBUG in LAL### Description
This MR addresses the use of `LAL_NDEBUG`/`NDEBUG` in LALSuite code. In most cases, use of these symbols to disable error messages/checking is removed; the performance cost of these checks is likely minimal, compared to ...### Description
This MR addresses the use of `LAL_NDEBUG`/`NDEBUG` in LALSuite code. In most cases, use of these symbols to disable error messages/checking is removed; the performance cost of these checks is likely minimal, compared to the human cost of debugging obscure errors/segfaults (cf. #573). Where legitimate use of such symbols remains, `NDEBUG` is used. (`LAL_NDEBUG` used to be controlled by the `./configure` option `--enable/--disable-debug`, but since that option was deprecated in 2016 it has been permanently `#undef`ined in `LALConfig.h`. It has now been removed entirely.)
#### LALMalloc.h
The most important use of `LAL_NDEBUG`/`NDEBUG` was in `LALMalloc.h`. This header defined two sets of standard memory allocation functions, `LALMalloc()` etc., and `XLALMalloc()` etc. These functions are used equivalently in many places in LALSuite, e.g. memory allocated by `LALCalloc()` may be freed by `XLALFree()`. An important difference is that the `LALMalloc()` functions are replaced with `malloc()` et al. when `NDEBUG` is defined, but the `XLALMalloc()` functions are not. This means that `NDEBUG` has to be defined consistently, not only when building LAL, but which building any code that links against LAL. The failure for this to happen in the Conda packages (!1929) coupled with the mixing of `LALMalloc()` and `XLALMalloc()` functions in some codes meant that, in one LALPulsar executable, code allocated by `LALCalloc()` (which was pointing to `calloc()`) was passed to `XLALFree()`, generating an abort from `LALCheckMemoryLeaks()`.
~~There is no reason to continue to maintain separate LAL and XLAL versions of the standard memory functions, particularly given these functions are widely assumed to be equivalent but may not be (e.g. when `NDEBUG` is defined). And allowing whether `LALMalloc()` or `malloc()` are used based on a macro in a header (e.g. `NDEBUG`) is dangerous, as one cannot enforce that choice consistently in all code that links against LAL.~~
~~This MR addresses these 2 points:~~
- ~~`LALMalloc.h` now just defines `XLALMalloc()` etc. as functions; `LALMalloc()` exist only as compatibility macros. (Within `LALMalloc.c`, the implementations of `XLALMalloc()` are those of the former `LALMalloc()` functions.) For each memory function there is a e.g. `XLALMallocLong()` version with `file` and `line` arguments, an `XLALMallocShort()` version without, and a `XLALMalloc()` macro which points to `XLALMallocLong(..., __FILE__, __LINE__)`.~~
- ~~`NDEBUG` is no longer used in `LALMalloc.h`. Instead, if one really wants to disable the LAL memory functions completely (beyond not setting the memory-tracking bits in `LAL_DEBUG_LEVEL`) one can `./configure` with `--disable-memory-functions`; this compiles LAL with `-DLAL_MEMORY_FUNCTIONS_DISABLED` which points `XLALMalloc()` etc. to `malloc()` etc. inside `LALMalloc.c`. Calls to `malloc()` through `XLALMalloc()` will incur an extra function call (since `XLALMalloc()` is no longer defined away) but this performance penalty is likely minimal. On the other hard, the use of LAL memory functions through `LALMalloc.h` is now guaranteed to be consistent across all code which links against a particular `liblal.so`, preventing the kinds of bugs found by #573.~~
~~Aside from the interface changes, the actual operation of the LAL memory functions (e.g. the memory tracking and overflow checking features) are unchanged.~~
#### Other uses of LAL_NDEBUG/NDEBUG
These changes have been split into a separate MR; see !1938
#### Remaining uses of NDEBUG
The only remaining use of `NDEBUG` after this MR is to enable/disable the `LALStatus` macro `ASSERT()`, and code associated with using `ASSERT()`. Given that `ASSERT()` is meant to be the `LALStatus` equivalent of the standard C `assert()` it's reasonable to use the same macro. (As stated above, `LAL_NDEBUG` has been removed completely.)
### API Changes and Justification
#### Backwards Compatible Changes
- [x] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
~~This breaks the `LALMalloc.h` ABI due to the removal of the `LALMalloc()` et al. functions, which are now just macros.~~
~~In particular, `XLALFree()` is no longer a function, so code which needs a pointer to `XLALFree()` (e.g. as a destructor function) should instead use `XLALFreeShort()`.~~
~~The advantage of preventing obscure bugs like #573 from arising is IMHO worth the cost of the ABI break.~~
#### Review Status
cc @adam-mercer @jolien-creightonKarl WetteKarl Wettehttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1929lal*/conda/meta.yaml.in.in: run install-python.sh with same script_env as bui...2022-09-01T13:13:07ZKarl Wettelal*/conda/meta.yaml.in.in: run install-python.sh with same script_env as build.sh### Description
Fixes `lal*/conda/meta.yaml.in.in` by adding the same `script_env` (containing `CI_COMMIT_TAG`, `CI_PIPELINE_SOURCE`, and `GITLAB_CI`) to each `install-*.sh` script, the same as for the `build.sh` scripts.
Both scripts ...### Description
Fixes `lal*/conda/meta.yaml.in.in` by adding the same `script_env` (containing `CI_COMMIT_TAG`, `CI_PIPELINE_SOURCE`, and `GITLAB_CI`) to each `install-*.sh` script, the same as for the `build.sh` scripts.
Both scripts need these variables set to decide on which flags to pass to `./configure`. In particular, setting `-UNDEBUG` inconsistently can lead to segfaults (#573) because the LAL memory functions are not consistently enabled/disabled.
`conda-build` raises an error for unset variables in `script_env` for `install-*.sh`:
```ValueError: env var 'CI_COMMIT_TAG' specified in script_env, but is not set```
This may be a bug as the same error isn't raised for `build.sh`.
To ensure `CI_COMMIT_TAG` is passed to all scripts, need to make sure
`CI_COMMIT_TAG` is set before calling `conda-build`, then in scripts only test
whether `CI_COMMIT_TAG` is null, not whether it is unused.
### API Changes and Justification
#### Backwards Compatible Changes
- [x] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
#### Review Status
Closes #573 as being the immediate cause of the segfault (but see https://git.ligo.org/lscsoft/lalsuite/-/issues/573#note_576406)Karl WetteKarl Wettehttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1919Fix NRSurrogate negative-odd-m modes prefactor in polarisation and modes func...2022-09-01T13:13:21ZSamson LeongFix NRSurrogate negative-odd-m modes prefactor in polarisation and modes functions.### Description
This merge request aims to fix the issue that NRSur7dq4 cannot produce the correct waveform when the input m2 > m1.
Targetted at the two functions: `XLALSimInspiralPrecessingNRSurModes` and `XLALSimInspiralPrecessingNRSu...### Description
This merge request aims to fix the issue that NRSur7dq4 cannot produce the correct waveform when the input m2 > m1.
Targetted at the two functions: `XLALSimInspiralPrecessingNRSurModes` and `XLALSimInspiralPrecessingNRSurPolarizations`.
It has been reported in the Waveform call on 21/07/22. [[dcc]](https://dcc.ligo.org/LIGO-G2201137)
### API Changes and Justification
#### Backwards Compatible Changes
- [x] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
If any of the Backwards Incompatible check boxes are ticked please
provide a justification why this change is necessary and why it needs
to be done in a backwards incompatible way.
#### Review Status
Please provide details on any reviews related to this change and
and the associated reviewers.https://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1917lalburst.cafe: performance improvements, and adjustments2024-03-04T08:51:13ZKipp Cannonlalburst.cafe: performance improvements, and adjustments### Description
The 1.4.0 version of ligo-segments adds a feature that allows the code in lalburst.cafe to see a significant performance improvement, by being rewritten as a wrapper around that code. These patches also adjust the .rpm ...### Description
The 1.4.0 version of ligo-segments adds a feature that allows the code in lalburst.cafe to see a significant performance improvement, by being rewritten as a wrapper around that code. These patches also adjust the .rpm and .deb package metadata to enforce minimum ligo-segments and python-ligo-lw version numbers.
### API Changes and Justification
#### Backwards Compatible Changes
- [ ] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [X] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
A new keyword argument is added to a python function, whose default value corresponds to the previous version's behavior. The correct check box has been marked, but this change is not backwards incompatible.
#### Review Status
A before/after comparison of the modified function has been conducted, and that test is added as a new test code to lalburst.Kipp CannonKipp Cannonhttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1912SWIG debugging tools2022-09-01T13:13:30ZKarl WetteSWIG debugging tools### Description
A few things to help debugging SWIG-related issues:
- Run the SWIG tests with the "nasty" error handlers which `abort()` on error, rather than raising an exception. This doesn't affect `make check`, but makes it easier t...### Description
A few things to help debugging SWIG-related issues:
- Run the SWIG tests with the "nasty" error handlers which `abort()` on error, rather than raising an exception. This doesn't affect `make check`, but makes it easier to run the SWIG tests under a debugger. Indeed running `cd swig/ && make debug-{octave|python}-test` will run the SWIG tests under `gdb --args`.
- Add the SWIG-generated sources `swiglal_octave.cpp` and `swiglal_python.c` to the CI job artifacts, so that the sources can be examined in the event of job failures.
### API Changes and Justification
#### Backwards Compatible Changes
- [x] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
#### Review Status
N/AKarl WetteKarl Wettehttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1899part 4 of a large clean-up of lalmetaio and related code2023-02-06T21:40:03ZKipp Cannonpart 4 of a large clean-up of lalmetaio and related code### Description
This final (for now) patch set splits up LIGOLwXML.c and LIGOLwXMLRead.c, which previous work have caused to balloon to an enormous size, into separate files, one for each table type. This also includes an update for th...### Description
This final (for now) patch set splits up LIGOLwXML.c and LIGOLwXMLRead.c, which previous work have caused to balloon to an enormous size, into separate files, one for each table type. This also includes an update for the column names in the tables to match current naming standards, which finally completes a years-long format update/simplification.
### API Changes and Justification
#### Backwards Compatible Changes
- [X] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
If any of the Backwards Incompatible check boxes are ticked please
provide a justification why this change is necessary and why it needs
to be done in a backwards incompatible way.
#### Review Status
Please provide details on any reviews related to this change and
and the associated reviewers.Kipp CannonKipp Cannonhttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1898part 3 of a large clean-up of lalmetaio and related code2023-02-06T21:38:34ZKipp Cannonpart 3 of a large clean-up of lalmetaio and related code### Description
This patch set now deletes the obsolete XML I/O APIs and performs some associated cleanup. Some parts which are still used by single programs are migrated into those programs. Some elements of the "new"-style API are a...### Description
This patch set now deletes the obsolete XML I/O APIs and performs some associated cleanup. Some parts which are still used by single programs are migrated into those programs. Some elements of the "new"-style API are adjusted up for better consistency across table types (e.g., XLALSimBurstTableFromLIGOLw() has its start and stop parameters removed). While doing this work, a number of unused functions were identified in lalmetaio and lalinspiral, and they are also deleted by this patch set. The XMLStream object has unused elements removed from it, which reduces it to a trivial wrapper around a LALFile pointer, but the object is retained as a distinct type instead of porting the API to LALFile in case this helps with future development work.
### API Changes and Justification
#### Backwards Compatible Changes
- [ ] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [X] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [X] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [X] This change removes an existing class/function/struct/type
from a public C header file or Python module
If any of the Backwards Incompatible check boxes are ticked please
provide a justification why this change is necessary and why it needs
to be done in a backwards incompatible way.
#### Review Status
Not reviewed.Kipp CannonKipp Cannonhttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1897part 2 of a large clean-up of lalmetaio and related code2023-04-04T06:37:10ZKipp Cannonpart 2 of a large clean-up of lalmetaio and related code### Description
In this patch set, "new"-style I/O functions are added for sngl_inspiral, sim_ringdown and sngl_ringdown tables. All relevant calling codes are switched to the new functions. This completes the conversion of lalsuite t...### Description
In this patch set, "new"-style I/O functions are added for sngl_inspiral, sim_ringdown and sngl_ringdown tables. All relevant calling codes are switched to the new functions. This completes the conversion of lalsuite to the integer-valued ID column format. Prior to these patches lalsuite had accumulated 3 distinct XML I/O APIs. This patch set converts lalsuite to the newest of the three, but does not yet delete the older APIs. Also, some parts of the older APIs are only used by a small number of programs (like, one), and new-style replacements are not provided for those components. In subsequent patches that remove the old APIs, those functions will be migrated into the programs that use them.
### API Changes and Justification
#### Backwards Compatible Changes
- [ ] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [X] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
If any of the Backwards Incompatible check boxes are ticked please
provide a justification why this change is necessary and why it needs
to be done in a backwards incompatible way.
#### Review Status
Not reviewed.Adam MercerAdam Mercerhttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1896part 1 of a large clean-up of lalmetaio and related code2022-09-01T13:13:27ZKipp Cannonpart 1 of a large clean-up of lalmetaio and related code### Description
This merge request consists of housekeeping chores that will reduce the diff sizes of subsequent patches. Unused headers are deleted from C codes, missing headers are added to C codes, etc.
### API Changes and Justific...### Description
This merge request consists of housekeeping chores that will reduce the diff sizes of subsequent patches. Unused headers are deleted from C codes, missing headers are added to C codes, etc.
### API Changes and Justification
#### Backwards Compatible Changes
- [X] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
If any of the Backwards Incompatible check boxes are ticked please
provide a justification why this change is necessary and why it needs
to be done in a backwards incompatible way.
#### Review Status
Not reviewed.Kipp CannonKipp Cannonhttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1893burca: remove need for custom SnglBurst class2022-07-04T15:49:42ZKipp Cannonburca: remove need for custom SnglBurst classthe burst coincidence code relies on Python's standard library bisect routines to identify ranges of triggers coincident with GPS times, and because the bisect routines cannot be given a separate key function (like sort() can) the trigge...the burst coincidence code relies on Python's standard library bisect routines to identify ranges of triggers coincident with GPS times, and because the bisect routines cannot be given a separate key function (like sort() can) the trigger objects themselves must implement the desired comparison operation. this patch removes that requirement by maintaining a separate list of trigger times and bisecting it. apart from simplifying the code, this achieves a significant performance improvement.Adam MercerAdam Mercerhttps://git.ligo.org/lscsoft/lalsuite/-/merge_requests/1875lal*/configure.ac: make sure local library module is in python path2022-09-01T13:13:43ZKarl Wettelal*/configure.ac: make sure local library module is in python path### Description
The variable `LAL_PYTHON_PATH` contains the path to various uninstalled Python modules in LALSuite, so that Python tests scripts can be run, and Python applications can be called for testing before installation.
`LAL_PY...### Description
The variable `LAL_PYTHON_PATH` contains the path to various uninstalled Python modules in LALSuite, so that Python tests scripts can be run, and Python applications can be called for testing before installation.
`LAL_PYTHON_PATH` doesn't current contain the path to the `python/` directory in the current LALSuite library. For example, in LALPulsar `LAL_PYTHON_PATH` should contain `lalpulsar/python`, so that a Python application in `bin/` can `import lalpulsar`.
This MR makes sure `LAL_PYTHON_PATH` has the path to the library-local `python/` directory in all LALSuite libraries.
### API Changes and Justification
#### Backwards Compatible Changes
- [x] This change does not modify any class/function/struct/type definitions
in a public C header file or any Python class/function definitions
- [ ] This change adds new classes/functions/structs/types
to a public C header file or Python module
#### Backwards Incompatible Changes
- [ ] This change modifies an existing class/function/struct/type definition
in a public C header file or Python module
- [ ] This change removes an existing class/function/struct/type
from a public C header file or Python module
#### Review Status
N/AKarl WetteKarl Wette