[arch-commits] Commit in gst-libav/repos (3 files)

Jan Steffens heftig at gemini.archlinux.org
Sun Jan 23 23:22:05 UTC 2022


    Date: Sunday, January 23, 2022 @ 23:22:05
  Author: heftig
Revision: 435025

archrelease: copy trunk to staging-x86_64

Added:
  gst-libav/repos/staging-x86_64/
  gst-libav/repos/staging-x86_64/0001-gst-libav-fix-build-with-ffmpeg-5.0.0.patch
    (from rev 435023, gst-libav/trunk/0001-gst-libav-fix-build-with-ffmpeg-5.0.0.patch)
  gst-libav/repos/staging-x86_64/PKGBUILD
    (from rev 435023, gst-libav/trunk/PKGBUILD)

--------------------------------------------------+
 0001-gst-libav-fix-build-with-ffmpeg-5.0.0.patch |  414 +++++++++++++++++++++
 PKGBUILD                                         |   46 ++
 2 files changed, 460 insertions(+)

Copied: gst-libav/repos/staging-x86_64/0001-gst-libav-fix-build-with-ffmpeg-5.0.0.patch (from rev 435023, gst-libav/trunk/0001-gst-libav-fix-build-with-ffmpeg-5.0.0.patch)
===================================================================
--- staging-x86_64/0001-gst-libav-fix-build-with-ffmpeg-5.0.0.patch	                        (rev 0)
+++ staging-x86_64/0001-gst-libav-fix-build-with-ffmpeg-5.0.0.patch	2022-01-23 23:22:05 UTC (rev 435025)
@@ -0,0 +1,414 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Xi Ruoyao <xry111 at mengyan1223.wang>
+Date: Mon, 17 Jan 2022 01:33:47 +0800
+Subject: [PATCH] gst-libav: fix build with ffmpeg-5.0.0
+
+Latest ffmpeg has removed avcodec_get_context_defaults(), and its
+documentation says a new AVCodecContext should be allocated for this
+purpose.  The pointer returned by avcodec_find_decoder() is now
+const-qualified so we also need to adjust for it.  And, AVCOL_RANGE_MPEG
+is now rejected with strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL.
+
+Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1531>
+---
+ ext/libav/gstavauddec.c   | 22 ++++++++-------------
+ ext/libav/gstavaudenc.c   | 40 +++++++++++++++++++--------------------
+ ext/libav/gstavcodecmap.c |  7 ++++---
+ ext/libav/gstavutils.c    |  2 +-
+ ext/libav/gstavviddec.c   | 28 +++++++++++----------------
+ ext/libav/gstavvidenc.c   | 21 ++++++++++----------
+ 6 files changed, 54 insertions(+), 66 deletions(-)
+
+diff --git a/ext/libav/gstavauddec.c b/ext/libav/gstavauddec.c
+index baf7aa55a9d9..b03a724001fa 100644
+--- a/ext/libav/gstavauddec.c
++++ b/ext/libav/gstavauddec.c
+@@ -168,59 +168,53 @@ gst_ffmpegauddec_finalize (GObject * object)
+   GstFFMpegAudDec *ffmpegdec = (GstFFMpegAudDec *) object;
+ 
+   av_frame_free (&ffmpegdec->frame);
+-
+-  if (ffmpegdec->context != NULL) {
+-    gst_ffmpeg_avcodec_close (ffmpegdec->context);
+-    av_free (ffmpegdec->context);
+-    ffmpegdec->context = NULL;
+-  }
++  avcodec_free_context (&ffmpegdec->context);
+ 
+   G_OBJECT_CLASS (parent_class)->finalize (object);
+ }
+ 
+ /* With LOCK */
+ static gboolean
+ gst_ffmpegauddec_close (GstFFMpegAudDec * ffmpegdec, gboolean reset)
+ {
+   GstFFMpegAudDecClass *oclass;
+ 
+   oclass = (GstFFMpegAudDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
+ 
+   GST_LOG_OBJECT (ffmpegdec, "closing libav codec");
+ 
+   gst_caps_replace (&ffmpegdec->last_caps, NULL);
+ 
+   gst_ffmpeg_avcodec_close (ffmpegdec->context);
+   ffmpegdec->opened = FALSE;
+ 
+-  if (ffmpegdec->context->extradata) {
+-    av_free (ffmpegdec->context->extradata);
+-    ffmpegdec->context->extradata = NULL;
+-  }
++  av_freep (&ffmpegdec->context->extradata);
+ 
+   if (reset) {
+-    if (avcodec_get_context_defaults3 (ffmpegdec->context,
+-            oclass->in_plugin) < 0) {
++    avcodec_free_context (&ffmpegdec->context);
++    ffmpegdec->context = avcodec_alloc_context3 (oclass->in_plugin);
++    if (ffmpegdec->context == NULL) {
+       GST_DEBUG_OBJECT (ffmpegdec, "Failed to set context defaults");
+       return FALSE;
+     }
+     ffmpegdec->context->opaque = ffmpegdec;
+   }
+ 
+   return TRUE;
+ }
+ 
+ static gboolean
+ gst_ffmpegauddec_start (GstAudioDecoder * decoder)
+ {
+   GstFFMpegAudDec *ffmpegdec = (GstFFMpegAudDec *) decoder;
+   GstFFMpegAudDecClass *oclass;
+ 
+   oclass = (GstFFMpegAudDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
+ 
+   GST_OBJECT_LOCK (ffmpegdec);
+-  gst_ffmpeg_avcodec_close (ffmpegdec->context);
+-  if (avcodec_get_context_defaults3 (ffmpegdec->context, oclass->in_plugin) < 0) {
++  avcodec_free_context (&ffmpegdec->context);
++  ffmpegdec->context = avcodec_alloc_context3 (oclass->in_plugin);
++  if (ffmpegdec->context == NULL) {
+     GST_DEBUG_OBJECT (ffmpegdec, "Failed to set context defaults");
+     GST_OBJECT_UNLOCK (ffmpegdec);
+     return FALSE;
+diff --git a/ext/libav/gstavaudenc.c b/ext/libav/gstavaudenc.c
+index 3ff64325954a..689982f3e8bb 100644
+--- a/ext/libav/gstavaudenc.c
++++ b/ext/libav/gstavaudenc.c
+@@ -175,27 +175,25 @@ gst_ffmpegaudenc_finalize (GObject * object)
+ 
+   /* clean up remaining allocated data */
+   av_frame_free (&ffmpegaudenc->frame);
+-  gst_ffmpeg_avcodec_close (ffmpegaudenc->context);
+-  gst_ffmpeg_avcodec_close (ffmpegaudenc->refcontext);
+-  av_free (ffmpegaudenc->context);
+-  av_free (ffmpegaudenc->refcontext);
++  avcodec_free_context (&ffmpegaudenc->context);
++  avcodec_free_context (&ffmpegaudenc->refcontext);
+ 
+   G_OBJECT_CLASS (parent_class)->finalize (object);
+ }
+ 
+ static gboolean
+ gst_ffmpegaudenc_start (GstAudioEncoder * encoder)
+ {
+   GstFFMpegAudEnc *ffmpegaudenc = (GstFFMpegAudEnc *) encoder;
+   GstFFMpegAudEncClass *oclass =
+       (GstFFMpegAudEncClass *) G_OBJECT_GET_CLASS (ffmpegaudenc);
+ 
+   ffmpegaudenc->opened = FALSE;
+   ffmpegaudenc->need_reopen = FALSE;
+ 
+-  gst_ffmpeg_avcodec_close (ffmpegaudenc->context);
+-  if (avcodec_get_context_defaults3 (ffmpegaudenc->context,
+-          oclass->in_plugin) < 0) {
++  avcodec_free_context (&ffmpegaudenc->context);
++  ffmpegaudenc->context = avcodec_alloc_context3 (oclass->in_plugin);
++  if (ffmpegaudenc->context == NULL) {
+     GST_DEBUG_OBJECT (ffmpegaudenc, "Failed to set context defaults");
+     return FALSE;
+   }
+@@ -241,10 +239,10 @@ gst_ffmpegaudenc_set_format (GstAudioEncoder * encoder, GstAudioInfo * info)
+ 
+   /* close old session */
+   if (ffmpegaudenc->opened) {
+-    gst_ffmpeg_avcodec_close (ffmpegaudenc->context);
++    avcodec_free_context (&ffmpegaudenc->context);
+     ffmpegaudenc->opened = FALSE;
+-    if (avcodec_get_context_defaults3 (ffmpegaudenc->context,
+-            oclass->in_plugin) < 0) {
++    ffmpegaudenc->context = avcodec_alloc_context3 (oclass->in_plugin);
++    if (ffmpegaudenc->context == NULL) {
+       GST_DEBUG_OBJECT (ffmpegaudenc, "Failed to set context defaults");
+       return FALSE;
+     }
+@@ -286,55 +284,55 @@ gst_ffmpegaudenc_set_format (GstAudioEncoder * encoder, GstAudioInfo * info)
+   /* open codec */
+   if (gst_ffmpeg_avcodec_open (ffmpegaudenc->context, oclass->in_plugin) < 0) {
+     gst_caps_unref (allowed_caps);
+-    gst_ffmpeg_avcodec_close (ffmpegaudenc->context);
++    avcodec_free_context (&ffmpegaudenc->context);
+     GST_DEBUG_OBJECT (ffmpegaudenc, "avenc_%s: Failed to open FFMPEG codec",
+         oclass->in_plugin->name);
+-    if (avcodec_get_context_defaults3 (ffmpegaudenc->context,
+-            oclass->in_plugin) < 0)
++    ffmpegaudenc->context = avcodec_alloc_context3 (oclass->in_plugin);
++    if (ffmpegaudenc->context == NULL)
+       GST_DEBUG_OBJECT (ffmpegaudenc, "Failed to set context defaults");
+ 
+     if ((oclass->in_plugin->capabilities & AV_CODEC_CAP_EXPERIMENTAL) &&
+         ffmpegaudenc->context->strict_std_compliance !=
+         FF_COMPLIANCE_EXPERIMENTAL) {
+       GST_ELEMENT_ERROR (ffmpegaudenc, LIBRARY, SETTINGS,
+           ("Codec is experimental, but settings don't allow encoders to "
+               "produce output of experimental quality"),
+           ("This codec may not create output that is conformant to the specs "
+               "or of good quality. If you must use it anyway, set the "
+               "compliance property to experimental"));
+     }
+     return FALSE;
+   }
+ 
+   /* try to set this caps on the other side */
+   other_caps = gst_ffmpeg_codecid_to_caps (oclass->in_plugin->id,
+       ffmpegaudenc->context, TRUE);
+ 
+   if (!other_caps) {
+     gst_caps_unref (allowed_caps);
+-    gst_ffmpeg_avcodec_close (ffmpegaudenc->context);
++    avcodec_free_context (&ffmpegaudenc->context);
+     GST_DEBUG ("Unsupported codec - no caps found");
+-    if (avcodec_get_context_defaults3 (ffmpegaudenc->context,
+-            oclass->in_plugin) < 0)
++    ffmpegaudenc->context = avcodec_alloc_context3 (oclass->in_plugin);
++    if (ffmpegaudenc->context == NULL)
+       GST_DEBUG_OBJECT (ffmpegaudenc, "Failed to set context defaults");
+     return FALSE;
+   }
+ 
+   icaps = gst_caps_intersect (allowed_caps, other_caps);
+   gst_caps_unref (allowed_caps);
+   gst_caps_unref (other_caps);
+   if (gst_caps_is_empty (icaps)) {
+     gst_caps_unref (icaps);
+     return FALSE;
+   }
+   icaps = gst_caps_fixate (icaps);
+ 
+   if (!gst_audio_encoder_set_output_format (GST_AUDIO_ENCODER (ffmpegaudenc),
+           icaps)) {
+-    gst_ffmpeg_avcodec_close (ffmpegaudenc->context);
++    avcodec_free_context (&ffmpegaudenc->context);
+     gst_caps_unref (icaps);
+-    if (avcodec_get_context_defaults3 (ffmpegaudenc->context,
+-            oclass->in_plugin) < 0)
++    ffmpegaudenc->context = avcodec_alloc_context3 (oclass->in_plugin);
++    if (ffmpegaudenc->context == NULL)
+       GST_DEBUG_OBJECT (ffmpegaudenc, "Failed to set context defaults");
+     return FALSE;
+   }
+@@ -403,8 +401,8 @@ buffer_info_free (void *opaque, guint8 * data)
+     gst_buffer_unmap (info->buffer, &info->map);
+     gst_buffer_unref (info->buffer);
+   } else {
+-    av_free (info->ext_data);
+-    av_free (info->ext_data_array);
++    av_freep (&info->ext_data);
++    av_freep (&info->ext_data_array);
+   }
+   g_slice_free (BufferInfo, info);
+ }
+diff --git a/ext/libav/gstavcodecmap.c b/ext/libav/gstavcodecmap.c
+index ebd4e0490cab..df3aa6bc181f 100644
+--- a/ext/libav/gstavcodecmap.c
++++ b/ext/libav/gstavcodecmap.c
+@@ -2355,7 +2355,7 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id,
+   }
+ 
+   if (buildcaps) {
+-    AVCodec *codec;
++    const AVCodec *codec;
+ 
+     if ((codec = avcodec_find_decoder (codec_id)) ||
+         (codec = avcodec_find_encoder (codec_id))) {
+@@ -3001,6 +3001,7 @@ gst_ffmpeg_videoinfo_to_context (GstVideoInfo * info, AVCodecContext * context)
+     context->color_range = AVCOL_RANGE_JPEG;
+   } else {
+     context->color_range = AVCOL_RANGE_MPEG;
++    context->strict_std_compliance = FF_COMPLIANCE_UNOFFICIAL;
+   }
+ }
+ 
+@@ -4373,19 +4374,19 @@ gst_ffmpeg_caps_to_codecid (const GstCaps * caps, AVCodecContext * context)
+     audio = TRUE;
+   } else if (!strncmp (mimetype, "audio/x-gst-av-", 15)) {
+     gchar ext[16];
+-    AVCodec *codec;
++    const AVCodec *codec;
+ 
+     if (strlen (mimetype) <= 30 &&
+         sscanf (mimetype, "audio/x-gst-av-%s", ext) == 1) {
+       if ((codec = avcodec_find_decoder_by_name (ext)) ||
+           (codec = avcodec_find_encoder_by_name (ext))) {
+         id = codec->id;
+         audio = TRUE;
+       }
+     }
+   } else if (!strncmp (mimetype, "video/x-gst-av-", 15)) {
+     gchar ext[16];
+-    AVCodec *codec;
++    const AVCodec *codec;
+ 
+     if (strlen (mimetype) <= 30 &&
+         sscanf (mimetype, "video/x-gst-av-%s", ext) == 1) {
+diff --git a/ext/libav/gstavutils.c b/ext/libav/gstavutils.c
+index 3780cff4f82c..f3878c37e273 100644
+--- a/ext/libav/gstavutils.c
++++ b/ext/libav/gstavutils.c
+@@ -36,7 +36,7 @@
+ const gchar *
+ gst_ffmpeg_get_codecid_longname (enum AVCodecID codec_id)
+ {
+-  AVCodec *codec;
++  const AVCodec *codec;
+   /* Let's use what ffmpeg can provide us */
+ 
+   if ((codec = avcodec_find_decoder (codec_id)) ||
+diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c
+index a14b6df3064a..f5197fbe1439 100644
+--- a/ext/libav/gstavviddec.c
++++ b/ext/libav/gstavviddec.c
+@@ -340,12 +340,7 @@ gst_ffmpegviddec_finalize (GObject * object)
+   GstFFMpegVidDec *ffmpegdec = (GstFFMpegVidDec *) object;
+ 
+   av_frame_free (&ffmpegdec->picture);
+-
+-  if (ffmpegdec->context != NULL) {
+-    gst_ffmpeg_avcodec_close (ffmpegdec->context);
+-    av_free (ffmpegdec->context);
+-    ffmpegdec->context = NULL;
+-  }
++  avcodec_free_context (&ffmpegdec->context);
+ 
+   G_OBJECT_CLASS (parent_class)->finalize (object);
+ }
+@@ -395,13 +390,11 @@ gst_ffmpegviddec_close (GstFFMpegVidDec * ffmpegdec, gboolean reset)
+ 
+   gst_buffer_replace (&ffmpegdec->palette, NULL);
+ 
+-  if (ffmpegdec->context->extradata) {
+-    av_free (ffmpegdec->context->extradata);
+-    ffmpegdec->context->extradata = NULL;
+-  }
++  av_freep (&ffmpegdec->context->extradata);
+   if (reset) {
+-    if (avcodec_get_context_defaults3 (ffmpegdec->context,
+-            oclass->in_plugin) < 0) {
++    avcodec_free_context (&ffmpegdec->context);
++    ffmpegdec->context = avcodec_alloc_context3 (oclass->in_plugin);
++    if (ffmpegdec->context == NULL) {
+       GST_DEBUG_OBJECT (ffmpegdec, "Failed to set context defaults");
+       return FALSE;
+     }
+@@ -1801,7 +1794,7 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec,
+     if (side_data) {
+       GST_LOG_OBJECT (ffmpegdec,
+           "Found CC side data of type AV_FRAME_DATA_A53_CC, size %d",
+-          side_data->size);
++          (int) side_data->size);
+       GST_MEMDUMP ("A53 CC", side_data->data, side_data->size);
+ 
+       /* do not add closed caption meta if it already exists */
+@@ -2086,8 +2079,9 @@ gst_ffmpegviddec_start (GstVideoDecoder * decoder)
+   oclass = (GstFFMpegVidDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
+ 
+   GST_OBJECT_LOCK (ffmpegdec);
+-  gst_ffmpeg_avcodec_close (ffmpegdec->context);
+-  if (avcodec_get_context_defaults3 (ffmpegdec->context, oclass->in_plugin) < 0) {
++  avcodec_free_context (&ffmpegdec->context);
++  ffmpegdec->context = avcodec_alloc_context3 (oclass->in_plugin);
++  if (ffmpegdec->context == NULL) {
+     GST_DEBUG_OBJECT (ffmpegdec, "Failed to set context defaults");
+     GST_OBJECT_UNLOCK (ffmpegdec);
+     return FALSE;
+@@ -2382,10 +2376,10 @@ gst_ffmpegviddec_get_property (GObject * object,
+ 
+   switch (prop_id) {
+     case PROP_LOWRES:
+-      g_value_set_enum (value, ffmpegdec->context->lowres);
++      g_value_set_enum (value, ffmpegdec->lowres);
+       break;
+     case PROP_SKIPFRAME:
+-      g_value_set_enum (value, ffmpegdec->context->skip_frame);
++      g_value_set_enum (value, ffmpegdec->skip_frame);
+       break;
+     case PROP_DIRECT_RENDERING:
+       g_value_set_boolean (value, ffmpegdec->direct_rendering);
+diff --git a/ext/libav/gstavvidenc.c b/ext/libav/gstavvidenc.c
+index 0468d88804ce..2ed9e5ae64a1 100644
+--- a/ext/libav/gstavvidenc.c
++++ b/ext/libav/gstavvidenc.c
+@@ -224,33 +224,33 @@ gst_ffmpegvidenc_finalize (GObject * object)
+   av_frame_free (&ffmpegenc->picture);
+   gst_ffmpeg_avcodec_close (ffmpegenc->context);
+   gst_ffmpeg_avcodec_close (ffmpegenc->refcontext);
+-  av_free (ffmpegenc->context);
+-  av_free (ffmpegenc->refcontext);
++  av_freep (&ffmpegenc->context);
++  av_freep (&ffmpegenc->refcontext);
+ 
+   G_OBJECT_CLASS (parent_class)->finalize (object);
+ }
+ 
+ static gboolean
+ gst_ffmpegvidenc_set_format (GstVideoEncoder * encoder,
+     GstVideoCodecState * state)
+ {
+   GstCaps *other_caps;
+   GstCaps *allowed_caps;
+   GstCaps *icaps;
+   GstVideoCodecState *output_format;
+   enum AVPixelFormat pix_fmt;
+   GstFFMpegVidEnc *ffmpegenc = (GstFFMpegVidEnc *) encoder;
+   GstFFMpegVidEncClass *oclass =
+       (GstFFMpegVidEncClass *) G_OBJECT_GET_CLASS (ffmpegenc);
+ 
+   ffmpegenc->need_reopen = FALSE;
+ 
+   /* close old session */
+   if (ffmpegenc->opened) {
+-    gst_ffmpeg_avcodec_close (ffmpegenc->context);
++    avcodec_free_context (&ffmpegenc->context);
+     ffmpegenc->opened = FALSE;
+-    if (avcodec_get_context_defaults3 (ffmpegenc->context,
+-            oclass->in_plugin) < 0) {
++    ffmpegenc->context = avcodec_alloc_context3 (oclass->in_plugin);
++    if (ffmpegenc->context == NULL) {
+       GST_DEBUG_OBJECT (ffmpegenc, "Failed to set context defaults");
+       return FALSE;
+     }
+@@ -454,9 +454,9 @@ bad_input_fmt:
+   }
+ close_codec:
+   {
+-    gst_ffmpeg_avcodec_close (ffmpegenc->context);
+-    if (avcodec_get_context_defaults3 (ffmpegenc->context,
+-            oclass->in_plugin) < 0)
++    avcodec_free_context (&ffmpegenc->context);
++    ffmpegenc->context = avcodec_alloc_context3 (oclass->in_plugin);
++    if (ffmpegenc->context == NULL)
+       GST_DEBUG_OBJECT (ffmpegenc, "Failed to set context defaults");
+     goto cleanup_stats_in;
+   }
+@@ -896,8 +896,9 @@ gst_ffmpegvidenc_start (GstVideoEncoder * encoder)
+   ffmpegenc->need_reopen = FALSE;
+ 
+   /* close old session */
+-  gst_ffmpeg_avcodec_close (ffmpegenc->context);
+-  if (avcodec_get_context_defaults3 (ffmpegenc->context, oclass->in_plugin) < 0) {
++  avcodec_free_context (&ffmpegenc->context);
++  ffmpegenc->context = avcodec_alloc_context3 (oclass->in_plugin);
++  if (ffmpegenc->context == NULL) {
+     GST_DEBUG_OBJECT (ffmpegenc, "Failed to set context defaults");
+     return FALSE;
+   }

Copied: gst-libav/repos/staging-x86_64/PKGBUILD (from rev 435023, gst-libav/trunk/PKGBUILD)
===================================================================
--- staging-x86_64/PKGBUILD	                        (rev 0)
+++ staging-x86_64/PKGBUILD	2022-01-23 23:22:05 UTC (rev 435025)
@@ -0,0 +1,46 @@
+# Maintainer: Jan Alexander Steffens (heftig) <heftig at archlinux.org>
+# Contributor: Jan de Groot <jgc at archlinux.org>
+
+pkgname=gst-libav
+pkgver=1.18.5
+pkgrel=2
+pkgdesc="Multimedia graph framework - libav plugin"
+url="https://gstreamer.freedesktop.org/"
+arch=(x86_64)
+license=(GPL)
+depends=(gst-plugins-base-libs bzip2 ffmpeg)
+makedepends=(python git meson)
+provides=("gst-ffmpeg=$pkgver-$pkgrel")
+_commit=9db917cab4c20e72e53ed962406a0d94636a2a39  # tags/1.18.5^0
+source=("git+https://gitlab.freedesktop.org/gstreamer/gst-libav.git#commit=$_commit"
+        0001-gst-libav-fix-build-with-ffmpeg-5.0.0.patch)
+sha256sums=('SKIP'
+            '0718b6de9f8da1bf612efb7b428d8d81f00a1ab710da344c6a9651a4b745cea3')
+
+pkgver() {
+  cd $pkgname
+  git describe --tags | sed 's/-/+/g'
+}
+
+prepare() {
+  cd $pkgname
+
+  # Fix build with FFmpeg 5.0
+  git apply -3 ../0001-gst-libav-fix-build-with-ffmpeg-5.0.0.patch
+}
+
+build() {
+  arch-meson $pkgname build \
+    -D doc=disabled \
+    -D package-name="GStreamer FFmpeg Plugin (Arch Linux)" \
+    -D package-origin="https://www.archlinux.org/"
+  meson compile -C build
+}
+
+check() {
+  meson test -C build --print-errorlogs
+}
+
+package() {
+  meson install -C build --destdir "$pkgdir"
+}



More information about the arch-commits mailing list