Building gstreamer as a tarball without runtime dependencies

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Building gstreamer as a tarball without runtime dependencies

David Ing
Is it possible to build gstreamer as a single tarball for linux x86_64 with zero runtime dependencies (except for a linux kernel)?

If so, has anyone scripted that?

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Building gstreamer as a tarball without runtime dependencies

Nicolas Dufresne-5
Le lundi 07 décembre 2020 à 10:58 -0800, David Ing a écrit :
> Is it possible to build gstreamer as a single tarball for linux x86_64 with
> zero runtime dependencies (except for a linux kernel)?
> If so, has anyone scripted that?

It depends on your definition to zero-dependencies (GStreamer always depends on
glib, libffi and libc, there is no way around it). If instead of you mean a way
to bundle all deps together, please read the following:

W have a cross-platform build system called cerbero [0] that we used to manage
the build of needed third parties. We don't currently have any platform without
any of the deps already there. They all at least have libc for sure and we try
and use system libraries whenever possible. You may want to look at our Windows,
Android, OXS and iOS builds as examples.

When the build is complete, one can use the "bundle-source" command to genereate
a self-contained, network less build package. This is what vendors using cerbero
are expected to provide to who they distribute GStreamer.

An alternative would be to use gst-build [1], probably with a --wrap-mode=no-
fallback to avoid any dependencies being pulled from the network, but that may
yield into less features being enabled.

regards,
Nicolas

[0] https://gitlab.freedesktop.org/gstreamer/cerbero
[1] https://gitlab.freedesktop.org/gstreamer/gst-build
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Building gstreamer as a tarball without runtime dependencies

David Ing
Hi Nicolas, I think you may have answered this question:
  • Is it possible to build gstreamer as a single tarball for linux x86_64 with zero buildtime dependencies (except for a linux kernel)?  
But I asked this question:
  • Is it possible to build gstreamer as a single tarball for linux x86_64 with zero runtime dependencies (except for a linux kernel)?
I know the build system needs to consume external 3rd party libraries, but I am thinking of something that produces a single self-contained tarball which can be dropped onto any linux system and run without the need for additional packages to be installed.  The tar-ball would only require a Linux kernel and nothing else.

On Mon, Dec 7, 2020 at 1:01 PM Nicolas Dufresne <[hidden email]> wrote:
Le lundi 07 décembre 2020 à 10:58 -0800, David Ing a écrit :
> Is it possible to build gstreamer as a single tarball for linux x86_64 with
> zero runtime dependencies (except for a linux kernel)?
> If so, has anyone scripted that?

It depends on your definition to zero-dependencies (GStreamer always depends on
glib, libffi and libc, there is no way around it). If instead of you mean a way
to bundle all deps together, please read the following:

W have a cross-platform build system called cerbero [0] that we used to manage
the build of needed third parties. We don't currently have any platform without
any of the deps already there. They all at least have libc for sure and we try
and use system libraries whenever possible. You may want to look at our Windows,
Android, OXS and iOS builds as examples.

When the build is complete, one can use the "bundle-source" command to genereate
a self-contained, network less build package. This is what vendors using cerbero
are expected to provide to who they distribute GStreamer.

An alternative would be to use gst-build [1], probably with a --wrap-mode=no-
fallback to avoid any dependencies being pulled from the network, but that may
yield into less features being enabled.

regards,
Nicolas

[0] https://gitlab.freedesktop.org/gstreamer/cerbero
[1] https://gitlab.freedesktop.org/gstreamer/gst-build
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Building gstreamer as a tarball without runtime dependencies

Nicolas Dufresne-5


Le lun. 7 déc. 2020 17 h 15, David Ing <[hidden email]> a écrit :
Hi Nicolas, I think you may have answered this question:
  • Is it possible to build gstreamer as a single tarball for linux x86_64 with zero buildtime dependencies (except for a linux kernel)?  
But I asked this question:
  • Is it possible to build gstreamer as a single tarball for linux x86_64 with zero runtime dependencies (except for a linux kernel)?
I know the build system needs to consume external 3rd party libraries, but I am thinking of something that produces a single self-contained tarball which can be dropped onto any linux system and run without the need for additional packages to be installed.  The tar-ball would only require a Linux kernel and nothing else.

That is called static linking, which we do for Android and iOS, but only partially, since we don't build the libc. But in theory its do-able. Other approach exist, there is few options around.


On Mon, Dec 7, 2020 at 1:01 PM Nicolas Dufresne <[hidden email]> wrote:
Le lundi 07 décembre 2020 à 10:58 -0800, David Ing a écrit :
> Is it possible to build gstreamer as a single tarball for linux x86_64 with
> zero runtime dependencies (except for a linux kernel)?
> If so, has anyone scripted that?

It depends on your definition to zero-dependencies (GStreamer always depends on
glib, libffi and libc, there is no way around it). If instead of you mean a way
to bundle all deps together, please read the following:

W have a cross-platform build system called cerbero [0] that we used to manage
the build of needed third parties. We don't currently have any platform without
any of the deps already there. They all at least have libc for sure and we try
and use system libraries whenever possible. You may want to look at our Windows,
Android, OXS and iOS builds as examples.

When the build is complete, one can use the "bundle-source" command to genereate
a self-contained, network less build package. This is what vendors using cerbero
are expected to provide to who they distribute GStreamer.

An alternative would be to use gst-build [1], probably with a --wrap-mode=no-
fallback to avoid any dependencies being pulled from the network, but that may
yield into less features being enabled.

regards,
Nicolas

[0] https://gitlab.freedesktop.org/gstreamer/cerbero
[1] https://gitlab.freedesktop.org/gstreamer/gst-build
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Building gstreamer as a tarball without runtime dependencies

David Ing
Ah the term "static linking" helped me to find some information in the gst-build documentation.  Thank you.

On Mon, Dec 7, 2020 at 3:35 PM Nicolas Dufresne <[hidden email]> wrote:


Le lun. 7 déc. 2020 17 h 15, David Ing <[hidden email]> a écrit :
Hi Nicolas, I think you may have answered this question:
  • Is it possible to build gstreamer as a single tarball for linux x86_64 with zero buildtime dependencies (except for a linux kernel)?  
But I asked this question:
  • Is it possible to build gstreamer as a single tarball for linux x86_64 with zero runtime dependencies (except for a linux kernel)?
I know the build system needs to consume external 3rd party libraries, but I am thinking of something that produces a single self-contained tarball which can be dropped onto any linux system and run without the need for additional packages to be installed.  The tar-ball would only require a Linux kernel and nothing else.

That is called static linking, which we do for Android and iOS, but only partially, since we don't build the libc. But in theory its do-able. Other approach exist, there is few options around.


On Mon, Dec 7, 2020 at 1:01 PM Nicolas Dufresne <[hidden email]> wrote:
Le lundi 07 décembre 2020 à 10:58 -0800, David Ing a écrit :
> Is it possible to build gstreamer as a single tarball for linux x86_64 with
> zero runtime dependencies (except for a linux kernel)?
> If so, has anyone scripted that?

It depends on your definition to zero-dependencies (GStreamer always depends on
glib, libffi and libc, there is no way around it). If instead of you mean a way
to bundle all deps together, please read the following:

W have a cross-platform build system called cerbero [0] that we used to manage
the build of needed third parties. We don't currently have any platform without
any of the deps already there. They all at least have libc for sure and we try
and use system libraries whenever possible. You may want to look at our Windows,
Android, OXS and iOS builds as examples.

When the build is complete, one can use the "bundle-source" command to genereate
a self-contained, network less build package. This is what vendors using cerbero
are expected to provide to who they distribute GStreamer.

An alternative would be to use gst-build [1], probably with a --wrap-mode=no-
fallback to avoid any dependencies being pulled from the network, but that may
yield into less features being enabled.

regards,
Nicolas

[0] https://gitlab.freedesktop.org/gstreamer/cerbero
[1] https://gitlab.freedesktop.org/gstreamer/gst-build
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Building gstreamer as a tarball without runtime dependencies

Nicolas Dufresne-5


Le lun. 7 déc. 2020 20 h 15, David Ing <[hidden email]> a écrit :
Ah the term "static linking" helped me to find some information in the gst-build documentation.  Thank you.

And the other approach is to do like appimage, https://appimage.org/



On Mon, Dec 7, 2020 at 3:35 PM Nicolas Dufresne <[hidden email]> wrote:


Le lun. 7 déc. 2020 17 h 15, David Ing <[hidden email]> a écrit :
Hi Nicolas, I think you may have answered this question:
  • Is it possible to build gstreamer as a single tarball for linux x86_64 with zero buildtime dependencies (except for a linux kernel)?  
But I asked this question:
  • Is it possible to build gstreamer as a single tarball for linux x86_64 with zero runtime dependencies (except for a linux kernel)?
I know the build system needs to consume external 3rd party libraries, but I am thinking of something that produces a single self-contained tarball which can be dropped onto any linux system and run without the need for additional packages to be installed.  The tar-ball would only require a Linux kernel and nothing else.

That is called static linking, which we do for Android and iOS, but only partially, since we don't build the libc. But in theory its do-able. Other approach exist, there is few options around.


On Mon, Dec 7, 2020 at 1:01 PM Nicolas Dufresne <[hidden email]> wrote:
Le lundi 07 décembre 2020 à 10:58 -0800, David Ing a écrit :
> Is it possible to build gstreamer as a single tarball for linux x86_64 with
> zero runtime dependencies (except for a linux kernel)?
> If so, has anyone scripted that?

It depends on your definition to zero-dependencies (GStreamer always depends on
glib, libffi and libc, there is no way around it). If instead of you mean a way
to bundle all deps together, please read the following:

W have a cross-platform build system called cerbero [0] that we used to manage
the build of needed third parties. We don't currently have any platform without
any of the deps already there. They all at least have libc for sure and we try
and use system libraries whenever possible. You may want to look at our Windows,
Android, OXS and iOS builds as examples.

When the build is complete, one can use the "bundle-source" command to genereate
a self-contained, network less build package. This is what vendors using cerbero
are expected to provide to who they distribute GStreamer.

An alternative would be to use gst-build [1], probably with a --wrap-mode=no-
fallback to avoid any dependencies being pulled from the network, but that may
yield into less features being enabled.

regards,
Nicolas

[0] https://gitlab.freedesktop.org/gstreamer/cerbero
[1] https://gitlab.freedesktop.org/gstreamer/gst-build
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel