# Linux build failing on develop, OggVorbis issue

**URL:** <https://forum.juce.com/t/linux-build-failing-on-develop-oggvorbis-issue/48154>\
**Category:** General JUCE discussion\
**Created:** [October 7, 2021, 10:28am UTC](https://forum.juce.com/t/linux-build-failing-on-develop-oggvorbis-issue/48154 "2021-10-07T10:28:50Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![adamwilson](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/adamwilson/32/1387_2.png) [@adamwilson](https://forum.juce.com/u/adamwilson)\
**Post date:** [October 7, 2021, 10:28am UTC](https://forum.juce.com/t/linux-build-failing-on-develop-oggvorbis-issue/48154/1 "2021-10-07T10:28:50Z")

</div>

After updating to latest `develop`, my Linux CI Is failing:

```auto
/<path-to>/juce-src/modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp:53:2: error: expected unqualified-id
 JUCE_BEGIN_NO_SANITIZE ("undefined")
 ^
/<path-to>/juce-src/modules/juce_core/system/juce_CompilerWarnings.h:214:9: note: expanded from macro 'JUCE_BEGIN_NO_SANITIZE'
        _Pragma(JUCE_TO_STRING(clang attribute push( __attribute__ ((no_sanitize(warnings))), apply_to=function)))
        ^
<scratch space>:119:8: note: expanded from here
 clang attribute push( __attribute__ ((no_sanitize("undefined"))), apply_to=function)
       ^
In file included from /<path-to>/juce-src/modules/juce_audio_formats/juce_audio_formats.cpp:67:
In file included from /<path-to>/juce-src/modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp:57:
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:40:43: error: unknown type name 'ogg_int64_t'
  int (*seek_func) (void *datasource, ogg_int64_t offset, int whence);
                                          ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:113:3: error: unknown type name 'ogg_int64_t'
  ogg_int64_t offset;
  ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:114:3: error: unknown type name 'ogg_int64_t'
  ogg_int64_t end;
  ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:115:3: error: unknown type name 'ogg_sync_state'
  ogg_sync_state oy;
  ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:120:3: error: unknown type name 'ogg_int64_t'
  ogg_int64_t *offsets;
  ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:121:3: error: unknown type name 'ogg_int64_t'
  ogg_int64_t *dataoffsets;
  ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:123:3: error: unknown type name 'ogg_int64_t'
  ogg_int64_t *pcmlengths; /* overloaded to maintain binary
  ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:126:3: error: unknown type name 'vorbis_info'
  vorbis_info *vi;
  ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:127:3: error: unknown type name 'vorbis_comment'
  vorbis_comment *vc;
  ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:130:3: error: unknown type name 'ogg_int64_t'
  ogg_int64_t pcm_offset;
  ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:138:3: error: unknown type name 'ogg_stream_state'
  ogg_stream_state os; /* take physical pages, weld into a logical
  ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:140:3: error: unknown type name 'vorbis_dsp_state'
  vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
  ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:141:3: error: unknown type name 'vorbis_block'
  vorbis_block vb; /* local working space for packet->PCM decode */
  ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:165:8: error: unknown type name 'ogg_int64_t'
extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i);
       ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:166:8: error: unknown type name 'ogg_int64_t'
extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i);
       ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:169:43: error: unknown type name 'ogg_int64_t'
extern int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos);
                                          ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:170:43: error: unknown type name 'ogg_int64_t'
extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos);
                                          ^
/<path-to>/juce-src/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h:171:48: error: unknown type name 'ogg_int64_t'
extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos);
                                               ^

```

Please note we are using the Tracktion fork of JUCE, at the `tracktion/develop` branch.

---

<div class="post-metadata">

**Author:** ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)\
**Post date:** [October 7, 2021, 10:30am UTC](https://forum.juce.com/t/linux-build-failing-on-develop-oggvorbis-issue/48154/2 "2021-10-07T10:30:25Z")

</div>

Can you let me know what compiler + version you’re using please?

---

<div class="post-metadata">

**Author:** ![adamwilson](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/adamwilson/32/1387_2.png) [@adamwilson](https://forum.juce.com/u/adamwilson)\
**Post date:** [October 7, 2021, 10:53am UTC](https://forum.juce.com/t/linux-build-failing-on-develop-oggvorbis-issue/48154/3 "2021-10-07T10:53:54Z")

</div>

Sure: clang 6.0

---

<div class="post-metadata">

**Author:** ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)\
**Post date:** [October 7, 2021, 12:25pm UTC](https://forum.juce.com/t/linux-build-failing-on-develop-oggvorbis-issue/48154/4 "2021-10-07T12:25:07Z")

</div>

Thanks. I’m not sure exactly what’s going on here - clang 5 is able to compile simple programs using JUCE\_BEGIN\_NO\_SANITIZE, at least on Compiler Explorer. I think the behaviour you’re seeing might be due to a compiler bug affecting Clang versions up to version 8.

In any case, we can work around this issue by making `JUCE_BEGIN_NO_SANITIZE` expand to nothing on clang versions lower than 9. Hopefully this change will be available shortly.

---

<div class="post-metadata">

**Author:** ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)\
**Post date:** [October 7, 2021, 5:03pm UTC](https://forum.juce.com/t/linux-build-failing-on-develop-oggvorbis-issue/48154/5 "2021-10-07T17:03:37Z")

</div>

The issue should be fixed here:

> <https://github.com/juce-framework/JUCE/commit/f5f834f758516e229317d16ba180113a684e5070>
>
> Clang versions 5 to 8 inclusive seem to struggle to compile JUCE when
> JUCE\_BEGIN…\_NO\_SANITIZE is used. This is unexpected, as simpler programs
> using the same macro definitions compile correctly on clang 5.

---

<div class="post-metadata">

**Author:** ![stephenk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/stephenk/32/15198_2.png) [@stephenk](https://forum.juce.com/u/stephenk)\
**Post date:** [December 6, 2021, 6:57pm UTC](https://forum.juce.com/t/linux-build-failing-on-develop-oggvorbis-issue/48154/6 "2021-12-06T18:57:44Z")

</div>

I seem to be experiencing this same issue today, on Mac, with the develop version I downloaded today.

Previously, I was using the release of 6.1.2. I decide to try the develop. Many errors related to this.

I am using Mojave, Xcode 10.3. Just testing a simple default Audio App:

```auto
In file included from /Users/stephen/Documents/JUCE/TestAudioApplication/JuceLibraryCode/include_juce_audio_formats.mm:9:
In file included from /Users/stephen/Development/JUCE-dev clean/modules/juce_audio_formats/juce_audio_formats.mm:26:
In file included from /Users/stephen/Development/JUCE-dev clean/modules/juce_audio_formats/juce_audio_formats.cpp:67:
/Users/stephen/Development/JUCE-dev clean/modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp:53:2: error: expected unqualified-id
 JUCE_BEGIN_NO_SANITIZE ("undefined")
 ^
In file included from /Users/stephen/Documents/JUCE/TestAudioApplication/JuceLibraryCode/include_juce_audio_formats.mm:9:
In file included from /Users/stephen/Development/JUCE-dev clean/modules/juce_audio_formats/juce_audio_formats.mm:26:
In file included from /Users/stephen/Development/JUCE-dev clean/modules/juce_audio_formats/juce_audio_formats.cpp:39:
In file included from /Users/stephen/Development/JUCE-dev clean/modules/juce_audio_formats/juce_audio_formats.h:57:
In file included from /Users/stephen/Development/JUCE-dev clean/modules/juce_audio_basics/juce_audio_basics.h:54:
In file included from /Users/stephen/Development/JUCE-dev clean/modules/juce_core/juce_core.h:204:
In file included from /Users/stephen/Development/JUCE-dev clean/modules/juce_core/system/juce_StandardHeader.h:70:
/Users/stephen/Development/JUCE-dev clean/modules/juce_core/system/juce_CompilerWarnings.h:214:9: note: expanded from macro 'JUCE_BEGIN_NO_SANITIZE'
        _Pragma(JUCE_TO_STRING(clang attribute push( __attribute__ ((no_sanitize(warnings))), apply_to=function)))
        ^

```
