<div dir="ltr">At the moment I'd like to generate the Visual Studio binaries. But, thanks for the docker link. </div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jul 20, 2020 at 9:33 PM Matthew Waters <<a href="mailto:ystreet00@gmail.com">ystreet00@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div>
    <div>Yes, for non-linux platforms.  It
      doesn't mean that gst-build can't do it, just that gst-build
      requires more setup and is not as regularly tested for this case
      :).<br>
      <br>
      We do have a docker-based CI for the cross-mingw cases already
      that you may want to borrow: <a href="https://gitlab.freedesktop.org/gstreamer/gst-ci/-/blob/master/docker/cerbero/Dockerfile-fedora" target="_blank">https://gitlab.freedesktop.org/gstreamer/gst-ci/-/blob/master/docker/cerbero/Dockerfile-fedora</a>
      and <a href="https://gitlab.freedesktop.org/gstreamer/gst-ci/-/blob/master/gitlab/ci_template.yml#L896" target="_blank">https://gitlab.freedesktop.org/gstreamer/gst-ci/-/blob/master/gitlab/ci_template.yml#L896</a>.<br>
      <br>
      Cheers<br>
      -Matt<br>
      <br>
      On 20/7/20 2:11 am, Ben Rush wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">I see, so -- you technically do a lot of your dev
        work using cerbero too? You're the expert, so I'll follow your
        lead. <br>
        <br>
        FYI: once I get this working and am able to do a cross-compile
        build of all the components (and in particular, webrtcbin), I'm
        going to respond to this thread with my dockerfile so that it's
        reproducible for posterity's sake. <br>
        <br>
        Cheers. </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Sun, Jul 19, 2020 at 10:51
          AM Matthew Waters <<a href="mailto:ystreet00@gmail.com" target="_blank">ystreet00@gmail.com</a>> wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div>
            <div>That's cool!  We'd love to see those
              improvements/suggestions.<br>
              <br>
              It is possible to develop with cerbero however the
              required steps are a little bit more involved.<br>
              <br>
              For branches that track git (all GStreamer recipes and
              some others), what I personally do is push a branch to the
              cerbero local sources of the specific project (on linux by
              default is at '$HOME/.cache/cerbero-sources/$project'). 
              './cerbero-uninstalled show-config' will tell you exactly
              where.<br>
              <br>
              Then either, change the branch in the recipe, or add a
              '$HOME/.cerbero/cerbero.cfg' file (python syntax) with
              something like the following (where the values are a git
              commit reference, branch names in this case).<br>
              <br>
              ```<br>
              recipes_commits = {<br>
              #  "libusrsctp" : "hang-fix",<br>
                "gst-plugins-base-1.0" : "egl-display-debug-cat",<br>
              #  "gstreamer-1.0" : "fail",<br>
                "gst-plugins-bad-1.0" : "amcvideodec-gl-sync-meta-copy",<br>
              #  "gst-validate" : "android",<br>
              #  "gst-editing-services-1.0" : "android",<br>
              }<br>
              ```<br>
              <br>
              For tarball-based sources, creating a patch in the local
              sources directory and then adding the patch to the recipe
              is usually the goto move.<br>
              <br>
              Cheers<br>
              -Matt<br>
              <br>
              On 20/7/20 1:33 am, Ben Rush wrote:<br>
            </div>
            <blockquote type="cite">
              <div dir="ltr">Thanks. I will take a look at your
                suggestions. 
                <div><br>
                </div>
                <div>On the Cerbero v. meson front: my company relies on
                  windows a lot, and so I'm doing a lot of use of
                  GStreamer on Windows. I've got a lot of suggestions /
                  tweaks / etc. that I'd love to be able to contribute
                  to the project to better help people such as myself
                  who are doing things exclusively on Windows. It's my
                  understanding that cerbero is best for building what's
                  in master, but that if I want to do any sort of rapid
                  iteration / testing, meson is the route to go. So,
                  that's my driving force. <br>
                  <br>
                  And thanks again, mate. Your work on everything is
                  appreciated by a lot of people. </div>
              </div>
              <br>
              <div class="gmail_quote">
                <div dir="ltr" class="gmail_attr">On Sun, Jul 19, 2020
                  at 10:21 AM Matthew Waters <<a href="mailto:ystreet00@gmail.com" target="_blank">ystreet00@gmail.com</a>>
                  wrote:<br>
                </div>
                <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                  <div>
                    <div>You also need to be careful with constructing
                      all of the necessary paths and environment
                      variables so that no system libraries are found
                      and that your custom build versions are found
                      instead.  <a href="https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/master/cerbero/config.py#L450" target="_blank">https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/master/cerbero/config.py#L450</a>
                      contains a non-exhaustive list.  There are also
                      platform-specific configurations that may modify
                      some of those values: e.g. for windows: <a href="https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/master/config/windows.config" target="_blank">https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/master/config/windows.config</a>
                      and then there may be recipe-specific workarounds,
                      e.g. for openssl: <a href="https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/master/recipes/openssl.recipe#L150" target="_blank">https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/master/recipes/openssl.recipe#L150</a>.<br>
                      <br>
                      Generally we would recommend the cerbero route as
                      it tries takes care of all of this for you.  If
                      something doesn't work, we can attempt to fix it.<br>
                      <br>
                      On 20/7/20 1:05 am, Ben Rush wrote:<br>
                    </div>
                    <blockquote type="cite">
                      <div dir="ltr">
                        <div dir="ltr">
                          <div dir="ltr">I see, yes. That's a
                            distinct possibility given the fact my
                            docker container has libnice-dev, which made
                            it in on accident. However, what's odd is
                            that I did do a cross build of openssl as
                            part of the docker container. Is this not
                            enough? <br>
                            <br>
                            <div dir="ltr">RUN git clone <a href="https://github.com/openssl/openssl.git" target="_blank">https://github.com/openssl/openssl.git</a>
                              && \</div>
                            <div dir="ltr"><span style="white-space:pre-wrap">  </span>cd
                              openssl && \</div>
                            <div dir="ltr"><span style="white-space:pre-wrap">  </span>./Configure
                              --cross-compile-prefix=x86_64-w64-mingw32-
                              mingw64 && \</div>
                            <div dir="ltr"><span style="white-space:pre-wrap">  </span>make
                              && \</div>
                            <div dir="ltr"><span style="white-space:pre-wrap">  </span>make
                              install</div>
                            <div dir="ltr"><br>
                            </div>
                            <div>All of this ran before any of the
                              output I mentioned above. </div>
                          </div>
                        </div>
                      </div>
                      <br>
                      <div class="gmail_quote">
                        <div dir="ltr" class="gmail_attr">On Sun, Jul
                          19, 2020 at 10:03 AM Matthew Waters <<a href="mailto:ystreet00@gmail.com" target="_blank">ystreet00@gmail.com</a>>
                          wrote:<br>
                        </div>
                        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                          <div>
                            <div>You need to have a cross-build of
                              openssl or gnutls to be able to build
                              libnice.<br>
                              <br>
                              I assume that the 'pkg-config --version
                              openssl' is only showing you the system
                              versions which would be built for linux,
                              not mingw.<br>
                              <br>
                              On 20/7/20 12:16 am, Ben Rush wrote:<br>
                            </div>
                            <blockquote type="cite">
                              <div dir="ltr">
                                <div dir="ltr">
                                  <div dir="ltr">In particular, I'm
                                    having trouble getting the webrtc
                                    library to build, and it appears as
                                    though -- if I track it back far
                                    enough -- the issue is with libnice.
                                    The meson build output results in
                                    the output at the end of this email
                                    (I'll defer posting it now to make
                                    the email reading easier). <br>
                                    <br>
                                    According to the error, the problem
                                    is that pkg-config is unable to find
                                    openssl. But running this at the
                                    command prompt (after attaching to
                                    the container), results in what
                                    appears to be a positive for finding
                                    openssl: <br>
                                    <br>
                                    <div dir="ltr">root@b5f46e708137:/gst-build#
                                      pkg-config --version openssl</div>
                                    <div dir="ltr">0.29.1</div>
                                    <div dir="ltr"><br>
                                    </div>
                                    <div>Ultimately I'm curious if
                                      someone has been able to build
                                      webrtc and the like cross compiled
                                      for Windows from Ubuntu, etc. I'd
                                      love to have a nice, dockerized
                                      system for building for Windows
                                      but after about day of fighting,
                                      I've yet to get it to work
                                      completely. </div>
                                    <div><br>
                                    </div>
                                    <div>Here is the output: </div>
                                    <br>
                                    <div>|Executing subproject libnice
                                      method meson</div>
                                    <div>|</div>
                                    <div>|Project name: libnice</div>
                                    <div>|Project version: 0.1.17.1</div>
                                    <div>|C compiler for the build
                                      machine: cc (gcc 7.5.0 "cc (Ubuntu
                                      7.5.0-3ubuntu1~18.04) 7.5.0")</div>
                                    <div>|C linker for the build
                                      machine: cc ld.bfd 2.30</div>
                                    <div>|C compiler for the host
                                      machine: x86_64-w64-mingw32-gcc
                                      (gcc 7.3.0 "x86_64-w64-mingw32-gcc
                                      (GCC) 7.3-win32 20180312")</div>
                                    <div>|C linker for the host machine:
                                      x86_64-w64-mingw32-gcc ld.bfd 2.30</div>
                                    <div>|Library iphlpapi found: YES</div>
                                    <div>|Library ws2_32 found: YES</div>
                                    <div>|Checking for function
                                      "clock_gettime" : NO (cached)</div>
                                    <div>|Library rt found: NO</div>
                                    <div>|Checking for function
                                      "clock_gettime" with dependency
                                      -lrt: NO (cached)</div>
                                    <div>|Has header "arpa/inet.h" : NO
                                      (cached)</div>
                                    <div>|Has header "net/in.h" : NO</div>
                                    <div>|Has header "netdb.h" : NO
                                      (cached)</div>
                                    <div>|Has header "ifaddrs.h" : NO</div>
                                    <div>|Has header "unistd.h" : YES
                                      (cached)</div>
                                    <div>|Checking for function "poll" :
                                      NO (cached)</div>
                                    <div>|Checking for function
                                      "getifaddrs" : NO</div>
                                    <div>|Compiler for C supports
                                      arguments -fno-strict-aliasing:
                                      YES</div>
                                    <div>|Message: warning level: 1</div>
                                    <div>|Message: werror enabled: false</div>
                                    <div>|Dependency gio-2.0 found: YES
                                      2.62.6 (cached)</div>
                                    <div>|Dependency (anonymous) from
                                      subproject subprojects/glib found:
                                      YES 2.62.6</div>
                                    <div>|Dependency (anonymous) from
                                      subproject subprojects/glib found:
                                      YES 2.62.6</div>
                                    <div>|Dependency (anonymous) from
                                      subproject subprojects/glib found:
                                      YES 2.62.6</div>
                                    <div>|Dependency gthread-2.0 from
                                      subproject subprojects/glib found:
                                      YES 2.62.6</div>
                                    <div>|Message: Crypto library
                                      requested: auto</div>
                                    <div>|Run-time dependency gnutls
                                      found: NO (tried pkgconfig and
                                      cmake)</div>
                                    <div>|Run-time dependency openssl
                                      found: NO (tried pkgconfig and
                                      cmake)</div>
                                    <div>|Looking for a fallback
                                      subproject for the dependency
                                      openssl</div>
                                    <div>|Subproject directory not found
                                      and openssl.wrap file not found</div>
                                    <div>|Subproject 
                                      subprojects/openssl is buildable:
                                      NO (disabling)</div>
                                    <div>|Dependency openssl from
                                      subproject subprojects/openssl
                                      found: NO</div>
                                    <div>|Library crypto found: NO</div>
                                    <div>|Library eay32 found: NO</div>
                                    <div>|</div>
                                    <div>|subprojects/libnice/meson.build:249:4:
                                      Exception: Problem encountered:
                                      Either GnuTLS or OpenSSL is
                                      required as crypto library, but
                                      neither was found</div>
                                  </div>
                                </div>
                              </div>
                              <br>
                              <fieldset></fieldset>
                              <pre>_______________________________________________
gstreamer-devel mailing list
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a>
</pre>
                            </blockquote>
                            <br>
                          </div>
                        </blockquote>
                      </div>
                    </blockquote>
                    <br>
                  </div>
                </blockquote>
              </div>
            </blockquote>
          </div>
        </blockquote>
      </div>
    </blockquote>
    <br>
  </div>

</blockquote></div>