Hi Geof,

is there a chance to manually specify where the config files go in terms
environment variables? I.e., tell the installer to put what is in
PREFIX/etc into %APPDATA%?

Best regards,
Marcus


On 09.05.2016 17:37, Geof Nieboer wrote:
> Tony, that's good news.
>
> The nice thing is that the environment variables can generally be made
> as relative paths, so I should be able include setting that
> automatically for everyone as part of the msi.  The $home directory is
> probably the best place as Windows doesn't want users changing files
> in the program files directory.
>
> Marcus,
>
> The way the scripts works is the first you describe, it makes a
> "staged install", during the build process, then Wix comes in and
> scans through that directory to create the installation image,
> including Python.  The key to making that work on the other end is the
> run_gr.bat file that used to set that particular environment prior to
> running any scripts. It sets the python path for instance... All based
> off the directory that the batch file is in ($installer_dir/bin)
>
> So any environment variables that gnuradio can use can be set there
> without impacting ( or being impacted by) the result of the system.  
>
> Geof
>
> On Monday, May 9, 2016, Tony Richardson <richardson.t...@gmail.com
> <mailto:richardson.t...@gmail.com>> wrote:
>
>     Thanks Marcus.
>
>     I just set the environment variable that you mentioned in the
>     run_gr.bat file that Geof mentioned and portaudio now works.  I
>     realize it is not a clean solution, but it is a working one.  I am
>     happy.
>
>     Tony
>
>
>
>
>
>     On Mon, May 9, 2016 at 9:42 AM, Marcus Müller
>     <marcus.muel...@ettus.com
>     <javascript:_e(%7B%7D,'cvml','marcus.muel...@ettus.com');>> wrote:
>
>         Hi Tony,
>
>         to be honest, I'll be rewriting GNU Radio's slightly dated and
>         slightly ugly preference system, as it seems, so I'm not 100%
>         giving up on this.
>         So, I hope the spirit of the workaround was clear to you: you
>         can always manually set this particular setting via python
>         (instead of specifying it in a configuration file).
>         The python module "detour" was just an attempt to make that a
>         permanent feature of the flow graph. Instead, I could have
>         just asked you to add it pretty far up in the generated
>         top_block.py (or whatever your generated python file is
>         called). There's also another way of specifying such settings
>         – environment variables (which under windows are especially
>         little fun to set...).
>         You can (as documented in [1]) specify a setting as an
>         environment variable; in your case, something like
>
>         GR_CONF_audio_audio_module = portaudio
>
>         I know you can configure environment variables /somewhere  /in
>         windows, but I forget where – my Windows usage is just too rare.
>
>         Best regards,
>         Marcus
>
>         [1] http://gnuradio.org/doc/doxygen/page_prefs.html
>
>
>         On 09.05.2016 14:33, Tony Richardson wrote:
>>         There appear to be some problems with "python module"s in
>>         Windows GRC too.  I get an error that the editor can't find a
>>         particular file.  If I add the python block in GRC, then have
>>         it generate code and add the code to the corresponding Python
>>         file from an external editor - I can then run the top level
>>         Python file from a command prompt and it works!  (Appears to
>>         be using portaudio).
>>
>>         If I try to execute from GRC it replaces my Python source
>>         with a file containing the line:
>>
>>            # this module will be imported in the into your flowgraph
>>
>>         and will not run anymore.
>>
>>         Thanks for your help, but I agree that it is time to give up.
>>
>>         Tony
>>
>>
>>         On Mon, May 9, 2016 at 3:45 AM, Marcus Müller
>>         <marcus.muel...@ettus.com
>>         <javascript:_e(%7B%7D,'cvml','marcus.muel...@ettus.com');>>
>>         wrote:
>>
>>             Hi Tony,
>>
>>             > The lack of path separators is troubling.
>>
>>             I couldn't agree more. But since that just means that the
>>             separator get's "eaten" somewhere, and we don't know
>>             whether that happens when generating these paths or just
>>             when printing, I'm still full of hope…
>>>             The fact these directories don't exist on my machine
>>>             (even with appropriate separators) is more troubling.  
>>             … my hopes being crushed.
>>
>>             > Is there a way to override the default values?
>>
>>             Yes, but not at runtime, I'm afraid: The "first"
>>             directory a program looks into for configuration has to
>>             be hard-coded somewhere, and in the case of GNU Radio,
>>             it's specified via the GR_PREFSDIR CMake Variable when
>>             building GNU Radio.
>>             That happens in the gnuradio/gnuradio/lib/constants.cc.in
>>             <http://constants.cc.in> file, where CMake expands the
>>             @GR_PREFSDIR@ macro.  The actual setting of that variable
>>             happens in the main gnuradio/CMakeLists.txt, line 165
>>
>>                set(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/${GR_CONF_DIR}" CACHE 
>> PATH "System configuration directory" FORCE)
>>
>>             so we learn that CMAKE_INSTALL_PREFIX was set to
>>             C:gr-buildsrc-stage3staged_install, plus a few \, probably :D
>>
>>             So that's essentially where I'd have to give up: That
>>             code was put there during build, and I can't change it later.
>>
>>             What I'll probably do is a bug report about GNU Radio,
>>             upon finding the prefsdir path not to be a directory (in
>>             your case: not to exist at all) giving up and not even
>>             trying to read any other paths. I might fix that by
>>             allowing users to specify these directories as
>>             environment variables; that would make sense to me, but
>>             as it kind of changes "logical" API, I'd like to discuss
>>             this with a maintainer.
>>
>>             I think I might come up with a workaround, however.
>>             Again, I haven't tried this, especially not under
>>             windows, where the whole "launch an editor and edit that
>>             file" aspect might fail, but *shrug*:
>>
>>             In your GRC flow graph, add a "python module".
>>             There, without indenting, add the following code
>>
>>             from gnuradio import gr
>>             p = gr.prefs()
>>             p.set_string("audio","audio_module","portaudio")
>>
>>             and close the editor. Basically, you're setting the
>>             configuration option manually for the meantime.
>>
>>             Best regards,
>>             Marcus
>>
>>
>>             On 09.05.2016 04:38, Tony Richardson wrote:
>>>             The command:
>>>                 gnuradio-config-info --prefsdir --sysconfdir
>>>             returns
>>>
>>>                   C:gr-buildsrc-stage3staged_installReleaseetc
>>>                
>>>               C:gr-buildsrc-stage3staged_installReleaseetcgnuradioconf.d
>>>
>>>             The lack of path separators is troubling.  The fact
>>>             these directories don't exist on my machine (even with
>>>             appropriate separators) is more troubling.  I assume
>>>             this is why config files in the installed etc directory
>>>             are not being read.  After using the Windows installer,
>>>             I have what appear to be corresponding directories here:
>>>
>>>                   C:\Program Files\GNURadio-3.7\etc
>>>                   C:\Program Files\GNURadio-3.7\etc\gnuradio\conf.d
>>>
>>>             I have a HOME environment variable defined in Windows,
>>>             so I think GRC is looking in $HOME/.gnuradio for a
>>>             config.conf file.  Running GRC actually creates a
>>>             $HOME/.gnuradio directory and places some configuration
>>>             files in that directory, but doesn't appear to read from
>>>             it.  I also tried putting a config.conf file in the
>>>             APPDATA/.gnuradio directory but it isn't being read either.
>>>
>>>             Is there a way to override the default values?
>>>
>>>             Tony Richardson
>>>
>>>             On Sat, May 7, 2016 at 9:05 AM, Marcus Müller
>>>             <marcus.muel...@ettus.com
>>>             <javascript:_e(%7B%7D,'cvml','marcus.muel...@ettus.com');>>
>>>             wrote:
>>>
>>>                 Sooo gnuradio-runtime/lib/prefs.cc:
>>>
>>>                  77     // Find if there is a ~/.gnuradio/config.conf file 
>>> and add this to
>>>                  78     // the end of the file list to override any 
>>> preferences in the
>>>                  79     // installed path config files.
>>>                  80     fs::path homedir = fs::path(gr::appdata_path());
>>>                  81     homedir = homedir/".gnuradio/config.conf";
>>>                  82     if(fs::exists(homedir)) {
>>>                  83       fnames.push_back(homedir.string());
>>>                  84     }
>>>                  85 
>>>
>>>                 This means that things in Users/youruser/Application
>>>                 Data/.gnuradio/config.conf *should* be read.
>>>
>>>>                 I also tried changing the canvas size in the
>>>>                 "c:/Program
>>>>                 Files/GNURadio-3.7/etc/gnuradio/conf.d/grc.conf"
>>>>                 file, which I think is supposed to be the
>>>>                 system-wide file, but changes there have no effect
>>>>                 either.
>>>                 Uh-oh.
>>>
>>>                 Can you execute a
>>>
>>>                 gnuradio-config-info --prefsdir --sysconfdir     
>>>
>>>                 please?
>>>
>>>                 Back to topic:
>>>>                 Is there a way for me to figure out what
>>>>                 configuration files are being read?
>>>
>>>                 I'm really not experienced Windows debugger; under
>>>                 Unixes, I'd do run like (to trace all "stat" calls,
>>>                 ie. when the code above checks for the existence of
>>>                 config.conf)
>>>
>>>                 strace -e stat  -o '|grep config.conf'  
>>> gnuradio-config-info -v    
>>>
>>>
>>>                 but I really don't know whether that even works in
>>>                 theory under Windows.
>>>
>>>                 I'm a bit worried about this line:
>>>
>>>                  81     homedir = homedir/".gnuradio/config.conf";
>>>
>>>                 Because it implicitly assumes that the OS considers
>>>                 "/" as path separator between .gnuradio and
>>>                 config.conf. Boost might or might not fix that under
>>>                 windows. But it's probably OK.
>>>
>>>                 Best regards,
>>>                 Marcus
>>>
>>>
>>>                 On 07.05.2016 15:41, Marcus Müller wrote:
>>>>                 The * is actually just an artifact of how that list
>>>>                 is generated; it's written by CMake when gathering
>>>>                 the enabled audio engines; When running cmake,
>>>>                 you'll see something like
>>>>
>>>>                 -- ######################################################
>>>>                 -- # Gnuradio enabled components                         
>>>>                 -- ######################################################
>>>>                 --   * python-support
>>>>                 --   * testing-support
>>>>                 [..]
>>>>                 --   * gr-atsc
>>>>                 --   * gr-audio
>>>>                 --   * * alsa
>>>>                 --   * * oss
>>>>                 --   * * portaudio
>>>>                 --   * gr-channels
>>>>                 [...]
>>>>
>>>>                 And our beautiful hack to make alsa, oss, portaudio
>>>>                 ... look like bullet points under gr-audio is
>>>>                 actually to get these the name "* alsa", "* oss"
>>>>                 and so on :D. That doesn't break automatic
>>>>                 "grep-ability" to let scripts check for any of
>>>>                 these, and if you had something like
>>>>
>>>>                 gnuradio-config-info --enabled-components|sed
>>>>                 s'/;/\n/g'
>>>>
>>>>                 it'd give you the "original" tree-ish looking
>>>>                 structure.
>>>>
>>>>                 so, for now, that's totally ok.
>>>>>                 Is there a way for me to figure out what
>>>>>                 configuration files are being read?
>>>>                 Hm, logging. Waaaaitasec. I'll have to look this
>>>>                 up; will do later.
>>>>
>>>>                 Best regards,
>>>>                 Marcus
>>>>
>>>>
>>>>                 On 06.05.2016 14:55, Tony Richardson wrote:
>>>>>                 I think I'm making progress with your help Marcus.  
>>>>>
>>>>>                 The output of "gnuradio-config-info
>>>>>                 --enabled-components" is:
>>>>>
>>>>>                 
>>>>> python-support;testing-support;volk;doxygen;sphinx;gnuradio-runtime;gr-ctrlport;gr-blocks;gnuradio-companion;gr-fec;gr-fft;gr-filter;gr-analog;gr-digital;gr-dtv;gr-atsc;gr-audio;*
>>>>>                 portaudio;*
>>>>>                 
>>>>> windows;gr-channels;gr-noaa;gr-pager;gr-qtgui;gr-trellis;gr-uhd;gr-utils;gr-video-sdl;gr-vocoder;gr-fcd;gr-wavelet;gr-wxgui;gr-zeromq
>>>>>
>>>>>                 What does the '*' before portaudio mean?
>>>>>
>>>>>                 I think you are also correct in that it appears my
>>>>>                 config.conf file is not being read.  GRC created a
>>>>>                 ~/.gnuradio directory and populated it with a
>>>>>                 grc.conf file and prefs directory.  I created a
>>>>>                 config.conf file in the same directory.  Adding
>>>>>                 the [grc] stanza seems to have no effect.  I also
>>>>>                 tried changing the canvas size in the "c:/Program
>>>>>                 Files/GNURadio-3.7/etc/gnuradio/conf.d/grc.conf"
>>>>>                 file, which I think is supposed to be the
>>>>>                 system-wide file, but changes there have no effect
>>>>>                 either.  Is there a way for me to figure out what
>>>>>                 configuration files are being read?
>>>>>
>>>>>                 Tony Richardson
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                 On Fri, May 6, 2016 at 3:14 AM, Marcus Müller
>>>>>                 <marcus.muel...@ettus.com
>>>>>                 
>>>>> <javascript:_e(%7B%7D,'cvml','marcus.muel...@ettus.com');>>
>>>>>                 wrote:
>>>>>
>>>>>                     Huh, can you verify portaudio is in the output
>>>>>                     of "gnuradio-config-info --enabled-components" ?
>>>>>
>>>>>                     Can you add another section,
>>>>>
>>>>>
>>>>>                     [audio_portaudio]
>>>>>                     verbose = true
>>>>>
>>>>>                     Just to verify: you're using the "[..]"
>>>>>                     section headers correctly, and the rest of the
>>>>>                     conf file looks ungarbled, right?
>>>>>
>>>>>                     We might be encountering a case where the
>>>>>                     config file simply isn't read; as a quick test:
>>>>>                     Close all gnuradio-companions, add
>>>>>
>>>>>                     [grc]
>>>>>                     canvas_default_size = 100,100
>>>>>
>>>>>                     to that file, and open up the companion – your
>>>>>                     canvas size should now be 100x100px. Is that
>>>>>                     the case?
>>>>>
>>>>>                     Best regards,
>>>>>                     Marcus
>>>>>
>>>>>
>>>>>                     On 06.05.2016 00:20, Tony Richardson wrote:
>>>>>>                     Thanks, but I've tried that (setting
>>>>>>                     "audio_module = portaudio").  It doesn't
>>>>>>                     appear to have the desired effect.
>>>>>>
>>>>>>                     Tony
>>>>>>
>>>>>>                     On Thu, May 5, 2016 at 4:26 PM, Marcus Müller
>>>>>>                     <marcus.muel...@ettus.com
>>>>>>                     
>>>>>> <javascript:_e(%7B%7D,'cvml','marcus.muel...@ettus.com');>>
>>>>>>                     wrote:
>>>>>>
>>>>>>                         Sorry, not currently running any Windows
>>>>>>                         VM, but in the spirit of giving you the
>>>>>>                         info you need as fast as possible:
>>>>>>
>>>>>>                         Quick lecture of the audio sink/source
>>>>>>                         factory tells me that under windows, by
>>>>>>                         default the windows audio architecture is
>>>>>>                         used.
>>>>>>                         So to use portaudio instead, you need to
>>>>>>                         have a GNU Radio config file (under
>>>>>>                         unixoids, that's
>>>>>>                         ~/.gnuradio/config.conf), and add
>>>>>>
>>>>>>                         [audio]
>>>>>>                         audio_module= portaudio
>>>>>>
>>>>>>
>>>>>>                         Best regards,
>>>>>>                         Marcus
>>>>>>
>>>>>>                         On 05.05.2016 22:59, Tony Richardson wrote:
>>>>>>>                         I'm using the pre-built Win64 binary of
>>>>>>>                         GNURadio listed on the gnuradio.org
>>>>>>>                         <http://gnuradio.org> site.  The
>>>>>>>                         portaudio library was included as part
>>>>>>>                         of the Win64 build, but I can't seem to
>>>>>>>                         figure out how to use it instead of the
>>>>>>>                         default windows audio.  (I want an audio
>>>>>>>                         source and the windows audio source does
>>>>>>>                         not work.)  I've tried putting
>>>>>>>                         "audio_module = portaudio" (and
>>>>>>>                         "audio_module = audio_portaudio") in the
>>>>>>>                         config.conf file, but when I run a
>>>>>>>                         simple flowgraph that includes an audio
>>>>>>>                         source and sink, I see:
>>>>>>>
>>>>>>>                         INFO: Audio source arch: windows
>>>>>>>                         INFO: Audio sink arch: windows
>>>>>>>
>>>>>>>                         in the console and there is no sound.  I
>>>>>>>                         assume the lines above are telling me
>>>>>>>                         that the windows audio devices are being
>>>>>>>                         used and not the desired portaudio
>>>>>>>                         devices.  I have tried leaving the
>>>>>>>                         device name in the audio source blank as
>>>>>>>                         well as trying "0" and "hw:0,0", but
>>>>>>>                         still see the messages above.  Can
>>>>>>>                         someone tell me how to configure audio
>>>>>>>                         for portaudio or is it just not supported?
>>>>>>>
>>>>>>>                         Tony Richardson
>>>>>>>
>>>>>>>
>>>>>>>                         _______________________________________________
>>>>>>>                         Discuss-gnuradio mailing list
>>>>>>>                         Discuss-gnuradio@gnu.org
>>>>>>>                         
>>>>>>> <javascript:_e(%7B%7D,'cvml','Discuss-gnuradio@gnu.org');>
>>>>>>>                         
>>>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>>>
>>>>>>
>>>>>>                         _______________________________________________
>>>>>>                         Discuss-gnuradio mailing list
>>>>>>                         Discuss-gnuradio@gnu.org
>>>>>>                         
>>>>>> <javascript:_e(%7B%7D,'cvml','Discuss-gnuradio@gnu.org');>
>>>>>>                         
>>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>
>>
>
>

_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to