EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  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  <20172018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Channel Archiver compilation error
From: Michael Davidsaver <[email protected]>
To: Heinz Junkes <[email protected]>
Cc: [email protected]
Date: Mon, 18 Dec 2017 19:48:09 -0600
Heinz/Lin,

Unfortunately I've only ever built ca2aa against the debian package repo for
channelarchiver.  I just verified that, after making some gcc6 and Base3.15 changes,
it and ca2aa build, and ca2aa passes tests.

I'm not sure of the relationship between https://github.com/EPICSTools/ChannelArchiver
and https://github.com/epicsdeb/channelarchiver.git

The epicsdeb repo originated from a tarfile with a 2.9.2 version number.
Of course, I may not have started with the latest version (back in 2010).
The EPICSTools repo carries a version number 3.0.0 (see make.cfg).  Which suggests
that it's more recent.  Unfortunately, the last tag is from 2008, so it isn't
straightforward for me to say more.

As far as ca2aa is concerned, unless the on disk format has changed
it shouldn't make a difference which version it is built against.

Michael


On 12/16/2017 05:27 AM, Heinz Junkes wrote:
> I'm trying to compile pbeApp which is part of ca2a and get the following error:
> 
> /usr/bin/g++ -c  -D_GNU_SOURCE -D_DEFAULT_SOURCE            -D_X86_64_  -DUNIX  -Dlinux     -O3 -g   -Wall       -m64      -MMD -I. -I../O.Common -I. -I.. -I../../include/os/Linux -I../../include -I/home/epics/EPICS/base/include/os/Linux -I/home/epics/EPICS/base/include       -I/home/epics/EPICS/extensions/include -I/home/epics/EPICS/extensions/src/ChannelArchiver/Storage  ../listpvs.cpp
> ../listpvs.cpp: In function ‘int main(int, char**)’:
> ../listpvs.cpp:38:25: error: cannot declare variable ‘iter’ to be of abstract type ‘Index::NameIterator’
>      Index::NameIterator iter;
>                          ^~~~
> In file included from /home/epics/EPICS/extensions/src/ChannelArchiver/Storage/ReaderFactory.h:9:0,
>                  from /home/epics/EPICS/extensions/src/ChannelArchiver/Storage/SpreadsheetReader.h:7,
>                  from ../listpvs.cpp:26:
> /home/epics/EPICS/extensions/src/ChannelArchiver/Storage/Index.h:104:11: note:   because the following virtual functions are pure within ‘Index::NameIterator’:
>      class NameIterator
>            ^~~~~~~~~~~~
> /home/epics/EPICS/extensions/src/ChannelArchiver/Storage/Index.h:110:22: note: 	virtual bool Index::NameIterator::isValid() const
>          virtual bool isValid() const = 0;
>                       ^~~~~~~
> /home/epics/EPICS/extensions/src/ChannelArchiver/Storage/Index.h:113:34: note: 	virtual const stdString& Index::NameIterator::getName() const
>          virtual const stdString &getName() const = 0;
>                                   ^~~~~~~
> /home/epics/EPICS/extensions/src/ChannelArchiver/Storage/Index.h:118:23: note: 	virtual void Index::NameIterator::next()
>          virtual void  next() = 0;
>                        ^~~~
> ../listpvs.cpp:39:13: error: ‘class AutoIndex’ has no member named ‘getFirstChannel’; did you mean ‘findChannel’?
>      if(!idx.getFirstChannel(iter)) {
>              ^~~~~~~~~~~~~~~
> ../listpvs.cpp:46:16: error: ‘class AutoIndex’ has no member named ‘getNextChannel’; did you mean ‘addChannel’?
>      }while(idx.getNextChannel(iter));
>                 ^~~~~~~~~~~~~~
> /home/epics/EPICS/base/configure/RULES_BUILD:221: recipe for target 'listpvs.o' failed
> make[2]: *** [listpvs.o] Error 1
> 
> Heinz
> 
> 
>> On 15. Dec 2017, at 16:42, Michael Davidsaver <[email protected]> wrote:
>>
>> You might also try https://github.com/epicsdeb/channelarchiver which is what I developed/tested my
>> ca2aa converter against.
>>
>>
>> On 12/15/2017 04:49 AM, Wang, Lin wrote:
>>> Hello Kay,
>>>
>>> I would like to build a Channel Archiver test environment to investigate data migration to Archiver Appliance.
>>>
>>> When I built the latest Channel Archiver source code from github [1] within EPICS_BASE/src directory, I encountered the following error:
>>>
>>> /usr/bin/g++ -c  -D_POSIX_C_SOURCE=199506L -D_POSIX_THREADS -D_XOPEN_SOURCE=500           -D_X86_64_  -DUNIX  -D_BSD_SOURCE -Dlinux  -D_REENTRANT   -g   -Wall     -D ARCH_VERSION=3 -D ARCH_RELEASE=0 -D ARCH_PATCH=0 -D ARCH_VERSION_TXT=\"3.0.0\" -I../../../../include -I../../../../include/os/Linux -I/usr/local/include -DFUX_XERCES  -m64      -MMD -I. -I../O.Common -I. -I.. -I../../../../include/os/Linux -I../../../../include        ../AVLTreeTest.cpp
>>> In file included from ../AVLTreeTest.cpp:4:0:
>>> ../AVLTree.h: In instantiation of ‘bool AVLTree<Item>::find(Item&) [with Item = int]’:
>>> ../AVLTreeTest.cpp:37:24:   required from here
>>> ../AVLTree.h:80:46: error: ‘sort_compare’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
>>>              comp = sort_compare(item, n->item);
>>>                                               ^
>>> ../AVLTreeTest.cpp:7:12: note: ‘int sort_compare(const int&, const int&)’ declared here, later in the translation unit
>>>  static int sort_compare(const int &a, const int &b)
>>>             ^
>>> In file included from ../AVLTreeTest.cpp:4:0:
>>> ../AVLTree.h: In instantiation of ‘bool AVLTree<Item>::insert(AVLItem<Item>*, AVLItem<Item>**) [with Item = int]’:
>>> ../AVLTree.h:61:28:   required from ‘void AVLTree<Item>::add(const Item&) [with Item = int]’
>>> ../AVLTreeTest.cpp:31:24:   required from here
>>> ../AVLTree.h:168:62: error: ‘sort_compare’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
>>>          int comp = sort_compare(new_node->item, (*node)->item);
>>>                                                               ^
>>> ../AVLTreeTest.cpp:7:12: note: ‘int sort_compare(const int&, const int&)’ declared here, later in the translation unit
>>>  static int sort_compare(const int &a, const int &b)
>>>             ^
>>> In file included from ../AVLTreeTest.cpp:4:0:
>>> ../AVLTree.h: In instantiation of ‘void AVLTree<Item>::print_dot_node(FILE*, AVLItem<Item>*, int&) [with Item = int; FILE = _IO_FILE]’:
>>> ../AVLTree.h:286:34:   required from ‘void AVLTree<Item>::make_dotfile(const char*) [with Item = int]’
>>> ../AVLTreeTest.cpp:49:28:   required from here
>>> ../AVLTree.h:220:40: error: ‘toString’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
>>>                  me, toString(node->item), (int)node->balance);
>>>                                         ^
>>> ../AVLTreeTest.cpp:20:20: note: ‘const char* toString(const int&)’ declared here, later in the translation unit
>>>  static const char *toString(const int &i)
>>>                     ^
>>> ../../../../configure/RULES_BUILD:209: recipe for target 'AVLTreeTest.o' failed
>>> make[2]: *** [AVLTreeTest.o] Error 1
>>> make[2]: Leaving directory '/home/wanglin/base-3.14.12.3/src/ChannelArchiver/Tools/O.linux-x86_64'
>>> ../../../configure/RULES_ARCHS:63: recipe for target 'install.linux-x86_64' failed
>>> make[1]: *** [install.linux-x86_64] Error 2
>>> make[1]: Leaving directory '/home/wanglin/base-3.14.12.3/src/ChannelArchiver/Tools'
>>> ../../configure/RULES_DIRS:70: recipe for target 'Tools.install' failed
>>> make: *** [Tools.install] Error 2
>>>
>>> If I move sort_compare() and toString() methods to the position before "#include AVLTree.h" in Tools/AVLTreeTest.cpp as follows, the problem is gone.
>>>
>>>
>>> #include <stdio.h>
>>> #include <stdlib.h>
>>>
>>> static int sort_compare(const int &a, const int &b)
>>> {   return b-a; }
>>>
>>> static const char *toString(const int &i)
>>> {
>>>     static char txt[10];
>>>     sprintf(txt, "%d", i);
>>>     return txt;
>>> }
>>>
>>> #include "AVLTree.h"
>>> #include "UnitTest.h"
>>>
>>> static int avl_last_number;
>>> static bool tree_is_ordered;
>>>
>>> static void avl_order_test(const int &i, void *)
>>> {
>>>     if (i < avl_last_number)
>>>         tree_is_ordered = false;
>>>     avl_last_number = i;
>>> }
>>>
>>> Will this workaround cause any issue? Is there any other solution recommended?
>>>
>>>
>>> My platform is Debian 8 (Jessie), gcc/g++ 4.9.2
>>>
>>>
>>>
>>> Thanks,
>>>
>>> Lin
>>>
>>>
>>> [1] https://github.com/EPICSTools/ChannelArchiver
>>>
>>
> 


Replies:
Re: Channel Archiver compilation error Heinz Junkes
References:
Channel Archiver compilation error Wang, Lin
Re: Channel Archiver compilation error Michael Davidsaver
Re: Channel Archiver compilation error Heinz Junkes

Navigate by Date:
Prev: Re: Puzzled with lockset(?) problem Michael Davidsaver
Next: Helium Purity Sensors austen.rose
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Channel Archiver compilation error Heinz Junkes
Next: Re: Channel Archiver compilation error Heinz Junkes
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024 
ANJ, 21 Dec 2017 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·