1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 <2022> 2023 2024 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 <2022> 2023 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Makefile rule differences with base 3.14 vs 3.15+ in ADCore build with pvi |
From: | "Yendell, Gary \(DLSLtd, RAL, LSCI\) via Tech-talk" <tech-talk at aps.anl.gov> |
To: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Wed, 10 Aug 2022 12:35:39 +0000 |
Hi Everyone,
I am currently working on a proposed
change to ADCore to use
pvi to generate template and header files during the build.
This works on 3.14 locally and in GitHub Actions with ci-scripts. The files are generated during the build, and it completes. If I change a yaml file only the relevant files are regenerated and rebuilt against. However, in CI on 3.15 (and 7) I see two problems.
When the files exist, it does not consider the yaml file as a pre-requisite at all in
3.15, where it does in 3.14, so it just installs the
existing file. The rules do run on 3.15 if the targets do not exist at all, but in a preliminary step before the rule for installing to db/ - see
here.
Is it because of slightly strange rules to generate the files in the source location and then copy them? Maybe the dependency isn't tracked properly in 3.15? The pvi rules are defined
here.
I notice that it tries to read <template>.d as a Makefile
here, but only for the templates that don't exist yet. RULES.Db optionally includes <template>.d
here, but I think that shouldn't do anything because they don't exist. And then 3.14 adds a rule for them
here and 3.15 does not. I think this change may be relevant:
https://github.com/epics-base/epics-base/commit/2905b5bb72449727c192c101d877ea17b87b9e4c
Perhaps I need to use a separate PVI_DB to define those that need to be generated, but I am not sure if the rebuild detection will work as it does now when the yaml files are changed.
----
The second problem is not so important, but it would be good to demonstrate that the build works when the files are generated from scratch. The first problem is a blocker - the files must be regenerated when the yaml files are changed.
Does anyone know what I am doing wrong?
Note I have rebased my ADCore branch on Michael's
branch integrating ci-scripts for CI, but I couldn't get 3.14 builds working to compare against, so I reverted to my version. There are builds for this branch demonstrating the same problems
here and can do more from that base if it is useful.
Cheers,
Gary
-- This e-mail and any attachments may contain confidential, copyright and or privileged material, and are for the use of the intended addressee only. If you are not the intended addressee or an authorised recipient of the addressee please notify us of receipt by returning the e-mail and do not use, copy, retain, distribute or disclose the information in or attached to the e-mail. |