Libyang عبارة عن محلل لغة نمذجة يانغ ومجموعة أدوات مكتوبة (وتوفير واجهة برمجة التطبيقات) في C. يتم استخدام المكتبة على سبيل المثال في مشاريع libnetconf2 أو netopeer2 أو sysrepo.
يستخدم المشروع 2 فروع رئيسية master و devel . لا ينبغي استنساخ الفروع الأخرى. في master هناك ملفات من آخر إصدار رسمي. تم العثور على أي آخر تحسينات وتغييرات ، والتي تم اختبارها لفترة وجيزة على الأقل في devel . في كل إصدار جديد ، يتم دمج devel في master .
هذا يعني أنه عندما يتم استخدام الإصدارات الرسمية المستقرة فقط ، يمكن استخدام إما master أو تنزيل إصدارات محددة. إذا كان يجب تطبيق جميع أحدث أدوات الخلل ، فإن devel Branch هو الذي يجب استخدامه. لاحظ أنه كلما تم إنشاء مشكلة جديدة ويحدث في الفرع master ، فمن المحتمل أن تكون الاستجابة الأولى هي استخدام devel قبل أي دعم إضافي.
انظر إلى الوثائق Transition Manual القسم. يجب أن يساعد ذلك في الترحيل الأساسي والقدرة على تجميع المشروع. ولكن للاستفادة من الميزات الجديدة فعليًا ، يلزم قراءة الوثائق بأكملها وواجهة برمجة التطبيقات.
يغطي التنفيذ الحالي Yang 1.0 (RFC 6020) وكذلك Yang 1.1 (RFC 7950).
يمكن بناء RPM BRPM أو حزم DEB من أحدث إصدار محليًا باستخدام apkg ، وابحث في README في دليل distro .
pthreads-win32direntdlfcn-win32getopt-win32 لا يدعم إصدار Windows الإضافات ، ويعمل yanglint في وضع غير تفاعلي فقط. في Windows ، يتم تحويل جميع قيم تاريخ ووقت يانغ أولاً إلى UTC (إذا تم تحديد إزاحة TZ) ، ثم يتم إرجاعها مع "المنطقة الزمنية غير المحددة".
$ mkdir build; cd build
$ cmake ..
$ make
# make install
تعيين متغير CC :
$ CC=/usr/bin/clang cmake ..
لتغيير البادئة حيث يتم تثبيت المكتبة والرؤوس وأي ملفات أخرى ، قم بتعيين متغير CMAKE_INSTALL_PREFIX :
$ cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
البادئة الافتراضية هي /usr/local .
هناك وضعان للبناء:
يتم استخدام وضع Debug حاليًا كأسلوب افتراضي. للتبديل إلى وضع Release ، أدخل في سطر الأوامر:
$ cmake -D CMAKE_BUILD_TYPE:String="Release" ..
أما بالنسبة لملحقات Yang ، فإن Libyang يسمح بالمكونات الإضافية لتمديد التحميل. بشكل افتراضي ، فإن الدليل لتخزين المكونات الإضافية هو Libdir/Libyang. لتغييره ، استخدم خيار CMake التالي مع القيمة التي تحدد الدليل المطلوب:
$ cmake -DPLUGINS_DIR:PATH=`pwd`"/src/extensions/" ..
يمكن أيضًا تغيير مسار الدليل وقت التشغيل عبر متغير البيئة ، على سبيل المثال:
$ LIBYANG_EXTENSIONS_PLUGINS_DIR=`pwd`/my/relative/path yanglint
لاحظ أن الإضافات غير متوفرة على Windows.
كلما كان من المفترض أن يتم تحميل المراجعة الأخيرة للمخطط (استيراد دون مراجعة محددة) ، يتم تنفيذها بالطريقة القياسية ، في المرة الأولى. بشكل افتراضي ، في كل وقت عند الحاجة إلى آخر مراجعة لنفس المخطط ، يتم إعادة استخدام تلك التي تم تحميلها في البداية. إذا كنت تعلم أن هذا يمكن أن يسبب مشاكل يعني أن أحدث مراجعة متاحة للمخطط يمكن أن تتغير أثناء التشغيل ، فيمكنك إجبار Libyang دائمًا على البحث عن المخطط من جديد بواسطة:
$ cmake -DENABLE_LATEST_REVISIONS=OFF ..
لاحظ أنه مع Cmake ، إذا كنت ترغب في تغيير برنامج التحويل البرمجي أو خياراته بعد تشغيل Cmake بالفعل ، فأنت بحاجة إلى مسح ذاكرة التخزين المؤقت أولاً - الطريقة الأكثر بساطة للقيام بذلك هي إزالة جميع المحتوى من دليل "البناء".
جميع وظائف Libyang متوفرة عبر الرأس الرئيسي:
#include <libyang/libyang.h>
لتجميع برنامجك مع Libyang ، من الضروري ربطه بـ Libyang باستخدام معلمات الارتباط التالية:
-lyang
لاحظ أنه قد يكون من الضروري استدعاء ldconfig(8) بعد تثبيت المكتبة وإذا تم تثبيت المكتبة في مسار غير قياسي ، فيجب تحديد المسار إلى Libyang على الرابط. للمساعدة في تعيين جميع خيارات المترجم ، هناك ملف libyang.pc لـ pkg-config(1) متوفر في شجرة المصدر. يتم تثبيت الملف مع المكتبة.
إذا كنت تستخدم cmake in You Project ، فمن الممكن أيضًا استخدام ملف FindLibYANG.cmake المقدم للكشف عن وجود مكتبة Libyang في النظام.
لا توجد روابط للغات الأخرى مباشرة في هذا المشروع ولكنها متوفرة بشكل منفصل.
يتضمن مشروع Libyang أداة غنية بالميزات تسمى yanglint(1) للتحقق من صحة المخططات والبيانات النمذجة Yang. توجد رموز المصدر في /tools/lint ويمكن استخدامها لاستكشاف كيفية استخدام التطبيق لمكتبة Libyang. يتم تثبيت yanglint(1) الثنائية وكذلك صفحة الرجل مع المكتبة نفسها.
هناك أيضًا ReadMe تصف بعض الأمثلة على استخدام yanglint .
يشمل ليبيانغ العديد من الاختبارات التي تم بناؤها مع Cmocka. يمكن العثور على الاختبارات في tests الفرعية ، وهي مصممة للتحقق من وظائف المكتبة بعد تغييرات الكود. اختبارات الانحدار الإضافية التي أجريت مع مجموعة من المدخلات الضخمة التي تسببت سابقًا في الحوادث. تتوفر تلك في tests/fuzz ويتم تصميمها تلقائيًا مع اختبارات وحدة Cmocka.
الاختبارات تم تصميمها افتراضيًا في وضع بناء Debug عن طريق التشغيل
$ make
في حالة وضع Release ، لا يتم تصميم الاختبارات بشكل افتراضي (يتطلب تبعية إضافية) ، ولكن يمكن تمكينها عبر خيار CMake:
$ cmake -DENABLE_TESTS=ON ..
لاحظ أنه إذا لم تكن رؤوس Cmocka الضرورية موجودة في النظام ، فإن الاختبارات غير متوفرة على الرغم من خيارات البناء أو خيارات Cmake.
يمكن إجراء الاختبارات بواسطة هدف test Make:
$ make test
هناك أداة قياس الأداء تضمنت أن تطبع المعلومات حول الوقت اللازم لتنفيذ حالات الاستخدام الشائعة للعمل مع بيانات مثيل Yang.
لتمكين هذا الاختبار ، استخدم خيارًا وللحصول على نتائج تمثيلية ، تمكين نوع إنشاء الإصدار:
$ cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_PERF_TESTS=ON ..
ولإجراء الاختبار مع رؤية تشغيل الإخراج:
$ make
$ ctest -V -R ly_perf
بناءً على إجراء الاختبارات ، من الممكن إنشاء تقرير تغطية الكود. ولكن يجب تمكينه وهذه الأوامر ضرورية لإنشاء التقرير:
$ cmake -DENABLE_COVERAGE=ON ..
$ make
$ make coverage
تتوفر أهداف متعددة من يانغ فورغنغ وإرشادات الغموض في دليل tests/fuzz .
يمكن أن يتم غموض جميع الأهداف مع LLVM's Libfuzzer و AFL ، ويمكن بسهولة إضافة أهداف جديدة. تتوفر أمثلة ASCIINEMA التي تصف الإعداد الزخرفي لكل من AFL (https://asciinema.org/a/311060) و libfuzzer (https://asciinema.org/a/311035).