منصوبے کے بارے میں

## یہ ریپوزٹری کیا ہے `nx_open` نیٹ ورک آپٹکس میٹا پلیٹ فارم کے اوپن سورس اجزاء رکھتا ہے — وہ سورس کوڈ اور تصریحات جو تمام Powered-by-Nx مصنوعات بنانے کے لیے استعمال ہوتی ہیں، بشمول Nx Witness ویڈیو مینجمنٹ سسٹم (VMS)۔ اس ریپوزٹری سے بنایا جانے والا اہم جزو VMS ڈیسک ٹاپ کلائنٹ ہے۔ Nx Kit لائبریری (`artifacts/nx_kit/`) ڈیسک ٹاپ کلائنٹ کا حصہ ہے لیکن اسے آزادانہ طور پر بھی استعمال کیا جا سکتا ہے؛ اس کی اپنی ریڈمی میں تفصیلات موجود ہیں۔ زیادہ تر فائلیں Mozilla Public License 2.0 کے تحت لائسنس یافتہ ہیں جب تک کہ دوسری صورت نہ کہی گئی ہو؛ لائسنس کا متن `licenses/license_mpl2.md` میں ہے۔ شامل کردہ تیسرے فریق کے اوپن سورس اجزاء کی مکمل فہرست پروجیکٹ کے اوپن سورس سافٹ ویئر ڈسکلوزر صفحہ پر شائع کی گئی ہے۔ ## معاون پلیٹ فارمز - ونڈوز 10 x64 (مائیکروسافٹ ویژول اسٹوڈیو) - لینکس اوبنٹو 20.04، 22.04، 24.04 (GCC یا Clang) x64، ARM 32/64 لینکس x64 پر کراس کمپائلنگ کے ذریعے - میک او ایس مونٹیری 12.6.3 (Xcode کے ساتھ Clang) x64 اور ایپل M1/M2 ## بلڈ کی شرائط - Python 3.8+ `PATH` پر `python` کے طور پر دستیاب ہو، اور میک او ایس/اوبنٹو پر `python3` کے طور پر بھی - Pip `PATH` پر دستیاب ہو اور بلڈ کے استعمال کردہ انٹرپریٹر کے لیے نصب ہو - CMake، Ninja اور Conan، تجویز ہے کہ `master` برانچ کے `requirements.txt` سے pip کے ذریعے نصب کیے جائیں - لینکس: بلڈ اور رن ٹائم ڈیپنڈنسیز CMake کے ذریعے `-DinstallSystemRequirements=ON` کے ساتھ نصب کی جائیں؛ کمپائلر خود سسٹم سے نہیں بلکہ Conan آرٹیفیکٹ کے طور پر حاصل کیا جاتا ہے - ونڈوز: ویژول اسٹوڈیو 2022 کمیونٹی ایڈیشن جس میں "Desktop development with C++" ورک لوڈ اور "C++ CMake tools for Windows" جزو شامل ہو - میک او ایس: Xcode کمانڈ لائن ٹولز 14.2+، اور ایپل M1/M2 پر Rosetta 2 ## ڈیسک ٹاپ کلائنٹ بنانا کلائنٹ کے GUI متون اور گرافکس ایک کسٹمائزیشن پیکج (ایک زپ فائل) سے آتے ہیں جو VMS برانڈنگ کی وضاحت کرتا ہے۔ ایک ڈیفالٹ Nx-Meta برانڈڈ پیکج جس میں پلیس ہولڈرز ہیں Conan سے لیا جاتا ہے؛ کسٹم پیکجز Nx Meta ڈیولپر پورٹل پر بنائے جا سکتے ہیں۔ آسان اسکرپٹس `build.sh` (لینکس/میک او ایس) اور `build.bat` (ونڈوز) CMake کنفیگریشن اور بلڈ مراحل کو لپیٹتی ہیں۔ یہ ریپوزٹری روٹ کے ساتھ والی ڈائریکٹری میں `-build` لاحقہ کے ساتھ بلڈ ڈائریکٹری بناتی ہیں۔ سادہ رن ایک صاف ڈیبگ بلڈ تیار کرتا ہے جس میں ایگزیکیوٹیبلز `nx_open-build/bin/` میں ہوتے ہیں؛ `-DdeveloperBuild=OFF` ایک ریلیز بلڈ تیار کرتا ہے جس میں ڈسٹری بیوشن پیکجز اور یونٹ ٹیسٹ آرکائیو `nx_open-build/distrib/` کے تحت ہوتے ہیں۔ ایک کسٹم پیکج `-DcustomizationPackageFile=<customization.zip>` کے ساتھ فراہم کیا جا سکتا ہے، جس کی `description.json` id سرور سے مماثل ہونی چاہیے۔ انکریمنٹل بلڈز صرف اسکرپٹ دوبارہ چلاتے ہیں؛ جنریشن خود بخود دوبارہ شروع ہوتی ہے جب ضرورت ہو۔ کراس کمپائلنگ `-DtargetDevice=` کے ساتھ کی جاتی ہے جس کی اقدار جیسے `linux_x64`، `linux_arm64`، `linux_arm32`، `macos_x64`، `macos_arm64` ہیں۔ ویژول اسٹوڈیو IDE بلڈ اور ڈیبگنگ کمانڈ لائن سے جنریشن مرحلہ چلانے کے بعد معاون ہے۔ `NX_CONAN_DOWNLOAD_CACHE` سیٹ کرنے سے صاف بلڈز پر آرٹیفیکٹس دوبارہ ڈاؤن لوڈ کرنے سے بچا جا سکتا ہے۔ ## دستخط کاری ونڈوز پر، ایگزیکیوٹیبلز اور ڈسٹری بیوشن فائل کو PKCS#12 پبلشر سرٹیفکیٹ کے ساتھ `signtool.py` کے ذریعے دستخط کیا جا سکتا ہے، جسے YAML فائل (سرٹیفکیٹ کا راستہ، پاس ورڈ، اختیاری ٹائم اسٹیمپ سرورز) کے ذریعے ترتیب دیا جاتا ہے اور `-DsigntoolConfig=` کے ساتھ فعال کیا جاتا ہے۔ ایک خود دستخط شدہ ٹیسٹ سرٹیفکیٹ فراہم کردہ بیچ اسکرپٹ سے بنایا جا سکتا ہے۔ لینکس کو دستخط کی ضرورت نہیں اور کوئی ٹولز شامل نہیں۔ ایک اسٹینڈ الون میک او ایس دستخط کاری ٹول کو ترقی میں بتایا گیا ہے۔ ## کلائنٹ چلانا اور سرور مطابقت ڈیسک ٹاپ کلائنٹ براہ راست بلڈ ڈائریکٹری سے چلتا ہے۔ ونڈوز پر، `activate_run.bat` (Conan کے ذریعے بنایا گیا) پہلے چلانا ضروری ہے تاکہ PATH اور دیگر متغیرات سیٹ ہوں؛ `deactivate_run.bat` انہیں بحال کرتا ہے۔ چونکہ VMS سرور کے سورس کوڈ عوامی نہیں ہیں، اس ریپوزٹری سے بنایا گیا کلائنٹ صرف ایک مطابقت رکھنے والے سرور سے جڑ سکتا ہے جو عوامی VMS ریلیز سے حاصل کیا گیا ہو، بشمول Nx Meta VMS پیش نظارہ ریلیز۔ مطابقت صرف اس وقت یقینی ہے جب کلائنٹ سرور کے اسی کمٹ سے بنایا گیا ہو، جس کی شناخت git ٹیگز جیسے `vms/4.2/12345_release_all` سے ہوتی ہے۔ اسی برانچ کے بعد کے کمٹس سے بنے کلائنٹ کچھ وقت تک کام کر سکتے ہیں لیکن مطابقت کھو سکتے ہیں۔ کلائنٹ اور سرور کو ایک ہی کسٹمائزیشن id والے کسٹمائزیشن پیکجز بھی استعمال کرنے چاہئیں۔ بلڈ سسٹم جنریشن کے دوران git ٹیگز سے مطابقت رکھنے والے سرور ورژن حاصل کرنے کی کوشش کرتا ہے؛ `-DbuildNumber=` اسے اوور رائیڈ کر سکتا ہے اور `-DbuildNumber=AUTO` خودکار شناخت بحال کرتا ہے۔ اوپن سورس ڈیسک ٹاپ کلائنٹ کے لیے خودکار VMS اپڈیٹس غیر فعال ہیں، کیونکہ وہ کسٹم بلڈ کو Nx کے بنائے ہوئے سے بدل دیں گے؛ ایک ایڈمنسٹریٹر اب بھی ایسی اپڈیٹ کو مجبور کر سکتا ہے۔ کسٹم اپڈیٹ سرورز اور پیکجز تکنیکی طور پر ممکن ہیں، اور ہدایات یا ٹولز مستقبل میں فراہم کیے جا سکتے ہیں۔