<div dir="ltr">Oops ... In the prior email, I was talking about "ldconfig" where I meant to say "make install && ldconfig".<div><br></div><div>Just to elaborate on this some more: I have some example projects which consume gst-editing-services. In order to run the executable build output, I need to use a script which defines a few environment variables. The script file is automatically generated by gst-conan:</div><div><br></div><div><pre style="color:rgb(0,0,0);font-family:"DejaVu Sans Mono";font-size:9pt"><span style="font-weight:bold">#!/bin/bash<br></span><span style="font-weight:bold"><br></span>thisFolder=<span style="color:rgb(0,128,0);font-weight:bold">"$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"<br></span><span style="color:rgb(0,128,0);font-weight:bold"><br></span><span style="color:rgb(11,12,149)">export </span>GST_PLUGIN_PATH=/home/ding/.conan/data/gst-editing-services/1.14.3/my_conan_user/my_conan_channel/package/fca34e783d0d7fe020f0afd08ea6cec145c5e7f8/plugins:/home/ding/.conan/data/gst-plugins-good/1.14.3/my_conan_user/my_conan_channel/package/fca34e783d0d7fe020f0afd08ea6cec145c5e7f8/plugins:/home/ding/.conan/data/gst-plugins-bad/1.14.3/my_conan_user/my_conan_channel/package/fca34e783d0d7fe020f0afd08ea6cec145c5e7f8/plugins:/home/ding/.conan/data/gst-plugins-ugly/1.14.3/my_conan_user/my_conan_channel/package/fca34e783d0d7fe020f0afd08ea6cec145c5e7f8/plugins:/home/ding/.conan/data/gst-libav/1.14.3/my_conan_user/my_conan_channel/package/fca34e783d0d7fe020f0afd08ea6cec145c5e7f8/plugins:/home/ding/.conan/data/gst-plugins-base/1.14.3/my_conan_user/my_conan_channel/package/1010277bd962c74fe8b33f2280b3c0af94266416/plugins:/home/ding/.conan/data/gstreamer/1.14.3/my_conan_user/my_conan_channel/package/69f10d1e6d78c1962fbe8fb80440f32b1fdf8423/plugins<br><span style="color:rgb(11,12,149)">export </span>GST_PLUGIN_SCANNER=/home/ding/.conan/data/gstreamer/1.14.3/my_conan_user/my_conan_channel/package/69f10d1e6d78c1962fbe8fb80440f32b1fdf8423/bin/gst-plugin-scanner<br><span style="color:rgb(11,12,149)">export </span>LD_LIBRARY_PATH=/home/ding/.conan/data/gst-editing-services/1.14.3/my_conan_user/my_conan_channel/package/fca34e783d0d7fe020f0afd08ea6cec145c5e7f8/lib:/home/ding/.conan/data/gst-plugins-good/1.14.3/my_conan_user/my_conan_channel/package/fca34e783d0d7fe020f0afd08ea6cec145c5e7f8/lib:/home/ding/.conan/data/gst-plugins-bad/1.14.3/my_conan_user/my_conan_channel/package/fca34e783d0d7fe020f0afd08ea6cec145c5e7f8/lib:/home/ding/.conan/data/gst-plugins-ugly/1.14.3/my_conan_user/my_conan_channel/package/fca34e783d0d7fe020f0afd08ea6cec145c5e7f8/lib:/home/ding/.conan/data/gst-libav/1.14.3/my_conan_user/my_conan_channel/package/fca34e783d0d7fe020f0afd08ea6cec145c5e7f8/lib:/home/ding/.conan/data/gst-plugins-base/1.14.3/my_conan_user/my_conan_channel/package/1010277bd962c74fe8b33f2280b3c0af94266416/lib:/home/ding/.conan/data/gstreamer/1.14.3/my_conan_user/my_conan_channel/package/69f10d1e6d78c1962fbe8fb80440f32b1fdf8423/lib:$LD_LIBRARY_PATH<br><br><span style="color:rgb(11,12,149)">exec </span>$thisFolder/consume-ges <span style="color:rgb(0,128,0);font-weight:bold">"$@"</span></pre></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Oct 3, 2018 at 4:50 PM David Ing <<a href="mailto:ding@panopto.com">ding@panopto.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>By the way, I am planning to record a video tutorial of Conan and gst-conan ... but we are a couple months away from that. For now, I'll give you my long-winded analysis:</div><div><br></div><div>I think Cerbero uses AutoTools and perhaps ldconfig, whereas gst-conan and gst-build both both use Meson.</div><div><br></div><div>Cerbero is better than Gst-Conan in many important ways.<br></div><div><ul><li>Cerbero can build for Windows and Mac (Gst-Conan is Linux only ... for now ... although Conan works on any platform)</li><li>Cerbero can do cross-compilation (Gst-Conan might be able to do this ... with some coaxing ... I'm not sure right now)</li><li>Cerbero can produce debian and rpm packages (Gst-Conan has a roadmap ... we might produce `snap` packages if we get around to it ... distant future)</li></ul></div><div>But, gst-conan is special because it uses Conan to organize packages on any machine. Conan behaves a bit like `ldconfig` in that sense, but Conan is more sophisticated (in my opinion). For example, when I created the "gstreamer" package, I gave Conan a whole bunch of options which identify that package.</div><div dir="ltr"><div><div><br><div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>name = gstreamer</div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>version = 1.14.3</div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>user = my_conan_user</div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>channel = my_conan_channel</div><div><br></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>os = linux</div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>arch = x86_64</div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>build_type = Debug</div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>compiler = gcc</div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>... (you can define as many options as you want)</div></blockquote></div><div><div><br></div><div>Conan stores the package on my system in a very specific location (where the first 4 options are explicitly part of the package path, and the remaining options are hashed):</div></div></div></div><div><br></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div dir="ltr"><div><div><div><div>~/.conan/data/gstreamer/1.14.3/my_conan_user/my_conan_channel/package/69f10d1e6d78c1962fbe8fb80440f32b1fdf8423</div></div></div></div><div><br></div></div></blockquote><div>Now that Conan has built the "gstreamer" package and installed it onto my system, I can simply reference the package from another project using the same identifying information (as given above). I can even change one of the options (e.g. `compiler = clang`) and Conan will try to build the package from a recipe that it stored with the package. My original recipe was here: <a href="https://github.com/Panopto/gst-conan/blob/master/packages/gstreamer/conanfile.py" target="_blank">https://github.com/Panopto/gst-conan/blob/master/packages/gstreamer/conanfile.py</a></div><div><br></div><div>But Conan remembers the recipe in a specific location ...</div><div><br></div></div></div></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>~/.conan/data/gstreamer/1.14.3/my_conan_user/my_conan_channel/export/conanfile.py<br></div></div></div></div></div></blockquote><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br></div><div>... and so it can try to rebuild the package using different options.</div><div><br></div><div>There are also common conan packages (e.g. zlib, openssl, boost, poco, ffmpeg, etc ...) that people have built packages for already. Conan will automatically search <a href="https://bintray.com/" target="_blank">https://bintray.com/</a> for those recipes so you don't even need to worry about building them yourself.</div><div><br></div><div>Now I can create my own project (or Meson, AutoTools, whatever) and Conan will expose the dependencies into that build system.</div><div><ul><li>cmake example: <a href="https://github.com/Panopto/gst-conan/tree/master/examples/consume-ges-cmake" target="_blank">https://github.com/Panopto/gst-conan/tree/master/examples/consume-ges-cmake</a></li><li>meson example: <a href="https://github.com/Panopto/gst-conan/tree/master/examples/consume-ges-meson" target="_blank">https://github.com/Panopto/gst-conan/tree/master/examples/consume-ges-meson</a></li></ul></div><div>If you look at the "conanfile.py" in each example, you will notice that it contains this:<br></div></div></div></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><pre style="color:rgb(0,0,0);font-family:"DejaVu Sans Mono";font-size:9pt"><span style="color:rgb(128,128,128);font-style:italic"># This is how we declare our dependencies to Conan. GES will come with transitive dependencies.<br></span><span style="color:rgb(128,128,128);font-style:italic"># We also need to handle the pkg_config_paths in the `build(self)` method.<br></span>requires = ( <span style="color:rgb(0,128,128);font-weight:bold">f"gst-editing-services/{GST_CONAN_VERSION}@{GST_CONAN_USER}/{GST_CONAN_CHANNEL}"</span>,<br> <span style="color:rgb(0,128,128);font-weight:bold">f"gst-plugins-good/{GST_CONAN_VERSION}@{GST_CONAN_USER}/{GST_CONAN_CHANNEL}"</span>,<br> <span style="color:rgb(0,128,128);font-weight:bold">f"gst-plugins-bad/{GST_CONAN_VERSION}@{GST_CONAN_USER}/{GST_CONAN_CHANNEL}"</span>,<br> <span style="color:rgb(0,128,128);font-weight:bold">f"gst-plugins-ugly/{GST_CONAN_VERSION}@{GST_CONAN_USER}/{GST_CONAN_CHANNEL}"</span>,<br> <span style="color:rgb(0,128,128);font-weight:bold">f"gst-libav/{GST_CONAN_VERSION}@{GST_CONAN_USER}/{GST_CONAN_CHANNEL}"</span>)</pre></div></div></div></div></div></blockquote><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Unlike with ldconfig, Conan is suported by <a href="https://bintray.com/" target="_blank">https://bintray.com/</a> ... so packages can be easily fetched from the internet as needed. (This is similar to Maven and NuGet.) This makes it easy to integrate with other packages (e.g. zlib, boost, etc.). Although Cerbero does a beautiful job of defining recipes (allowing 1-off patches and everything), it doesn't have the support of bintray, and it doesn't offer the same elegant model for package management (as described above).</div><div><br></div><div>I would love to see the Cerbero folks take an interest in Conan. I am happy to help in any way I can.</div></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Oct 3, 2018 at 3:42 PM Nicolas Dufresne <<a href="mailto:nicolas@ndufresne.ca" target="_blank">nicolas@ndufresne.ca</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr">Le mer. 3 oct. 2018 17 h 57, David Ing <<a href="mailto:ding@panopto.com" target="_blank">ding@panopto.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr">Gstreamer Community,</div><div dir="ltr"><div><br></div><div>I am pleased to present you with a new open-source project:</div><div><br></div></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div dir="ltr"><div dir="ltr"><div><a href="https://github.com/Panopto/gst-conan" rel="noreferrer" target="_blank">https://github.com/Panopto/gst-conan</a></div></div></div></blockquote><div dir="ltr"><div dir="ltr"><div><br></div><div>It is basically a set of Python scripts for creating Conan packages for Gstreamer.</div><div><br></div><div>If you have never heard of Conan before, I think of it as `Maven` or `pip` for native code (<a href="https://conan.io/" rel="noreferrer" target="_blank">https://conan.io/</a>). We have been using Conan at my company for a couple years and we are very impressed with it.<br></div></div></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">That seems nice. Maybe you could give a brief comparison between Conan and let's say Cerbero ? Obviously it's not the same, but it does a similar task.</div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div></div></div></div></div>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org" rel="noreferrer" target="_blank">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</blockquote></div></div></div>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</blockquote></div>
</blockquote></div>