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  2017  2018  2019  <20202021  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  <20202021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: RE: RE: SteamDevice 2.8.x build on Windows issue
From: 吴煊 via Tech-talk <tech-talk at aps.anl.gov>
To: "freddie akeroyd - ukri stfc" <freddie.akeroyd at stfc.ac.uk>
Cc: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Tue, 21 Jul 2020 22:37:09 +0800 (GMT+08:00)
Hi Freddie,

I just have a test as your suggestion: remove the HOST_OPT and rebuild stream. It works now! Many thanks. 

The newest version 2.8.14 also have HOST_OPT, the master branch have removed it.

About MinGW, I have installed only Strawberry Perl 5.30, GNU make 4.2.1 and MSVC 2017/2019. I have tried either gmake.exe from Strawberry or make.exe from GNU make to build base. I'm not sure how they get mixed.

PS: I'm a little confused with the PATH setting in RELEASE file on windows. It should use slash or back slash in the path like ASYN=D:\epics\asyn4-38,, or both are ok?

Regards,

Xuan

-----原始邮件-----
发件人:"Freddie Akeroyd - UKRI STFC" <freddie.akeroyd at stfc.ac.uk>
发送时间:2020-07-21 22:03:11 (星期二)
收件人: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>, "'吴煊'" <wux at ihep.ac.cn>
抄送:
主题: RE: RE: SteamDevice 2.8.x build on Windows issue

Hi,

 

stream device uses getenv() to read  STREAM_PROTOCOL_PATH and environment variables can be stored in CRTL specific lists, so I originally thought there were different C runtime libraries getting mixed in. The link I posted about removing HOST_OPT was to avoid debug and release Microsoft libraries getting mixed. However Mark’s comment about MinGW is interesting – do you have MinGW installed? If the visual studio compile has accidentally  picked up some mingw includes, or mingw and visual studio built files have got combined, that could likely result in the environment variable lists not matching up (and probably other problems too)

 

Regards,

 

Freddie

 

From: Mark Rivers <rivers at cars.uchicago.edu>
Sent: 21 July 2020 14:01
To: '
吴煊' <wux at ihep.ac.cn>; Akeroyd, Freddie (STFC,RAL,ISIS) <freddie.akeroyd at stfc.ac.uk>
Cc: tech-talk at aps.anl.gov
Subject: RE: RE: SteamDevice 2.8.x build on Windows issue

 

I just tested with base 7.0.4, stream 2.8.14, Visual Studio 2017, Windows 10. 

 

It works OK, I do not get the error about STREAM_PROTOCOL_PATH being undefined. 

 

I don’t actually have the device connected, so Stream is reporting timeouts.

 

Here is the output when I start the IOC.

 

J:\epics\devel\CARS\iocBoot\ioc13LQExcel>..\..\bin\windows-x64-static-vs2017\CARSApp.exe st.cmd.test

errlogInit(5000)

< envPaths

epicsEnvSet("IOC","ioc13LQExcel")

epicsEnvSet("TOP","J:/epics/devel/CARS")

epicsEnvSet("SUPPORT","J:/epics/devel")

epicsEnvSet("ALLEN_BRADLEY","J:/epics/devel/allenBradley-2-3")

epicsEnvSet("AREA_DETECTOR","J:/epics/devel/areaDetector-3-9")

epicsEnvSet("EPICS_BASE","H:/epics-devel/base-7.0.4")

epicsEnvSet("ASYN","J:/epics/devel/asyn-4-40")

epicsEnvSet("ADSUPPORT","J:/epics/devel/areaDetector-3-9/ADSupport")

epicsEnvSet("ADCORE","J:/epics/devel/areaDetector-3-9/ADCore")

epicsEnvSet("AUTOSAVE","J:/epics/devel/autosave-5-10")

epicsEnvSet("BUSY","J:/epics/devel/busy-1-7-2")

epicsEnvSet("CALC","J:/epics/devel/calc-3-7-3")

epicsEnvSet("SNCSEQ","J:/epics/devel/seq-2-2-5")

epicsEnvSet("SSCAN","J:/epics/devel/sscan-2-11-3")

epicsEnvSet("DEVIOCSTATS","J:/epics/devel/devIocStats-3-1-16")

epicsEnvSet("ADANDOR","J:/epics/devel/areaDetector-3-9/ADAndor")

epicsEnvSet("ADROPER","J:/epics/devel/areaDetector-3-9/ADRoper")

epicsEnvSet("ADLIGHTFIELD","J:/epics/devel/areaDetector-3-9/ADLightField")

epicsEnvSet("ADMAR345","J:/epics/devel/areaDetector-3-9/ADmar345")

epicsEnvSet("ADMARCCD","J:/epics/devel/areaDetector-3-9/ADmarCCD")

epicsEnvSet("ADPERKINELMER","J:/epics/devel/areaDetector-3-9/ADPerkinElmer")

epicsEnvSet("ADPILATUS","J:/epics/devel/areaDetector-3-9/ADPilatus")

epicsEnvSet("ADPROSILICA","J:/epics/devel/areaDetector-3-9/ADProsilica")

epicsEnvSet("ADPOINTGREY","J:/epics/devel/areaDetector-3-9/ADPointGrey")

epicsEnvSet("ADEIGER","J:/epics/devel/areaDetector-3-9/ADEiger")

epicsEnvSet("ADGENICAM","J:/epics/devel/areaDetector-3-9/ADGenICam")

epicsEnvSet("ADSPINNAKER","J:/epics/devel/areaDetector-3-9/ADSpinnaker")

epicsEnvSet("ADARAVIS","J:/epics/devel/areaDetector-3-9/ADAravis")

epicsEnvSet("ADVIMBA","J:/epics/devel/areaDetector-3-9/ADVimba")

epicsEnvSet("CARS","J:/epics/devel/CARS")

epicsEnvSet("CRYOCONM32","J:/epics/devel/CryoconM32")

epicsEnvSet("DAC128V","J:/epics/devel/dac128V-2-9")

epicsEnvSet("DANTE","J:/epics/devel/dante-1-0")

epicsEnvSet("DELAYGEN","J:/epics/devel/delaygen-1-2-1")

epicsEnvSet("IP","J:/epics/devel/ip-2-20-1")

epicsEnvSet("IPAC","J:/epics/devel/ipac-2-15")

epicsEnvSet("IP330","J:/epics/devel/ip330-2-9")

epicsEnvSet("IPUNIDIG","J:/epics/devel/ipUnidig-2-11")

epicsEnvSet("MCA","J:/epics/devel/mca-7-8")

epicsEnvSet("MEASCOMP","J:/epics/devel/measComp-2-4")

epicsEnvSet("MODBUS","J:/epics/devel/modbus-3-0")

epicsEnvSet("MOTOR","J:/epics/devel/motor-7-0")

epicsEnvSet("OPTICS","J:/epics/devel/optics-2-13-3")

epicsEnvSet("QUADEM","J:/epics/devel/quadEM-9-3")

epicsEnvSet("SOFTGLUE","J:/epics/devel/softGlue-2-8-2")

epicsEnvSet("STD","J:/epics/devel/std-3-6")

epicsEnvSet("STREAM","J:/epics/devel/stream-2-8-14")

epicsEnvSet("TPMAC","J:/epics/devel/tpmac-3-11dls5")

epicsEnvSet("VAC","J:/epics/devel/vac-1-9")

epicsEnvSet("VME","J:/epics/devel/vme-2-9-2")

epicsEnvSet(STREAM_PROTOCOL_PATH, J:/epics/devel/ip-2-20-1/db:J:/epics/devel/CARS/db)

# Tell EPICS all about the record types, device-support modules, drivers,

# etc. in this build from CARS

dbLoadDatabase("../../dbd/CARSWin32.dbd")

CARSWin32_registerRecordDeviceDriver(pdbbase)

drvAsynSerialPortConfigure("serial1", "COM1")

asynOctetSetInputEos("serial1",0,"\r\n")

asynOctetSetOutputEos("serial1",0,"\r\n")

# Laser Quantum Excel laser

dbLoadRecords("J:/epics/devel/CARS/db/LQExcel.db", "P=13LQE1:,R=L1,PORT=serial1")

iocInit

Starting iocInit

############################################################################

## EPICS R7.0.4

## Rev. GSECARS-Build

############################################################################

2020/07/21 07:43:48.499261 serial1 13LQE1:L1PowerOut: No reply within 1000 ms to "POWER?"

2020/07/21 07:43:48.508047 win4cd4 13LQE1:L1PowerOut: @init handler failed

2020/07/21 07:43:48.514825 win4cd4 13LQE1:L1PowerOut: Record initialization failed

iocRun: All initialization complete

epics> 2020/07/21 07:43:50.546082 serial1 13LQE1:L1PowerIn: No reply within 1000 ms to "POWER?"

2020/07/21 07:43:51.556041 serial1 13LQE1:L1LaserTemp: No reply within 1000 ms to "LASTEMP?"

 

epics> 2020/07/21 07:43:52.566191 serial1 13LQE1:L1PowerIn: No reply within 1000 ms to "POWER?"

2020/07/21 07:43:53.576246 serial1 13LQE1:L1PSUTemp: No reply within 1000 ms to "PSUTEMP?"

2020/07/21 07:43:54.586484 serial1 13LQE1:L1LaserTemp: No reply within 1000 ms to "LASTEMP?"

 

It is clearly finding and using STREAM_PROTOCOL_PATH because it is finding the protocol file, which is located in J:/epics/devel/CARS/db, not the current directory.

 

I cannot explain why you are getting the error that STREAM_PROTOCOL_PATH is undefined.  Please try the following command at the iocsh prompt.

 

epicsEnvShow "STREAM_PROTOCOL_PATH"

 

This is what I see:

 

epics> epicsEnvShow "STREAM_PROTOCOL_PATH"

STREAM_PROTOCOL_PATH=J:/epics/devel/ip-2-20-1/db:J:/epics/devel/CARS/db

 

You do get a build error when EPICS_HOST_ARCH=windows-x64-mingw.  That is probably because the version of inttypes.h that it is finding does not define SCNx8, but I am not sure.

 

Mark

 

 

From: 吴煊 <wux at ihep.ac.cn>
Sent: Tuesday, July 21, 2020 2:57 AM
To: freddie akeroyd - ukri stfc <freddie.akeroyd at stfc.ac.uk>
Cc: Mark Rivers <rivers at cars.uchicago.edu>; tech-talk at aps.anl.gov
Subject: Re: RE: SteamDevice 2.8.x build on Windows issue

 

There is something wrong with what I said in my previous email. It's ture that steam 2.8.13 can be built successfully with Visual Studio 2017 and Visual Studio 2019. However, it will be aborted when the application start(when execute iocInit actually), but it can be run correctly with Stream 2.7.14. You can check the info in attachment.

I also try to compile stream with 3.14.12.8:

MSVC:2017 community

EPICS_HOST_ARCH=windows-x64

Stream 2.8.13 can be built, but the application can't be run properly. The result is the same as Stream2.8.13.PNG

*************************************************************************************************

EPICS_HOST_ARCH=windows-x64-mingw

Stream 2.8.13 build failed. The error info is :../ChecksumConverter.cc:777:51: error: expected ')' before 'SCNx8' Regards,
Xuan

-----原始邮件-----
发件人:"Freddie Akeroyd - UKRI STFC" <freddie.akeroyd at stfc.ac.uk>
发送时间:2020-07-20 20:31:01 (星期一)
收件人: "Mark Rivers" <rivers at cars.uchicago.edu>, "'吴煊'" <wux at ihep.ac.cn>
抄送: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
: RE: SteamDevice 2.8.x build on Windows issue

Hi,

 

I wasn’t able to check your exact combination, but I ran a few visual studio combinations from 2013 to 2019 through Appveyor and they all seemed OK

https://ci.appveyor.com/project/FreddieAkeroyd/streamdevice/builds/34184691

 

Maybe it is picking up an incorrect include or definition from somewhere - if you check the C pre-processor output for the file compilation that will show what headers are being loaded from where and might help locate the issue

 

Regards,

 

Freddie

 

From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of Mark Rivers via Tech-talk
Sent: 19 July 2020 20:51
To: '
吴煊' <wux at ihep.ac.cn>
Cc: tech-talk at aps.anl.gov
Subject: RE: SteamDevice 2.8.x build on Windows issue

 

I just built stream 2.8.14 successfully with both Visual Studio 2015 and Visual Studio 2017.  I don’t have 2019 installed so I could not test that, but I would be surprised if it failed.

 

My environment:

OS:Windows 10 x64

base7.0.4

asyn4-40

MSVC2015, 2017 Community

GNU make:4.2.1

Perl64:5.24.3

 

SCNx8 is defined in inttypes.h for Visual Studio.  This is where it is found in all of the inttypes.h files in C:\Program Files (x86)\Windows Kits.

 

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

[2020-07-19 14:46.55]  /cygdrive/c/Program Files (x86)/Windows Kits

[rivers.Camaro] find . -name inttypes.h -exec grep -H SCNx8 {} \;

./10/Include/10.0.10150.0/ucrt/inttypes.h:#define SCNx8        "hhx"

./10/Include/10.0.10150.0/ucrt/inttypes.h:#define SCNxLEAST8   SCNx8

./10/Include/10.0.10150.0/ucrt/inttypes.h:#define SCNxFAST8    SCNx8

./10/Include/10.0.10240.0/ucrt/inttypes.h:#define SCNx8        "hhx"

./10/Include/10.0.10240.0/ucrt/inttypes.h:#define SCNxLEAST8   SCNx8

./10/Include/10.0.10240.0/ucrt/inttypes.h:#define SCNxFAST8    SCNx8

./10/Include/10.0.16299.0/ucrt/inttypes.h:#define SCNx8        "hhx"

./10/Include/10.0.16299.0/ucrt/inttypes.h:#define SCNxLEAST8   SCNx8

./10/Include/10.0.16299.0/ucrt/inttypes.h:#define SCNxFAST8    SCNx8

./10/Include/10.0.17763.0/ucrt/inttypes.h:#define SCNx8        "hhx"

./10/Include/10.0.17763.0/ucrt/inttypes.h:#define SCNxLEAST8   SCNx8

./10/Include/10.0.17763.0/ucrt/inttypes.h:#define SCNxFAST8    SCNx8

                                                                           

 

I also found that git needed to be installed on Windows to build 2.8.14.  For other modules with base 7.0.4 it was sufficient to make “fake” git.bat that just contained:

@echo GSECARS-Build

 

However, stream actually checks the syntax of the returned string, and that trick fails.

 

Mark

 

 

 

From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of ?? via Tech-talk
Sent: Sunday, July 19, 2020 8:19 AM
To: tech-talk <tech-talk at aps.anl.gov>
Subject: SteamDevice 2.8.x build on Windows issue

 

Hi all,

  I find that the SteamDevice(from 2.8 to 2.8.14) can not be built on Win7 x64. The error info is :../ChecksumConverter.cc:777:51: error: expected ')' before 'SCNx8'. However the version of 2.7.14 can be built successfully. I've checked the file ChecksumConverter.cc, there is some difference between them like following:

2.8.x:   if (sscanf(input(cursor+2*i), "%2" SCNx8, &inchar) != 1)

2.7.14:  if (sscanf(input(cursor+2*i), "%2X", &inchar) != 1)

 

The software environment I'm using:

OS:Win7 x64

base3.15.8

asyn4-38

MSVC2019 community

GNU make:4.2.1

Strawberry:5.30.1

 

PSSteamDevice 2.8.14 is dependency with git, the other versions are not

Cheers,

Xuan

This email and any attachments are intended solely for the use of the named recipients. If you are not the intended recipient you must not use, disclose, copy or distribute this email or any of its attachments and should notify the sender immediately and delete this email from your system. UK Research and Innovation (UKRI) has taken every reasonable precaution to minimise risk of this email or any attachments containing viruses or malware but the recipient should carry out its own virus and malware checks before opening the attachments. UKRI does not accept any liability for any losses or damages which the recipient may sustain due to presence of any viruses. Opinions, conclusions or other information in this message and attachments that are not related directly to UKRI business are solely those of the author and do not represent the views of UKRI.

This email and any attachments are intended solely for the use of the named recipients. If you are not the intended recipient you must not use, disclose, copy or distribute this email or any of its attachments and should notify the sender immediately and delete this email from your system. UK Research and Innovation (UKRI) has taken every reasonable precaution to minimise risk of this email or any attachments containing viruses or malware but the recipient should carry out its own virus and malware checks before opening the attachments. UKRI does not accept any liability for any losses or damages which the recipient may sustain due to presence of any viruses. Opinions, conclusions or other information in this message and attachments that are not related directly to UKRI business are solely those of the author and do not represent the views of UKRI.


References:
SteamDevice 2.8.x build on Windows issue 吴煊 via Tech-talk
RE: SteamDevice 2.8.x build on Windows issue Mark Rivers via Tech-talk
RE: SteamDevice 2.8.x build on Windows issue Freddie Akeroyd - UKRI STFC via Tech-talk
Re: RE: SteamDevice 2.8.x build on Windows issue 吴煊 via Tech-talk
RE: RE: SteamDevice 2.8.x build on Windows issue Mark Rivers via Tech-talk
RE: RE: SteamDevice 2.8.x build on Windows issue Freddie Akeroyd - UKRI STFC via Tech-talk

Navigate by Date:
Prev: RE: RE: SteamDevice 2.8.x build on Windows issue Freddie Akeroyd - UKRI STFC via Tech-talk
Next: Re: RE: SteamDevice 2.8.x build on Windows issue Ralph Lange via Tech-talk
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  <20202021  2022  2023  2024 
Navigate by Thread:
Prev: RE: RE: SteamDevice 2.8.x build on Windows issue Freddie Akeroyd - UKRI STFC via Tech-talk
Next: Re: RE: SteamDevice 2.8.x build on Windows issue Ralph Lange via Tech-talk
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  <20202021  2022  2023  2024 
ANJ, 21 Jul 2020 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·