به‌روزرسانی خودکار کاتالوگ و ادغام LSP

پلتفرم SDV (Software Defined Vehicle) شامل کاتالوگ‌های VSIDL متعددی در سراسر کدبیس است. فایل CATALOG_UPDATE یک پیکربندی متمرکز برای هر کاتالوگ ارائه می‌دهد که امکان به‌روزرسانی‌های خودکار و ادغام IDE را فراهم می‌کند.

نقش فایل CATALOG_UPDATE

فایل CATALOG_UPDATE دو هدف اصلی را دنبال می‌کند:

  1. به‌روزرسانی‌های خودکار: این فایل به ابزار regenerator اجازه می‌دهد تا هنگام تغییر کامپایلر یا وابستگی‌ها، تمام کاتالوگ‌های موجود در سیستم را پیدا کرده و دوباره کامپایل کند.
  2. پشتیبانی از پروتکل سرور زبان (LSP): سرور زبان VSIDL از این فایل برای کشف ریشه کاتالوگ و حل وابستگی‌ها استفاده می‌کند. این امر ویژگی‌هایی مانند «برو به تعریف»، تکمیل خودکار و اعتبارسنجی بلادرنگ برای انواع تعریف شده در سایر کاتالوگ‌ها را فعال می‌کند.

پیکربندی یک کاتالوگ

برای فعال کردن به‌روزرسانی‌های خودکار و پشتیبانی LSP برای یک کاتالوگ VSIDL، یک فایل CATALOG_UPDATE در دایرکتوری ریشه کاتالوگ ایجاد کنید. این فایل یک فایل متنی protobuf است.

فیلدهای پیکربندی کاتالوگ

  • output_path (رشته‌ای، اختیاری): مسیر نسبی از ریشه کاتالوگ به دایرکتوری که کد میان‌افزار تولید شده باید در آن قرار گیرد.
  • dependency_catalog_paths (رشته تکراری): فهرستی از مسیرهای نسبی به سایر دایرکتوری‌های کاتالوگ. سرور LSP از این مسیرها برای حل انواع خارجی استفاده می‌کند.
  • vsidlc_gen_args (رشته‌ای، اختیاری): آرگومان‌های ارسالی به vsidlc . سرور LSP این آرگومان‌ها را بررسی می‌کند تا قوانین اعتبارسنجی صحیح (برای مثال، "--apex" ) را اعمال کند.
  • prebuilts_output_path (رشته‌ای، اختیاری): مسیر برای پیش‌ساخت‌های پیکربندی زمان اجرا تولید شده.
  • prebuilts_filegroup (رشته‌ای، اختیاری): نام filegroup Soong برای فایل‌های از پیش ساخته شده.

پیکربندی نمونه

# proto-file: //system/software_defined_vehicle/tools/regenerator/proto/catalog.proto
# proto-message: Catalog

output_path: ".."
dependency_catalog_paths: "../../../../../automotive_services/diagnostics/vsidl/v1"
vsidlc_gen_args: "--apex"

چرا به روزرسانی های خودکار مورد نیاز است

نگهداری دستی کد تولید شده برای هر کاتالوگ به چند دلیل مشکل‌ساز است:

  1. به‌روزرسانی‌های کامپایلر: وقتی کامپایلر با رفع اشکالات یا ویژگی‌های جدید به‌روزرسانی می‌شود، تمام کدها و فایل‌های تولید شده که تحت پوشش یک genrule در فایل Android.bp نیستند، باید به‌روزرسانی شوند تا سازگاری حفظ شود.
  2. مدیریت وابستگی: تغییرات در یک کاتالوگ پایه اغلب نیاز به بازسازی کاتالوگ‌های پایین‌دستی دارد.
  3. دقت: به‌روزرسانی‌های خودکار، خطر خطای انسانی را هنگام مشخص کردن مسیرها و وابستگی‌ها کاهش می‌دهند.

ابزار بازسازی را اجرا کنید

ابزار regenerator درخت دایرکتوری را از ریشه SDV پیمایش می‌کند و به دنبال فایل‌هایی با نام دقیق CATALOG_UPDATE می‌گردد.

برای به‌روزرسانی تمام کاتالوگ‌های پیکربندی‌شده:

  1. ساخت ابزار:

    m regenerator
    
  2. ابزار را اجرا کنید:

    regenerator
    

    در صورت تمایل، آن را به صورت بازگشتی برای یک دایرکتوری خاص اجرا کنید: console regenerator --root /path/to/directory

این ابزار فایل‌های تولید شده را به‌روزرسانی می‌کند و یک ساخت کامل ( m droid ) انجام می‌دهد تا تأیید کند که تغییرات با بقیه سیستم سازگار هستند.