
قاعدة كود libvpx مصححة تعالج CVE-2023-5217 مع دعم أدوات التطهير وتكوينات بناء عبر الأنظمة الأساسية لتشفير VP8/VP9 آمن.
README - 31 يناير 2019
مرحبًا بك في WebM VP8/VP9 Codec SDK!
تجميع التطبيقات/المكتبات: نظام البناء المستخدم مشابه لنظام autotools. يتكوّن البناء عمومًا من "إعداد" (configuring) باستخدام خيارات البناء التي تريدها، ثم استخدام GNU make لبناء التطبيق.
* تتطلب جميع أهداف x86 تثبيت المُجمِّع Yasm[1][2].
* تتطلب جميع إصدارات Windows تثبيت Cygwin[3].
* يتطلب بناء الوثائق تثبيت Doxygen[4]. إذا لم يكن
لديك هذه الحزمة، فسيتم تعطيل خيار install-docs.
* يتطلب تنزيل بيانات اختبارات الوحدة curl[5] وsha1sum.
يتم توفير sha1sum عبر GNU coreutils، المثبّت افتراضيًا على
العديد من منصات *nix، بالإضافة إلى MinGW وCygwin. إذا لم يكن coreutils
متاحًا، يمكن بناء نسخة متوافقة من sha1sum من
المصدر[6]. هذه المتطلبات اختيارية إذا لم تقم بتشغيل اختبارات
الوحدة.
[1]: http://www.tortall.net/projects/yasm
[2]: بالنسبة إلى Visual Studio، يجب أن يكون ثنائي yasm الأساسي (وليس vsyasm) في
PATH الخاص بـ Visual Studio. بالنسبة إلى VS2017، يكفي إعادة تسمية
yasm-<version>-<arch>.exe إلى yasm.exe ووضعه في:
Program Files (x86)/Microsoft Visual Studio/2017/<level>/Common7/Tools/
[3]: http://www.cygwin.com
[4]: http://www.doxygen.org
[5]: http://curl.haxx.se
[6]: http://www.microbrew.org/tools/md5sha1sum/
2. البناء خارج شجرة المصادر (Out-of-tree builds) البناء خارج شجرة المصادر هو أسلوب مدعوم لبناء التطبيق. بالنسبة للبناء خارج الشجرة، يتم الاحتفاظ بشجرة المصادر منفصلة عن ملفات الكائنات الناتجة أثناء التجميع. على سبيل المثال:
$ mkdir build
$ cd build
$ ../libvpx/configure <options>
$ make
3. خيارات الإعداد يدعم السكربت 'configure' عددًا من الخيارات. يمكن استخدام خيار --help للحصول على قائمة بالخيارات المدعومة: $ ../libvpx/configure --help
أدوات تحليل المترجمات أضافت المترجمات أدوات تعقيم (sanitizers) تزوّد الملفات الثنائية بمعلومات حول حساب العناوين، استخدام الذاكرة، تعدد الخيوط، السلوك غير المحدد، وأخطاء شائعة أخرى. لتبسيط بناء libvpx مع بعض هذه الميزات، استخدم tools/set_analyzer_env.sh قبل تشغيل configure. سيحدد المترجم والخيارات اللازمة للبناء بالإضافة إلى متغيرات البيئة التي يقرؤها المحلل عند اختبار الملفات الثنائية. $ source ../libvpx/tools/set_analyzer_env.sh address
التطوير عبر المنصات (Cross development) بالنسبة للتطوير عبر المنصات، فإن أبرز خيار هو خيار --target. يمكن العثور على أحدث قائمة بالأهداف المدعومة في أسفل مخرجات --help الخاصة بسكربت configure. وقت كتابة هذا، قائمة الأهداف المتاحة هي:
arm64-android-gcc
arm64-darwin-gcc
arm64-linux-gcc
arm64-win64-gcc
arm64-win64-vs15
armv7-android-gcc
armv7-darwin-gcc
armv7-linux-rvct
armv7-linux-gcc
armv7-none-rvct
armv7-win32-gcc
armv7-win32-vs14
armv7-win32-vs15
armv7s-darwin-gcc
armv8-linux-gcc
mips32-linux-gcc
mips64-linux-gcc
ppc64le-linux-gcc
sparc-solaris-gcc
x86-android-gcc
x86-darwin8-gcc
x86-darwin8-icc
x86-darwin9-gcc
x86-darwin9-icc
x86-darwin10-gcc
x86-darwin11-gcc
x86-darwin12-gcc
x86-darwin13-gcc
x86-darwin14-gcc
x86-darwin15-gcc
x86-darwin16-gcc
x86-darwin17-gcc
x86-iphonesimulator-gcc
x86-linux-gcc
x86-linux-icc
x86-os2-gcc
x86-solaris-gcc
x86-win32-gcc
x86-win32-vs14
x86-win32-vs15
x86_64-android-gcc
x86_64-darwin9-gcc
x86_64-darwin10-gcc
x86_64-darwin11-gcc
x86_64-darwin12-gcc
x86_64-darwin13-gcc
x86_64-darwin14-gcc
x86_64-darwin15-gcc
x86_64-darwin16-gcc
x86_64-darwin17-gcc
x86_64-iphonesimulator-gcc
x86_64-linux-gcc
x86_64-linux-icc
x86_64-solaris-gcc
x86_64-win64-gcc
x86_64-win64-vs14
x86_64-win64-vs15
generic-gnu
يمكن استخدام هدف generic-gnu، بالاقتران مع متغير البيئة CROSS، للترجمة عبر المنصات لبنى (architectures) غير المذكورة صراحةً، إذا كانت سلسلة الأدوات عبارة عن سلسلة أدوات GNU متقاطعة (gcc/binutils). من المحتمل أن تعمل سلاسل أدوات POSIX الأخرى أيضًا. على سبيل المثال، للبناء باستخدام سلسلة أدوات mipsel-linux-uclibc، يمكن استخدام الأمر التالي (لاحظ، صيغة POSIX SH، كيّفها مع shell الخاص بك حسب الحاجة):
$ CROSS=mipsel-linux-uclibc- ../libvpx/configure
بالإضافة إلى ذلك، يمكن تجاوز الملفات التنفيذية التي سيتم استدعاؤها عن طريق تحديد متغيرات البيئة: CC, AR, LD, AS, STRIP, NM. يمكن تمرير خيارات إضافية إلى هذه الملفات التنفيذية باستخدام CFLAGS وLDFLAGS وASFLAGS.
متجهات اختبار VP8/VP9: يمكن تنزيل متجهات الاختبار والتحقق منها باستخدام نظام البناء بعد تشغيل configure. لتحديد دليل بديل، يمكن استخدام متغير البيئة LIBVPX_TEST_DATA_PATH.
$ ./configure --enable-unit-tests $ LIBVPX_TEST_DATA_PATH=../libvpx-test-data make testdata
أسلوب الكود: يتم فرض أسلوب الترميز المستخدم في هذا المشروع باستخدام clang-format مع الإعدادات الموجودة في ملف .clang-format في جذر المستودع.
قبل دفع التغييرات للمراجعة، يمكنك تنسيق الكود الخاص بك باستخدام:
$ clang-format -i --style=file
$(git diff --name-only --diff-filter=ACMR '.[hc]' '.cc')
تحقق من ملف .clang-format لمعرفة الإصدار المستخدم لإنشائه إذا كان هناك أي اختلاف بين التنسيق المحلي لديك ونظام المراجعة.
انظر أيضًا: http://clang.llvm.org/docs/ClangFormat.html
الدعم هذه المكتبة مشروع مفتوح المصدر مدعوم من مجتمعها. يرجى مراسلة [email protected] للمساعدة.