<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">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>