<div dir="ltr">So it sounds like the simplest approach would be to remove libcons_common from the make file and copy cons_common.[ch] into my project and provide my own  implementations in the appropriate functions in cons_common.c.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 26, 2020 at 6:12 AM Jeffrey T Frey <<a href="mailto:frey@udel.edu">frey@udel.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Did you reuse the 20.02 select/cons_res/Makefile.{in,am} in your plugin's source?  You probably will have to re-model your plugin after the select/cray_aries plugin if you need to override those two functions (it also defines its own select_p_job_begin() and doesn't link against <a href="http://libcons_common.la" rel="noreferrer" target="_blank">libcons_common.la</a>).  Naturally, omitting libcons_common.a from your plugin doesn't help if you use other functions defined in select/common.<br>
<br>
<br>
<br>
<br>
<br>
> On Feb 26, 2020, at 00:48 , Dean Schulze <<a href="mailto:dean.w.schulze@gmail.com" target="_blank">dean.w.schulze@gmail.com</a>> wrote:<br>
> <br>
> There was a major refactoring between the 19.05 and 20.02 code.  Most of the callbacks for select plugins were moved to cons_common.  I have a plugin for 19.05 that depends on two of those callbacks:  select_p_job_begin() and select_p_job_fini().  My plugin is a copy of the select/cons_res plugin, but when I implement those functions in my plugin I get this error because those functions already exist in cons_common:<br>
> <br>
> /home/dean/src/slurm.versions/slurm-20.02/slurm-20.02.0/src/plugins/select/cons_common/cons_common.c:1134: multiple definition of `select_p_job_begin'; .libs/select_liqid_cons_res.o:/home/dean/src/slurm.versions/slurm-20.02/slurm-20.02.0/src/plugins/select/liqid_cons_res/select_liqid_cons_res.c:559: first defined here<br>
> /usr/bin/ld: ../cons_common/.libs/libcons_common.a(cons_common.o): in function `select_p_job_fini':<br>
> /home/dean/src/slurm.versions/slurm-20.02/slurm-20.02.0/src/plugins/select/cons_common/cons_common.c:1561: multiple definition of `select_p_job_fini'; .libs/select_liqid_cons_res.o:/home/dean/src/slurm.versions/slurm-20.02/slurm-20.02.0/src/plugins/select/liqid_cons_res/select_liqid_cons_res.c:607: first defined here<br>
> collect2: error: ld returned 1 exit status<br>
> <br>
> Since only one select plugin can be used at a time (determined in slurm.conf) I could put my code in the cons_common implementation of those functions, but if I ever switch plugins then my plugin code will get executed when it shouldn't be.<br>
> <br>
> How can I "override" those callbacks in my own plugin?  This isn't Java (but it sure looks like the slurm code tries to do Java in C).<br>
> <br>
> <br>
> On Tue, Feb 25, 2020 at 11:57 AM Tim Wickberg <<a href="mailto:tim@schedmd.com" target="_blank">tim@schedmd.com</a>> wrote:<br>
> After 9 months of development and testing we are pleased to announce the <br>
> availability of Slurm version 20.02.0!<br>
> <br>
> Downloads are available from <a href="https://www.schedmd.com/downloads.php" rel="noreferrer" target="_blank">https://www.schedmd.com/downloads.php</a>.<br>
> <br>
> Highlights of the 20.02 release include:<br>
> <br>
> - A "configless" method of deploying Slurm within the cluster, in which <br>
> the slurmd and user commands can use DNS SRV records to locate the <br>
> slurmctld host and automatically download the relevant configuration files.<br>
> <br>
> - A new "auth/jwt" authentication mechanism using JWT, which can help <br>
> integrate untrusted external systems into the cluster.<br>
> <br>
> - A new "slurmrestd" command/daemon which translates a new Slurm REST <br>
> API into the underlying libslurm calls.<br>
> <br>
> - Packaging fixes for RHEL8 distributions.<br>
> <br>
> - Significant performance improvements to the backfill scheduler, as <br>
> well as to string construction and processing.<br>
> <br>
> Thank you to all customers, partners, and community members who <br>
> contributed to this release.<br>
> <br>
> As with past releases, the documentation available at <br>
> <a href="https://slurm.schedmd.com" rel="noreferrer" target="_blank">https://slurm.schedmd.com</a> has been updated to the 20.02 release. Past <br>
> versions are available in the archive. This release also marks the end <br>
> of support for the 18.08 release. The 19.05 release will remain <br>
> supported up until the 20.11 release in November, but will not see as <br>
> frequent updates, and bug-fixes will be targeted for the 20.02 <br>
> maintenance releases going forward.<br>
> <br>
> -- <br>
> Tim Wickberg<br>
> Chief Technology Officer, SchedMD<br>
> Commercial Slurm Development and Support<br>
> <br>
<br>
<br>
</blockquote></div>