hare-module(5) File Formats Manual hare-module(5)

hare-module - ساختار و چینش ماژول‌های هیر (Hare)

ماژول‌های هیر (Hare) در سیستم‌فایل به‌صورت دایرکتوری نمایش داده می‌شوند. یک دایرکتوری در صورتی یک ماژول معتبر هیر محسوب می‌شود که حداقل شامل یک فایل منبع هیر (با پسوند فایل .ha) یا فایلی با نام README باشد.

تمام فایل‌هایی که به .ha، .s و .o ختم می‌شوند، به‌عنوان ورودی‌های ماژول در نظر گرفته شده و به‌ترتیب به‌عنوان سورس‌های هیر، سورس‌های اسمبلی و آبجکت‌هایی برای پیوند (Link) در باینری نهایی تلقی می‌گردند.

فهرست فایل‌های واجد شرایط ممکن است بر اساس تگ‌های ساخت فیلتر شود (بخش تگ‌های ساخت (BUILD TAGS) در ادامه را ببینید). قالب نام فایل به‌صورت name[tagset].ext است، که در آن name توسط کاربر تعریف می‌شود، ext یکی از مقادیر ha، s یا o است و مجموعه تگ‌ها (tagset؛ بخش تگ‌های ساخت (BUILD TAGS) را ببینید) به‌صورت اختیاری پس از نام آورده می‌شود. یک فایل تنها در صورتی گنجانده خواهد شد که تمام تگ‌های دارای علامت + در مجموعه تگ‌ها موجود باشند و هیچ‌یک از تگ‌های دارای علامت - در مجموعه تگ‌ها موجود نباشند.

برای هر ترکیب مشخص از name و ext تنها یک فایل برای ساخت انتخاب خواهد شد؛ فایل انتخاب‌شده فایلی است که بیشترین شناسه تگ (Tag Specifiers) را داشته باشد. اگر دو یا چند فایل با این مشخصات وجود داشته باشند، درایور ساخت (Build Driver) با خطا متوقف خواهد شد.

به‌عنوان مثال، اگر فایل‌های زیر در یک دایرکتوری موجود باشند:

  • foo.ha
  • bar.ha
  • bar+linux.ha
  • bar+plan9.ha
  • baz+x86_64.s
  • bat-x86_64.ha

اگر تگ‌های ساخت +linux+x86_64 باشند، فایل‌هایی که در ماژول گنجانده می‌شوند عبارتند از foo.ha، bar+linux.ha و baz+x86_64.s. حال اگر فایل‌های زیر افزوده شوند:

  • meep+linux-libc.ha
  • meep+linux+x86_64.ha

درایور ساخت با خطا متوقف خواهد شد، مگر اینکه +libc به تگ‌های ساخت اضافه گردد.

علاوه بر این، زیردایرکتوری‌ها در یک ماژول در صورتی بخشی از آن ماژول در نظر گرفته می‌شوند که نام آن‌ها فقط از یک مجموعه تگ تشکیل شده باشد، مانند "+linux" یا "-x86_64". دایرکتوری‌ای که فقط دارای نام باشد (بدون مجموعه تگ، مانند "example") یک زیرماژول (Submodule) تلقی شده و بنابراین باید به‌صورت جداگانه ایمپورت شود. برای نمونه، "foo::bar" به مسیر foo/bar/ اشاره دارد. اگر نام دایرکتوری هم شامل نام و هم شامل یک مجموعه تگ باشد، درایور ساخت با خطا متوقف خواهد شد.

دستورات «use» در هر فایل منبع هیر که به‌عنوان ورودی به hare-build(1)، hare-run(1) یا hare-test(1) داده می‌شوند، اسکن شده و برای تعیین وابستگی‌های یک برنامه به کار می‌روند. این فرآیند برای هر وابستگی تکرار می‌شود تا درخت کامل وابستگی‌ها به دست آید.

وابستگی‌ها ابتدا با بررسی دایرکتوری کاری فعلی و سپس با بررسی هر یک از بخش‌های HAREPATH که فهرستی از مسیرهای جداشده با دونقطه (:) است، جستجو می‌شوند. HAREPATH از متغیر محیطی با همین نام دریافت می‌گردد. اگر این متغیر محیطی تنظیم نشده باشد، یک مقدار پیش‌فرض استفاده می‌شود که با اجرای دستور hare version -v قابل مشاهده است. به‌طور معمول، این مسیر طوری تنظیم می‌شود که شامل مسیر کتابخانه استاندارد نصب‌شده روی سیستم و همچنین مکانی ارائه‌شده توسط سیستم برای ماژول‌های شخص ثالث (نصب‌شده از طریق مدیر بسته‌ی سیستم) باشد.

دستور hare-deps(1) می‌تواند برای چاپ درخت وابستگی‌های یک ماژول هیر استفاده شود.

تگ‌های ساخت به شما امکان می‌دهند تا محدودیت‌هایی بر ویژگی‌ها یا پلتفرم‌های فعال در ساخت اعمال کنید. یک تگ عبارت است از یک نام تشکیل‌شده از نویسه‌هایی به‌جز '+'، '-' یا '.'، به همراه پیشوند '+' یا '-' برای مشخص کردن شمول یا انحصار (عدم شمول).

برای افزودن یا حذف تگ‌های ساخت، از فلگ -T استفاده کنید. برای مثال، -T +foo-bar تگ 'foo' را افزوده و تگ 'bar' را حذف می‌کند.

برخی از تگ‌ها به‌طور پیش‌فرض فعال هستند و قابلیت‌های پلتفرم میزبان را فعال می‌کنند. می‌توانید مجموعه تگ‌های پیش‌فرض را با اجرای دستور hare version -v مشاهده کنید. برای حذف تمام تگ‌های پیش‌فرض، از -T^ استفاده کنید.

hare(1), hare-build(1), hare-run(1), hare-test(1)

2026-06-01