عن المشروع
## ما هذا المستودع
يحوي `nx_open` مكونات منصة Network Optix Meta مفتوحة المصدر — كود المصدر والمواصفات المستخدمة لبناء جميع منتجات Powered-by-Nx، بما في ذلك نظام إدارة الفيديو Nx Witness (VMS). المكوّن الرئيسي القابل للبناء من هذا المستودع هو عميل سطح المكتب VMS. مكتبة Nx Kit (`artifacts/nx_kit/`) جزء من عميل سطح المكتب لكن يمكن استخدامها أيضًا بشكل مستقل؛ ملف readme الخاص بها يحتوي على التفاصيل.
معظم الملفات مرخّصة بموجب Mozilla Public License 2.0 ما لم يُذكر خلاف ذلك؛ نص الترخيص موجود في `licenses/license_mpl2.md`. قائمة كاملة بمكونات الطرف الثالث مفتوحة المصدر المضمّنة منشورة في صفحة الإفصاح عن البرمجيات مفتوحة المصدر الخاصة بالمشروع.
## المنصات المدعومة
- Windows 10 x64 (Microsoft Visual Studio)
- Linux Ubuntu 20.04 و22.04 و24.04 (GCC أو Clang) x64 وARM 32/64 عبر الترجمة المتقاطعة على Linux x64
- macOS Monterey 12.6.3 (Xcode مع Clang) x64 وApple M1/M2
## متطلبات البناء
- Python 3.8+ متاح في `PATH` باسم `python`، وعلى macOS/Ubuntu أيضًا باسم `python3`
- Pip متاح في `PATH` ومثبّت للمفسّر الذي يستخدمه البناء
- CMake وNinja وConan، يُنصح بتثبيتها عبر pip من `requirements.txt` في فرع `master`
- Linux: تثبيت تبعيات البناء والتشغيل من خلال CMake مع `-DinstallSystemRequirements=ON`؛ المترجم نفسه يُجلب كأداة Conan بدلاً من أخذه من النظام
- Windows: Visual Studio 2022 Community Edition مع حزمة العمل "Desktop development with C++" والمكوّن "C++ CMake tools for Windows"
- macOS: Xcode Command Line Tools 14.2+، بالإضافة إلى Rosetta 2 على Apple M1/M2
## بناء عميل سطح المكتب
نصوص ورسومات واجهة العميل تأتي من حزمة تخصيص (ملف zip) تحدد هوية VMS التجارية. حزمة افتراضية بعلامة Nx-Meta مع عناصر نائبة تُؤخذ من Conan؛ يمكن توليد حزم مخصصة على بوابة Nx Meta Developer Portal.
سكربتات التسهيل `build.sh` (Linux/macOS) و`build.bat` (Windows) تغلّف مرحلتي إعداد CMake والبناء. تنشئ مجلد بناء شقيقًا لجذر المستودع بلاحقة `-build`. التشغيل العادي ينتج بناء Debug نظيفًا مع ملفات تنفيذية في `nx_open-build/bin/`؛ `-DdeveloperBuild=OFF` ينتج بناء Release مع حزم توزيع وأرشيف اختبارات وحدة تحت `nx_open-build/distrib/`. يمكن توفير حزمة مخصصة عبر `-DcustomizationPackageFile=<customization.zip>`، ويجب أن يطابق معرف `description.json` الخاص بها معرف الخادم. البناءات التزايدية تعيد تشغيل السكربت فقط؛ وتُعاد عملية التوليد تلقائيًا عند الحاجة. الترجمة المتقاطعة تستخدم `-DtargetDevice=` بقيم مثل `linux_x64` و`linux_arm64` و`linux_arm32` و`macos_x64` و`macos_arm64`. البناء والتنقيح عبر Visual Studio IDE مدعومان بعد تشغيل مرحلة التوليد من سطر الأوامر. تعيين `NX_CONAN_DOWNLOAD_CACHE` يتجنب إعادة تنزيل الأدوات في البناءات النظيفة.
## التوقيع
على Windows، يمكن توقيع الملفات التنفيذية وملف التوزيع بشهادة ناشر PKCS#12 عبر `signtool.py`، ويُهيأ من خلال ملف YAML (مسار الشهادة وكلمة المرور وخوادم الطابع الزمني الاختيارية) ويُفعّل بـ `-DsigntoolConfig=`. يمكن توليد شهادة اختبار موقعة ذاتيًا باستخدام سكربت الدفعات المرفق. Linux لا يتطلب توقيعًا ولا يشمل أدوات لذلك. أداة توقيع مستقلة لنظام macOS موصوفة بأنها ما تزال قيد التطوير.
## تشغيل العميل وتوافق الخادم
يعمل عميل سطح المكتب مباشرة من مجلد البناء. على Windows، يجب تشغيل `activate_run.bat` (المولّد بواسطة Conan) أولاً لضبط PATH ومتغيرات أخرى؛ و`deactivate_run.bat` يعيدها.
نظرًا لأن مصادر خادم VMS ليست عامة، لا يمكن لعميل مبني من هذا المستودع الاتصال إلا بخادم متوافق تم الحصول عليه من إصدار VMS عام، بما في ذلك إصدارات المعاينة Nx Meta VMS. التوافق مضمون فقط عندما يُبنى العميل من نفس commit الخاص بالخادم، والمحدد بوسوم git مثل `vms/4.2/12345_release_all`. العملاء من commits لاحقة في نفس الفرع قد يستمرون في العمل لفترة لكن قد يفقدون التوافق. يجب أيضًا أن يستخدم العميل والخادم حزم تخصيص بنفس معرف التخصيص. يحاول نظام البناء استنتاج إصدار الخادم المتوافق من وسوم git أثناء التوليد؛ يمكن تجاوز ذلك بـ `-DbuildNumber=` و`-DbuildNumber=AUTO` يعيد الاكتشاف التلقائي.
تحديثات VMS التلقائية معطلة لعميل سطح المكتب مفتوح المصدر، لأنها ستستبدل البناء المخصص ببناء من Nx؛ يمكن للمسؤول مع ذلك فرض مثل هذا التحديث. خوادم وحزم التحديث المخصصة ممكنة تقنيًا، وقد تُوفر تعليمات أو أدوات في المستقبل.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.