-# dist scripts
-if not meson.is_subproject()
- meson.add_dist_script('dist-translations.py')
+fs = import('fs')
+
+# scripts checks
+release_modules = [
+ 'gstreamer',
+ 'gst-plugins-base',
+ 'gst-plugins-good',
+ 'gst-plugins-ugly',
+ 'gst-plugins-bad',
+ 'gst-libav',
+ 'gst-rtsp-server',
+ 'gst-editing-services',
+ 'gst-devtools',
+ 'gst-python',
+ 'gstreamer-vaapi',
+ 'gst-omx',
+ 'gst-docs',
+ 'gstreamer-sharp',
+]
+
+# Make sure the files are all identical to avoid divergence
+gen_cl_hash = fs.hash(files('gen-changelog.py'), 'md5')
+
+out_of_sync_list = []
+
+foreach m : release_modules
+ module_gen_cl_hash = fs.hash(f'../subprojects/@m@/scripts/gen-changelog.py', 'md5')
+
+ if module_gen_cl_hash != gen_cl_hash
+ out_of_sync_list += [f'subprojects/@m@/scripts/gen-changelog.py']
+ endif
+endforeach
+
+if out_of_sync_list.length() > 0
+ module_list = ' '.join(release_modules)
+ out_of_sync_msg = '\n '.join(out_of_sync_list)
+ error('''
+
+ ==============================================================================================================
+
+ The following subproject scripts are out of sync with scripts/gen-changelog.py:
+
+ @0@
+
+ Run
+
+ for m in @1@; do cp scripts/gen-changelog.py subprojects/$m/scripts/gen-changelog.py; done
+
+ from the top-level git source directory to sync them up.
+
+ ==============================================================================================================
+ '''.format(out_of_sync_msg, module_list))
endif