- Sep 20, 2022
-
-
Simon Rose authored
-
Simon Rose authored
Previously, it was the case that running ``` $ iocsh -r module -l cellMods $ iocsh -l cellMods -r module ``` would both work correctly, but if you looked at the IOC log it was not clear why that was the case; in the former case it _appeared_ like we were finding the module before setting `EPICS_DRIVER_PATH`. This only worked because this variable is exported from the shell. This change forces the `-l` flag to be processed _before_ all of the other flags in order to ensure that paths are determined first.
-
- Sep 15, 2022
-
-
Lucas Magalhães authored
-
- Sep 14, 2022
-
-
Simon Rose authored
If a user runs the build from the E3_SITEMODS_PATH, then it can happen that false dependencies get registered due to how the generated .d files are parsed to determine module dependencies. Specifically, if you have header file being used that is located at ${E3_SITEMODS_PATH}/e3-module/module/src/header.h and it is _not_ being installed, then the dependency parsing script will see a dependency as an absolute path, and so register that your module depends on the module `e3-module` version `module`, which is obviously not what was intended. While we don't want to stricly _prevent_ a user from building there, it seems wise to _warn_ a user that there may be unintended consequences.
-
- Sep 07, 2022
-
-
Simon Rose authored
-
Simon Rose authored
-
Simon Rose authored
-
Simon Rose authored
-
Simon Rose authored
-
Simon Rose authored
Previously, the wrapper fixture would set some environment variables when running `run_make`; this meant that you could not debug a test case by simply navigating to the test directory and trying to build the generated module. This change fixes that.
-
- Aug 22, 2022
-
-
Simon Rose authored
The ultimate issue here was that we performed a ``` cat $( ... ) | sed '1d' ``` and if that inner block was empty, then `cat` reverted to waiting for user input. The error also came up with non-specified build numbers, so we need to make sure that those are also being fetched correctly. The upshot is now `<module>_VERSION` will automatically fetch the correct build number; the only potential downside is that if we have a newer version in `${E3_SITEMODS_PATH}` in comparison to `${EPICS_MODULES}` (read: cellMods), then it won't pick that up. However, this seems to be a pretty special corner case.
-
Simon Rose authored
-
- Aug 19, 2022
-
-
Simon Rose authored
-
Simon Rose authored
This adds a test that checks that if a single architecture fails, then the build fails as a whole. There are some slight complications in terms of writing good tests, since we do not want to use real architectures. Since the source files are converted from `SOURCES -> SRCS -> LIBOBJS` and we finally have the dependency ```make ${DEPFILE}: ${LIBOBJS} ``` we need to ensure that `LIBOBJS` is properly populated before we get to this point. The challenge, however, is that `LIBOBJS` is defined (in terms of `SRCS` as ```make LIBOBJS += $(addsuffix $(OBJ),$(notdir $(basename $(filter-out %.$(OBJ) %$(LIB_SUFFIX),$(sort ${SRCS}))))) ``` and `LIB_SUFFIX` is set in `${CONFIG}/os/CONFIG.Common.${T_A}`. This is why we need to do the workaround of hand-defining it at the beginning.
-
- Aug 03, 2022
-
-
Simon Rose authored
-
Simon Rose authored
-
Simon Rose authored
This is necessary for the following reason: the previous mechanism used an eval/call combination that required SUBS and TMPS to be exported on a previous pass through. This allowed us to use `vpath` for each specific file in order to locate the correct source files. In order to avoid that, we add two new ingredients: * `VPATH` instead of `vpath`, since it allows us to have variables that are expanded later * `.SECONDEXPANSION`, which allows a target (`db_internal`, in this case) to perform a second variable expansion at the _end_ of the pass through. All of this is necessary because the typical module makefile looks like: ``` include driver.makefile SUBS += ... ``` i.e. `SUBS` and `TMPS` are defined _after_ the inclusion of driver.makefile. If we don't want to force a re-write of every single module makefile, we needed to do some of the above changes.
-
Simon Rose authored
Note that there is something surprising here: `EXCLUDE_ARCHS` _filters_ the architectures (i.e. runs it as %arch%), while `ARCH_FILTER` matches exactly. This is exactly backwards from what the names suggest. However, I am leaving this as is for the time being since there are possibly existing wrappers that use these two variables in this way; a further investigation should be done to ensure that we can improve this in some sense. If we make such a change, we should regard it as breaking.
-
Lucas Magalhães authored
In a dependency chain like B->A->C and also B->C where A needs a version of C different than B the build should fail. This commit adds this check during dependency treatment on the built target.
-
- May 30, 2022
-
-
Simon Rose authored
-
Simon Rose authored
-
- May 05, 2022
-
-
Simon Rose authored
-
Simon Rose authored
-
- Mar 24, 2022
-
-
Simon Rose authored
-
- Mar 22, 2022
-
-
Simon Rose authored
-
Simon Rose authored
* One test to catch invalid dependencies * One test to catch architecture-dependent dependencies. Note that this itself does depend on the underlying architecture, which probably should be improved. But at the moment we only build for linux-based architectures, so this should be ok.
-
Simon Rose authored
-
Simon Rose authored
-
Simon Rose authored
-
- Mar 21, 2022
-
-
Simon Rose authored
-
- Jan 16, 2022
-
-
Juntong Liu authored
-
- Jan 13, 2022
-
-
Simon Rose authored
-
Simon Rose authored
-
Simon Rose authored
-
Simon Rose authored
-
Simon Rose authored
-
Simon Rose authored
-
Simon Rose authored
-
Simon Rose authored
This was needed since we had to have a way for the test suites to override this value. However, this can also be acheived by writing to configure/CONFIG_CELL.local. This was added in a refactoring of run_make to make more clear what variables can be passed there.
-
Simon Rose authored
-