Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.0.4 build failure and cassandane failures with libical3 #2200

Closed
jasontibbitts opened this issue Nov 14, 2017 · 5 comments
Closed

3.0.4 build failure and cassandane failures with libical3 #2200

jasontibbitts opened this issue Nov 14, 2017 · 5 comments

Comments

@jasontibbitts
Copy link

So libical3 is out but unfortunately the current stable cyrus doesn't build with it:

gcc -DHAVE_CONFIG_H -I.  -I. -I./lib -I. -I./lib -DLIBEXEC_DIR=\"/usr/libexec/cyrus-imapd\" -DSBIN_DIR=\"/usr/sbin\" -DSYSCONF_DIR=\"/etc\" -DHAVE_CONFIG_H     -I/usr/include -I/usr/include/libxml2        -I/usr/include -fPIC  -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -c -o imap/http_caldav.o imap/http_caldav.c
imap/http_caldav.c: In function 'icaltime_from_rfc3339_string':
imap/http_caldav.c:2034:8: error: 'struct icaltimetype' has no member named 'is_utc'; did you mean 'is_date'?
     tt.is_utc = 1;
        ^~~~~~
        is_date

Unfortunately I haven't had much chance to dig into it further.

@jasontibbitts
Copy link
Author

I guess I just need to pull 1966c22 back to 3.0.

@jasontibbitts
Copy link
Author

That works, but appears to trigger two new cassandane failures. I know that some of the cassandane tests are iffy on 3.0 anyway, so I'll probably just disable them and get on with life. But maybe they do turn up some real issues.

There were 2 failures:
1) test_changes_remove(Cassandane::Cyrus::Caldav)
 expected 'E5E99184-C962-11E7-87DE-6F24BED7DF99/d4643cf9-4552-4a3e-8d6c-5f318bcc5b79.ics', got '/dav/calendars/user/cassandane/E5E99184-C962-11E7-87DE-6F24BED7DF99/d4643cf9-4552-4a3e-8d6c-5f318bcc5b79.ics' at Cassandane/Cyrus/Caldav.pm line 1086.
        Cassandane::Cyrus::Caldav::test_changes_remove(Cassandane::Cyrus::Caldav=HASH(0x559274b9bbc0)) called at /usr/share/perl5/vendor_perl/Test/Unit/TestCase.pm line 75
        [...framework calls elided...]

Annotations:
=====> Cyrus::TestCase[567] ---------- BEGIN test_changes_remove ----------
=====> Instance[1004] start main instance for test test_changes_remove: basedir /builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024H4
=====> Instance[455] Found binary cyr_buildinfo in /builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/sbin
=====> Instance[455] Found binary cyr_buildinfo in /builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/sbin
=====> Instance[1505] Running: "/builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/sbin/cyr_buildinfo" "-C" "/builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024H4/conf/imapd.conf"
=====> Instance[455] Found binary ctl_cyrusdb in /builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/sbin
=====> Instance[455] Found binary httpd in /builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/libexec/cyrus-imapd
=====> Instance[455] Found binary imapd in /builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/libexec/cyrus-imapd
=====> Instance[916] started saslauthd for /builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024H4 as 25667
=====> Instance[943] started notifyd for /builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024H4 as 25671
=====> Instance[1759] opening socket /builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024H4/run/mux
=====> Instance[455] Found binary master in /builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/libexec/cyrus-imapd
=====> Instance[1505] Running: "/builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/libexec/cyrus-imapd/master" "-C" "/builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024H4/conf/imapd.conf" "-l" "255" "-p" "/builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024H4/run/master.pid" "-d" "-M" "/builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024H4/conf/cyrus.conf"
=====> Instance[868] _start_master: waiting for PID file
=====> Instance[871] _start_master: PID file present and correct
=====> Instance[883] _start_master: PID waiting for services
=====> Daemon[358] is_listening: service http is listening on 127.0.0.1:9173
=====> Util::Wait[77] Waited 0.039272 sec for 127.0.0.1:9173 to be in LISTEN state
=====> Daemon[358] is_listening: service imap is listening on 127.0.0.1:9174
=====> Instance[894] _start_master: all services listening
=====> Instance[970] create user cassandane
=====> Util::Socket[63] create_client_socket INET host=127.0.0.1 port=9174
=====> Instance[1774] authdaemon connection: admin testpw imap 
=====> Instance[1035] started main instance for test test_changes_remove: cyrus version 3.0.4-3.fc28 Fedora
=====> Cyrus::TestCase[574] Calling test function
******** REDIRECT 301 to http://127.0.0.1:9173/dav/calendars
=====> Instance[1774] authdaemon connection: cassandane pass http 
<<<<<<<< PROPFIND http://127.0.0.1:9173/.well-known/caldav HTTP/1.1
<D:propfind xmlns:A='http://apple.com/ns/ical/' xmlns:D='DAV:' xmlns:C='urn:ietf:params:xml:ns:caldav' xmlns:SF='http://cyrusimap.org/ns/sysflag/' xmlns:CY='http://cyrusimap.org/ns/' xmlns:UF='http://cyrusimap.org/ns/userflag/'><D:prop><D:current-user-principal/></D:prop></D:propfind>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:A="http://apple.com/ns/ical/" xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:SF="http://cyrusimap.org/ns/sysflag/" xmlns:CY="http://cyrusimap.org/ns/" xmlns:UF="http://cyrusimap.org/ns/userflag/">
  <D:response>
    <D:href>/dav/calendars</D:href>
    <D:propstat>
      <D:prop>
        <D:current-user-principal>
          <D:href>/dav/principals/user/cassandane/</D:href>
        </D:current-user-principal>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

========

=====> Instance[1774] authdaemon connection: cassandane pass http 
<<<<<<<< PROPFIND http://127.0.0.1:9173/dav/principals/user/cassandane HTTP/1.1
<D:propfind xmlns:UF='http://cyrusimap.org/ns/userflag/' xmlns:CY='http://cyrusimap.org/ns/' xmlns:C='urn:ietf:params:xml:ns:caldav' xmlns:SF='http://cyrusimap.org/ns/sysflag/' xmlns:A='http://apple.com/ns/ical/' xmlns:D='DAV:'><D:prop><C:calendar-home-set/></D:prop></D:propfind>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:UF="http://cyrusimap.org/ns/userflag/" xmlns:CY="http://cyrusimap.org/ns/" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:SF="http://cyrusimap.org/ns/sysflag/" xmlns:A="http://apple.com/ns/ical/" xmlns:D="DAV:">
  <D:response>
    <D:href>/dav/principals/user/cassandane</D:href>
    <D:propstat>
      <D:prop>
        <C:calendar-home-set>
          <D:href>/dav/calendars/user/cassandane/</D:href>
        </C:calendar-home-set>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

========

=====> Instance[1774] authdaemon connection: cassandane pass http 
<<<<<<<< PROPFIND http://127.0.0.1:9173/dav/principals/user/cassandane HTTP/1.1
<D:propfind xmlns:D='DAV:' xmlns:A='http://apple.com/ns/ical/' xmlns:SF='http://cyrusimap.org/ns/sysflag/' xmlns:C='urn:ietf:params:xml:ns:caldav' xmlns:UF='http://cyrusimap.org/ns/userflag/' xmlns:CY='http://cyrusimap.org/ns/'><D:prop><D:displayname/><C:calendar-user-address-set/></D:prop></D:propfind>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:" xmlns:A="http://apple.com/ns/ical/" xmlns:SF="http://cyrusimap.org/ns/sysflag/" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:UF="http://cyrusimap.org/ns/userflag/" xmlns:CY="http://cyrusimap.org/ns/">
  <D:response>
    <D:href>/dav/principals/user/cassandane</D:href>
    <D:propstat>
      <D:prop>
        <D:displayname>cassandane</D:displayname>
        <C:calendar-user-address-set>
          <D:href>mailto:cassandane@defdomain</D:href>
        </C:calendar-user-address-set>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

========

=====> Instance[1774] authdaemon connection: cassandane pass http 
<<<<<<<< PROPPATCH http://127.0.0.1:9173/dav/calendars/user/cassandane HTTP/1.1
<D:propertyupdate xmlns:UF='http://cyrusimap.org/ns/userflag/' xmlns:CY='http://cyrusimap.org/ns/' xmlns:C='urn:ietf:params:xml:ns:caldav' xmlns:SF='http://cyrusimap.org/ns/sysflag/' xmlns:D='DAV:' xmlns:A='http://apple.com/ns/ical/'><D:set><D:prop><D:displayname>Test User</D:displayname><C:calendar-user-address-set>mailto:cassandane@example.com</C:calendar-user-address-set></D:prop></D:set></D:propertyupdate>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:UF="http://cyrusimap.org/ns/userflag/" xmlns:CY="http://cyrusimap.org/ns/" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:SF="http://cyrusimap.org/ns/sysflag/" xmlns:D="DAV:" xmlns:A="http://apple.com/ns/ical/">
  <D:response>
    <D:href>/dav/calendars/user/cassandane/</D:href>
    <D:propstat>
      <D:prop>
        <D:displayname/>
        <C:calendar-user-address-set/>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

========

=====> Instance[1774] authdaemon connection: cassandane pass http 
<<<<<<<< MKCALENDAR http://127.0.0.1:9173/dav/calendars/user/cassandane/E5E99184-C962-11E7-87DE-6F24BED7DF99/ HTTP/1.1
<C:mkcalendar xmlns:UF='http://cyrusimap.org/ns/userflag/' xmlns:CY='http://cyrusimap.org/ns/' xmlns:D='DAV:' xmlns:A='http://apple.com/ns/ical/' xmlns:C='urn:ietf:params:xml:ns:caldav' xmlns:SF='http://cyrusimap.org/ns/sysflag/'><D:set><D:prop><D:displayname>foo</D:displayname></D:prop></D:set></C:mkcalendar>
>>>>>>>> HTTP/1.1 201 Created

========

=====> Instance[1774] authdaemon connection: cassandane pass http 
<<<<<<<< PUT http://127.0.0.1:9173/dav/calendars/user/cassandane/E5E99184-C962-11E7-87DE-6F24BED7DF99/d4643cf9-4552-4a3e-8d6c-5f318bcc5b79.ics HTTP/1.1
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Apple Inc.//Mac OS X 10.10.4//EN
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:Australia/Melbourne
BEGIN:STANDARD
TZOFFSETFROM:+1100
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
DTSTART:20080406T030000
TZNAME:AEST
TZOFFSETTO:+1000
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+1000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
DTSTART:20081005T020000
TZNAME:AEDT
TZOFFSETTO:+1100
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
CREATED:20150806T234327Z
UID:d4643cf9-4552-4a3e-8d6c-5f318bcc5b79
DTEND;TZID=Australia/Melbourne:20160831T183000
TRANSP:OPAQUE
SUMMARY:Test Event
DTSTART;TZID=Australia/Melbourne:20160831T153000
DTSTAMP:20150806T234327Z
SEQUENCE:0
END:VEVENT
END:VCALENDAR

>>>>>>>> HTTP/1.1 201 Created

========

=====> Instance[1774] authdaemon connection: cassandane pass http 
<<<<<<<< PROPFIND http://127.0.0.1:9173/dav/calendars/user/cassandane HTTP/1.1
<D:propfind xmlns:SF='http://cyrusimap.org/ns/sysflag/' xmlns:C='urn:ietf:params:xml:ns:caldav' xmlns:D='DAV:' xmlns:A='http://apple.com/ns/ical/' xmlns:UF='http://cyrusimap.org/ns/userflag/' xmlns:CY='http://cyrusimap.org/ns/'><D:prop><D:acl/><A:calendar-color/><C:supported-calendar-data/><A:calendar-order/><D:resourcetype/><C:calendar-timezone/><D:supported-report-set/><D:displayname/><D:current-user-privilege-set/><D:sync-token/></D:prop></D:propfind>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:SF="http://cyrusimap.org/ns/sysflag/" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:D="DAV:" xmlns:A="http://apple.com/ns/ical/" xmlns:UF="http://cyrusimap.org/ns/userflag/" xmlns:CY="http://cyrusimap.org/ns/">
  <D:response>
    <D:href>/dav/calendars/user/cassandane/</D:href>
    <D:propstat>
      <D:prop>
        <D:acl>
          <D:ace>
            <D:principal>
              <D:self/>
            </D:principal>
            <D:grant>
              <D:privilege>
                <D:all/>
              </D:privilege>
            </D:grant>
          </D:ace>
          <D:ace>
            <D:principal>
              <D:href>/dav/principals/user/admin/</D:href>
            </D:principal>
            <D:grant>
              <D:privilege>
                <D:all/>
              </D:privilege>
            </D:grant>
          </D:ace>
          <D:ace>
            <D:principal>
              <D:all/>
            </D:principal>
            <D:grant>
              <D:privilege>
                <C:read-free-busy/>
              </D:privilege>
            </D:grant>
          </D:ace>
        </D:acl>
        <D:resourcetype>
          <D:collection/>
        </D:resourcetype>
        <D:supported-report-set>
          <D:supported-report>
            <D:report>
              <D:expand-property/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <D:acl-principal-prop-set/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <D:sync-collection/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <C:calendar-query/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <C:calendar-multiget/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <C:free-busy-query/>
            </D:report>
          </D:supported-report>
        </D:supported-report-set>
        <D:displayname><![CDATA[Test User]]></D:displayname>
        <D:current-user-privilege-set>
          <D:privilege>
            <D:all/>
          </D:privilege>
          <D:privilege>
            <D:read/>
          </D:privilege>
          <D:privilege>
            <C:read-free-busy/>
          </D:privilege>
          <D:privilege>
            <D:write/>
          </D:privilege>
          <D:privilege>
            <D:write-content/>
          </D:privilege>
          <D:privilege>
            <D:write-properties/>
          </D:privilege>
          <D:privilege>
            <CY:write-properties-collection/>
          </D:privilege>
          <D:privilege>
            <CY:write-properties-resource/>
          </D:privilege>
          <D:privilege>
            <D:bind/>
          </D:privilege>
          <D:privilege>
            <CY:make-collection/>
          </D:privilege>
          <D:privilege>
            <CY:add-resource/>
          </D:privilege>
          <D:privilege>
            <D:unbind/>
          </D:privilege>
          <D:privilege>
            <CY:remove-collection/>
          </D:privilege>
          <D:privilege>
            <CY:remove-resource/>
          </D:privilege>
          <D:privilege>
            <CY:admin/>
          </D:privilege>
        </D:current-user-privilege-set>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <A:calendar-color/>
        <C:supported-calendar-data/>
        <A:calendar-order/>
        <C:calendar-timezone/>
        <D:sync-token/>
      </D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>/dav/calendars/user/cassandane/Default/</D:href>
    <D:propstat>
      <D:prop>
        <D:acl>
          <D:ace>
            <D:principal>
              <D:self/>
            </D:principal>
            <D:grant>
              <D:privilege>
                <D:all/>
              </D:privilege>
            </D:grant>
          </D:ace>
          <D:ace>
            <D:principal>
              <D:href>/dav/principals/user/admin/</D:href>
            </D:principal>
            <D:grant>
              <D:privilege>
                <D:all/>
              </D:privilege>
            </D:grant>
          </D:ace>
          <D:ace>
            <D:principal>
              <D:all/>
            </D:principal>
            <D:grant>
              <D:privilege>
                <C:read-free-busy/>
              </D:privilege>
            </D:grant>
          </D:ace>
        </D:acl>
        <C:supported-calendar-data>
          <C:calendar-data content-type="text/calendar" version="2.0"/>
          <C:calendar-data content-type="application/calendar+xml"/>
          <C:calendar-data content-type="application/calendar+json"/>
          <C:calendar-data content-type="application/event+json"/>
        </C:supported-calendar-data>
        <D:resourcetype>
          <D:collection/>
          <C:calendar/>
        </D:resourcetype>
        <D:supported-report-set>
          <D:supported-report>
            <D:report>
              <D:expand-property/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <D:acl-principal-prop-set/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <D:sync-collection/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <C:calendar-query/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <C:calendar-multiget/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <C:free-busy-query/>
            </D:report>
          </D:supported-report>
        </D:supported-report-set>
        <D:displayname><![CDATA[personal]]></D:displayname>
        <D:current-user-privilege-set>
          <D:privilege>
            <D:all/>
          </D:privilege>
          <D:privilege>
            <D:read/>
          </D:privilege>
          <D:privilege>
            <C:read-free-busy/>
          </D:privilege>
          <D:privilege>
            <D:write/>
          </D:privilege>
          <D:privilege>
            <D:write-content/>
          </D:privilege>
          <D:privilege>
            <D:write-properties/>
          </D:privilege>
          <D:privilege>
            <CY:write-properties-collection/>
          </D:privilege>
          <D:privilege>
            <CY:write-properties-resource/>
          </D:privilege>
          <D:privilege>
            <D:bind/>
          </D:privilege>
          <D:privilege>
            <CY:make-collection/>
          </D:privilege>
          <D:privilege>
            <CY:add-resource/>
          </D:privilege>
          <D:privilege>
            <D:unbind/>
          </D:privilege>
          <D:privilege>
            <CY:remove-collection/>
          </D:privilege>
          <D:privilege>
            <CY:remove-resource/>
          </D:privilege>
          <D:privilege>
            <CY:admin/>
          </D:privilege>
        </D:current-user-privilege-set>
        <D:sync-token>data:,1510681226-2</D:sync-token>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <A:calendar-color/>
        <A:calendar-order/>
        <C:calendar-timezone/>
      </D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>/dav/calendars/user/cassandane/E5E99184-C962-11E7-87DE-6F24BED7DF99/</D:href>
    <D:propstat>
      <D:prop>
        <D:acl>
          <D:ace>
            <D:principal>
              <D:self/>
            </D:principal>
            <D:grant>
              <D:privilege>
                <D:all/>
              </D:privilege>
            </D:grant>
          </D:ace>
          <D:ace>
            <D:principal>
              <D:href>/dav/principals/user/admin/</D:href>
            </D:principal>
            <D:grant>
              <D:privilege>
                <D:all/>
              </D:privilege>
            </D:grant>
          </D:ace>
          <D:ace>
            <D:principal>
              <D:all/>
            </D:principal>
            <D:grant>
              <D:privilege>
                <C:read-free-busy/>
              </D:privilege>
            </D:grant>
          </D:ace>
        </D:acl>
        <C:supported-calendar-data>
          <C:calendar-data content-type="text/calendar" version="2.0"/>
          <C:calendar-data content-type="application/calendar+xml"/>
          <C:calendar-data content-type="application/calendar+json"/>
          <C:calendar-data content-type="application/event+json"/>
        </C:supported-calendar-data>
        <D:resourcetype>
          <D:collection/>
          <C:calendar/>
        </D:resourcetype>
        <D:supported-report-set>
          <D:supported-report>
            <D:report>
              <D:expand-property/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <D:acl-principal-prop-set/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <D:sync-collection/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <C:calendar-query/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <C:calendar-multiget/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <C:free-busy-query/>
            </D:report>
          </D:supported-report>
        </D:supported-report-set>
        <D:displayname><![CDATA[foo]]></D:displayname>
        <D:current-user-privilege-set>
          <D:privilege>
            <D:all/>
          </D:privilege>
          <D:privilege>
            <D:read/>
          </D:privilege>
          <D:privilege>
            <C:read-free-busy/>
          </D:privilege>
          <D:privilege>
            <D:write/>
          </D:privilege>
          <D:privilege>
            <D:write-content/>
          </D:privilege>
          <D:privilege>
            <D:write-properties/>
          </D:privilege>
          <D:privilege>
            <CY:write-properties-collection/>
          </D:privilege>
          <D:privilege>
            <CY:write-properties-resource/>
          </D:privilege>
          <D:privilege>
            <D:bind/>
          </D:privilege>
          <D:privilege>
            <CY:make-collection/>
          </D:privilege>
          <D:privilege>
            <CY:add-resource/>
          </D:privilege>
          <D:privilege>
            <D:unbind/>
          </D:privilege>
          <D:privilege>
            <CY:remove-collection/>
          </D:privilege>
          <D:privilege>
            <CY:remove-resource/>
          </D:privilege>
          <D:privilege>
            <CY:admin/>
          </D:privilege>
        </D:current-user-privilege-set>
        <D:sync-token>data:,1510681226-3</D:sync-token>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <A:calendar-color/>
        <A:calendar-order/>
        <C:calendar-timezone/>
      </D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

========

=====> Instance[1774] authdaemon connection: cassandane pass http 
<<<<<<<< DELETE http://127.0.0.1:9173/dav/calendars/user/cassandane/E5E99184-C962-11E7-87DE-6F24BED7DF99/d4643cf9-4552-4a3e-8d6c-5f318bcc5b79.ics HTTP/1.1

>>>>>>>> HTTP/1.1 204 No Content

========

=====> Instance[1774] authdaemon connection: cassandane pass http 
<<<<<<<< REPORT http://127.0.0.1:9173/dav/calendars/user/cassandane/E5E99184-C962-11E7-87DE-6F24BED7DF99/ HTTP/1.1
<D:sync-collection xmlns:CY='http://cyrusimap.org/ns/' xmlns:UF='http://cyrusimap.org/ns/userflag/' xmlns:D='DAV:' xmlns:A='http://apple.com/ns/ical/' xmlns:C='urn:ietf:params:xml:ns:caldav' xmlns:SF='http://cyrusimap.org/ns/sysflag/'><D:sync-token>data:,1510681226-3</D:sync-token><D:sync-level>1</D:sync-level><D:prop><D:getetag/></D:prop></D:sync-collection>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:CY="http://cyrusimap.org/ns/" xmlns:UF="http://cyrusimap.org/ns/userflag/" xmlns:D="DAV:" xmlns:A="http://apple.com/ns/ical/" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:SF="http://cyrusimap.org/ns/sysflag/">
  <D:response>
    <D:href>/dav/calendars/user/cassandane/E5E99184-C962-11E7-87DE-6F24BED7DF99/d4643cf9-4552-4a3e-8d6c-5f318bcc5b79.ics</D:href>
    <D:status>HTTP/1.1 404 Not Found</D:status>
  </D:response>
  <D:sync-token>data:,1510681226-4</D:sync-token>
</D:multistatus>

========

=====> Cyrus::TestCase[681] Beginning tear_down
=====> Instance[1242] stop
=====> Instance[1204] _stop_pid: sending signal 15 to 25698
=====> Util::Wait[77] Waited 0.010092 sec for unknown condition
=====> Instance[919] killing saslauthd 25667
Warning: unable to close filehandle $olderr properly: Bad file descriptor at Cassandane/Instance.pm line 913.
Warning: unable to close filehandle $oldout properly: Bad file descriptor at Cassandane/Instance.pm line 913.
=====> Instance[946] killing notifyd 25671
=====> Instance[919] killing saslauthd 25667
=====> Instance[1270] Cleaning up basedir /builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024H4
=====> Cyrus::TestCase[726] ---------- END test_changes_remove ----------
=====> Daemon[387] checking for stray processes on ports: 9173 9174
2) test_getcalendareventlist_datetime(Cassandane::Cyrus::JMAPCalendars)
 expected 0, got 1 at Cassandane/Cyrus/JMAPCalendars.pm line 2171.
        Cassandane::Cyrus::JMAPCalendars::test_getcalendareventlist_datetime(Cassandane::Cyrus::JMAPCalendars=HASH(0x5592752d5088)) called at /usr/share/perl5/vendor_perl/Test/Unit/TestCase.pm line 75
        [...framework calls elided...]

Annotations:
=====> Cyrus::TestCase[567] ---------- BEGIN test_getcalendareventlist_datetime ----------
=====> Cyrus::TestCase[160] Magic attribute JMAP wants jmap = 1
=====> Cyrus::TestCase[160] Magic attribute JMAP wants adminstore = 1
=====> Cyrus::TestCase[160] Magic attribute JMAP wants services = ARRAY(0x559276adaf38)
=====> Cyrus::TestCase[169] Magic attribute JMAP sets config caldav_realm = Cassandane
=====> Cyrus::TestCase[169] Magic attribute JMAP sets config conversations = yes
=====> Cyrus::TestCase[169] Magic attribute JMAP sets config httpmodules = carddav caldav jmap
=====> Cyrus::TestCase[169] Magic attribute JMAP sets config httpallowcompress = no
=====> Instance[1004] start main instance for test test_getcalendareventlist_datetime: basedir /builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024I25
=====> Instance[455] Found binary cyr_buildinfo in /builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/sbin
=====> Instance[455] Found binary cyr_buildinfo in /builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/sbin
=====> Instance[1505] Running: "/builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/sbin/cyr_buildinfo" "-C" "/builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024I25/conf/imapd.conf"
=====> Instance[455] Found binary ctl_cyrusdb in /builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/sbin
=====> Instance[455] Found binary imapd in /builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/libexec/cyrus-imapd
=====> Instance[455] Found binary httpd in /builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/libexec/cyrus-imapd
=====> Instance[916] started saslauthd for /builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024I25 as 29154
=====> Instance[1759] opening socket /builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024I25/run/mux
=====> Instance[943] started notifyd for /builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024I25 as 29155
=====> Instance[455] Found binary master in /builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/libexec/cyrus-imapd
=====> Instance[1505] Running: "/builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/libexec/cyrus-imapd/master" "-C" "/builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024I25/conf/imapd.conf" "-l" "255" "-p" "/builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024I25/run/master.pid" "-d" "-M" "/builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024I25/conf/cyrus.conf"
=====> Instance[868] _start_master: waiting for PID file
=====> Instance[871] _start_master: PID file present and correct
=====> Instance[883] _start_master: PID waiting for services
=====> Daemon[358] is_listening: service imap is listening on 127.0.0.1:9180
=====> Util::Wait[77] Waited 0.050706 sec for 127.0.0.1:9180 to be in LISTEN state
=====> Daemon[358] is_listening: service http is listening on 127.0.0.1:9181
=====> Instance[894] _start_master: all services listening
=====> Instance[970] create user cassandane
=====> Util::Socket[63] create_client_socket INET host=127.0.0.1 port=9180
=====> Instance[1774] authdaemon connection: admin testpw imap 
=====> Instance[1035] started main instance for test test_getcalendareventlist_datetime: cyrus version 3.0.4-3.fc28 Fedora
******** REDIRECT 301 to http://127.0.0.1:9181/dav/addressbooks
=====> Instance[1774] authdaemon connection: cassandane pass http 
<<<<<<<< PROPFIND http://127.0.0.1:9181/.well-known/carddav HTTP/1.1
<D:propfind xmlns:CY='http://cyrusimap.org/ns/' xmlns:C='urn:ietf:params:xml:ns:carddav' xmlns:D='DAV:'><D:prop><D:current-user-principal/></D:prop></D:propfind>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:CY="http://cyrusimap.org/ns/" xmlns:C="urn:ietf:params:xml:ns:carddav" xmlns:D="DAV:">
  <D:response>
    <D:href>/dav/addressbooks</D:href>
    <D:propstat>
      <D:prop>
        <D:current-user-principal>
          <D:href>/dav/principals/user/cassandane/</D:href>
        </D:current-user-principal>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

========

=====> Instance[1774] authdaemon connection: cassandane pass http 
<<<<<<<< PROPFIND http://127.0.0.1:9181/dav/principals/user/cassandane HTTP/1.1
<D:propfind xmlns:CY='http://cyrusimap.org/ns/' xmlns:D='DAV:' xmlns:C='urn:ietf:params:xml:ns:carddav'><D:prop><C:addressbook-home-set/></D:prop></D:propfind>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:CY="http://cyrusimap.org/ns/" xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav">
  <D:response>
    <D:href>/dav/principals/user/cassandane</D:href>
    <D:propstat>
      <D:prop>
        <C:addressbook-home-set>
          <D:href>/dav/addressbooks/user/cassandane/</D:href>
        </C:addressbook-home-set>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

========

******** REDIRECT 301 to http://127.0.0.1:9181/dav/calendars
=====> Instance[1774] authdaemon connection: cassandane pass http 
<<<<<<<< PROPFIND http://127.0.0.1:9181/.well-known/caldav HTTP/1.1
<D:propfind xmlns:SF='http://cyrusimap.org/ns/sysflag/' xmlns:C='urn:ietf:params:xml:ns:caldav' xmlns:D='DAV:' xmlns:A='http://apple.com/ns/ical/' xmlns:UF='http://cyrusimap.org/ns/userflag/' xmlns:CY='http://cyrusimap.org/ns/'><D:prop><D:current-user-principal/></D:prop></D:propfind>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:SF="http://cyrusimap.org/ns/sysflag/" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:D="DAV:" xmlns:A="http://apple.com/ns/ical/" xmlns:UF="http://cyrusimap.org/ns/userflag/" xmlns:CY="http://cyrusimap.org/ns/">
  <D:response>
    <D:href>/dav/calendars</D:href>
    <D:propstat>
      <D:prop>
        <D:current-user-principal>
          <D:href>/dav/principals/user/cassandane/</D:href>
        </D:current-user-principal>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

========

=====> Instance[1774] authdaemon connection: cassandane pass http 
<<<<<<<< PROPFIND http://127.0.0.1:9181/dav/principals/user/cassandane HTTP/1.1
<D:propfind xmlns:CY='http://cyrusimap.org/ns/' xmlns:UF='http://cyrusimap.org/ns/userflag/' xmlns:A='http://apple.com/ns/ical/' xmlns:D='DAV:' xmlns:C='urn:ietf:params:xml:ns:caldav' xmlns:SF='http://cyrusimap.org/ns/sysflag/'><D:prop><C:calendar-home-set/></D:prop></D:propfind>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:CY="http://cyrusimap.org/ns/" xmlns:UF="http://cyrusimap.org/ns/userflag/" xmlns:A="http://apple.com/ns/ical/" xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:SF="http://cyrusimap.org/ns/sysflag/">
  <D:response>
    <D:href>/dav/principals/user/cassandane</D:href>
    <D:propstat>
      <D:prop>
        <C:calendar-home-set>
          <D:href>/dav/calendars/user/cassandane/</D:href>
        </C:calendar-home-set>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

========

=====> Instance[1774] authdaemon connection: cassandane pass http 
<<<<<<<< PROPFIND http://127.0.0.1:9181/dav/principals/user/cassandane HTTP/1.1
<D:propfind xmlns:UF='http://cyrusimap.org/ns/userflag/' xmlns:CY='http://cyrusimap.org/ns/' xmlns:D='DAV:' xmlns:A='http://apple.com/ns/ical/' xmlns:C='urn:ietf:params:xml:ns:caldav' xmlns:SF='http://cyrusimap.org/ns/sysflag/'><D:prop><D:displayname/><C:calendar-user-address-set/></D:prop></D:propfind>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:UF="http://cyrusimap.org/ns/userflag/" xmlns:CY="http://cyrusimap.org/ns/" xmlns:D="DAV:" xmlns:A="http://apple.com/ns/ical/" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:SF="http://cyrusimap.org/ns/sysflag/">
  <D:response>
    <D:href>/dav/principals/user/cassandane</D:href>
    <D:propstat>
      <D:prop>
        <D:displayname>cassandane</D:displayname>
        <C:calendar-user-address-set>
          <D:href>mailto:cassandane@defdomain</D:href>
        </C:calendar-user-address-set>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

========

=====> Instance[1774] authdaemon connection: cassandane pass http 
<<<<<<<< PROPPATCH http://127.0.0.1:9181/dav/calendars/user/cassandane HTTP/1.1
<D:propertyupdate xmlns:A='http://apple.com/ns/ical/' xmlns:D='DAV:' xmlns:C='urn:ietf:params:xml:ns:caldav' xmlns:SF='http://cyrusimap.org/ns/sysflag/' xmlns:CY='http://cyrusimap.org/ns/' xmlns:UF='http://cyrusimap.org/ns/userflag/'><D:set><D:prop><D:displayname>Test User</D:displayname><C:calendar-user-address-set>mailto:cassandane@example.com</C:calendar-user-address-set></D:prop></D:set></D:propertyupdate>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:A="http://apple.com/ns/ical/" xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:SF="http://cyrusimap.org/ns/sysflag/" xmlns:CY="http://cyrusimap.org/ns/" xmlns:UF="http://cyrusimap.org/ns/userflag/">
  <D:response>
    <D:href>/dav/calendars/user/cassandane/</D:href>
    <D:propstat>
      <D:prop>
        <D:displayname/>
        <C:calendar-user-address-set/>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

========

=====> Cyrus::TestCase[574] Calling test function
=====> Cyrus::JMAPCalendars[71] Requesting JMAP access token
JMAP $VAR1 = {
  'clientName' => 'Net-JMAPTalk',
  'clientVersion' => '0.08',
  'deviceName' => 'api',
  'username' => 'cassandane'
};
$VAR2 = {
  'content' => '{"loginId": "014cb98a4f504adc7bd0ca7acb3e8dbc585c5f54f07bd194437d29caeb94f36ef574b487455e", "methods": [{"type": "password"}], "prompt": null}',
  'headers' => {
    'connection' => 'Upgrade',
    'content-length' => '142',
    'content-type' => 'application/json; charset=utf-8',
    'date' => 'Tue, 14 Nov 2017 17:40:40 GMT',
    'upgrade' => 'h2c',
    'vary' => 'Accept-Encoding'
  },
  'protocol' => 'HTTP/1.1',
  'reason' => 'OK',
  'status' => '200',
  'success' => 1,
  'url' => 'http://127.0.0.1:9181/jmap/auth/'
};
=====> Instance[1774] authdaemon connection: cassandane pass http 
JMAP $VAR1 = {
  'loginId' => '014cb98a4f504adc7bd0ca7acb3e8dbc585c5f54f07bd194437d29caeb94f36ef574b487455e',
  'password' => 'pass',
  'type' => 'password'
};
$VAR2 = {
  'content' => '{"username": "cassandane", "accounts": {"cassandane": {"name": "cassandane", "isPrimary": true, "isReadOnly": false}}, "apiUrl": "/jmap/", "downloadUrl": "/jmap/download/{accountId}/{blobId}/{name}", "uploadUrl": "/jmap/upload/", "accessToken": "014163e91079563655787398e2df1eac0598e59cd0431fe45a5ab838e840bbd995d366e907a7"}',
  'headers' => {
    'connection' => 'Upgrade',
    'content-length' => '324',
    'content-type' => 'application/json; charset=utf-8',
    'date' => 'Tue, 14 Nov 2017 17:40:40 GMT',
    'upgrade' => 'h2c',
    'vary' => 'Accept-Encoding'
  },
  'protocol' => 'HTTP/1.1',
  'reason' => 'Created',
  'status' => '201',
  'success' => 1,
  'url' => 'http://127.0.0.1:9181/jmap/auth/'
};
=====> Cyrus::JMAPCalendars[2146] create events
JMAP $VAR1 = [
  [
    'setCalendarEvents',
    {
      'create' => {
        '1' => {
          'calendarId' => 'Default',
          'description' => '',
          'duration' => 'PT1H',
          'freeBusyStatus' => 'busy',
          'isAllDay' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
          'start' => '2016-01-01T09:00:00',
          'timeZone' => 'Etc/GMT-1',
          'title' => '1'
        }
      }
    },
    'R1'
  ]
];
$VAR2 = {
  'content' => '[
  [
    "calendarEventsSet",
    {
      "accountId": "cassandane",
      "oldState": "22",
      "created": {
        "1": {
          "id": "b10a1129-86e8-4af6-81cb-c479fe3f4afd"
        }
      },
      "newState": "24"
    },
    "R1"
  ]
]',
  'headers' => {
    'connection' => 'Upgrade',
    'content-length' => '246',
    'content-type' => 'application/json; charset=utf-8',
    'date' => 'Tue, 14 Nov 2017 17:40:40 GMT',
    'upgrade' => 'h2c',
    'vary' => 'Accept-Encoding'
  },
  'protocol' => 'HTTP/1.1',
  'reason' => 'OK',
  'status' => '200',
  'success' => 1,
  'url' => 'http://127.0.0.1:9181/jmap/'
};
=====> Cyrus::JMAPCalendars[2161] Run squatter
=====> Instance[455] Found binary squatter in /builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/sbin
=====> Instance[1505] Running: "/builddir/build/BUILDROOT/cyrus-imapd-3.0.4-3.fc28.x86_64/usr/sbin/squatter" "-C" "/builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024I25/conf/imapd.conf"
JMAP $VAR1 = [
  [
    'getCalendarEventList',
    {
      'filter' => {
        'after' => '2016-01-01T08:00:00Z',
        'before' => '2016-01-01T09:00:00Z'
      }
    },
    'R1'
  ]
];
$VAR2 = {
  'content' => '[
  [
    "calendarEventList",
    {
      "accountId": "cassandane",
      "state": "24",
      "position": 0,
      "total": 0,
      "calendarEventIds": [],
      "filter": {
        "after": "2016-01-01T08:00:00Z",
        "before": "2016-01-01T09:00:00Z"
      }
    },
    "R1"
  ]
]',
  'headers' => {
    'connection' => 'Upgrade',
    'content-length' => '289',
    'content-type' => 'application/json; charset=utf-8',
    'date' => 'Tue, 14 Nov 2017 17:40:40 GMT',
    'upgrade' => 'h2c',
    'vary' => 'Accept-Encoding'
  },
  'protocol' => 'HTTP/1.1',
  'reason' => 'OK',
  'status' => '200',
  'success' => 1,
  'url' => 'http://127.0.0.1:9181/jmap/'
};
=====> Cyrus::TestCase[681] Beginning tear_down
=====> Instance[1242] stop
=====> Instance[1204] _stop_pid: sending signal 15 to 29190
=====> Util::Wait[77] Waited 0.010086 sec for unknown condition
=====> Instance[919] killing saslauthd 29154
Warning: unable to close filehandle $olderr properly: Bad file descriptor at Cassandane/Instance.pm line 913.
Warning: unable to close filehandle $oldout properly: Bad file descriptor at Cassandane/Instance.pm line 913.
=====> Instance[946] killing notifyd 29155
Warning: unable to close filehandle $olderr properly: Bad file descriptor at Cassandane/Instance.pm line 940.
Warning: unable to close filehandle $oldout properly: Bad file descriptor at Cassandane/Instance.pm line 940.
=====> Instance[919] killing saslauthd 29154
=====> Instance[1270] Cleaning up basedir /builddir/build/BUILD/cyrus-imapd-3.0.4/cassandane/work/174024I25
=====> Cyrus::TestCase[726] ---------- END test_getcalendareventlist_datetime ----------
=====> Daemon[387] checking for stray processes on ports: 9180 9181

@jasontibbitts jasontibbitts changed the title 3.0.4 fails to build with libical3 3.0.4 build failure and cassandane failures with libical3 Nov 14, 2017
@rsto
Copy link
Member

rsto commented Nov 16, 2017

We haven't upgraded cyrus-imapd to libical3 support, AFAIK. @ksmurchison should know best. If you can, please use the vendored Cyrus 3rd party libraries at https://github.com/cyrusimap/cyruslibs

There's definitely the plan to make Cyrus IMAPd work with the vanilla libical3 release, though. We just haven't put effort into it.

@jasontibbitts
Copy link
Author

Well, that's what 1966c22 is, at least in part. And as far as I can tell, it does work, except for the two cassandane issues above. And admittedly, I don't really understand those failures, which is why I provided them.

Regarding the vendored libraries, using them isn't really an option (it's terrible practice for a distro), and even if it were, well, the version of libical in there is... 3.0.

@elliefm
Copy link
Contributor

elliefm commented Oct 11, 2019

Looks like this was fixed on 3.0 by 299d89a, which was included in 3.0.6

@elliefm elliefm closed this as completed Oct 11, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants