FLATPAK MANIFEST(5) راهنمای فلت‌پک FLATPAK MANIFEST(5)

flatpak-manifest - اطلاعات و ساختار لازم برای ساخت یک برنامه فلت‌پک

فلت‌پک (Flatpak) از فایل‌های مانیفست (manifest) یا دستورالعمل ساخت (recipe) در قالب json یا yaml برای توصیف نحوه ساخت یک برنامه و وابستگی‌های بسته‌بندی‌شده آن از روی کدهای منبع استفاده می‌کند. مانیفست توسط ابزار flatpak-builder استفاده می‌شود.

سطح بالای فایل مانیفست، ویژگی‌های سراسری برنامه، نحوه ساخت آن و فهرست ماژول‌هایی را که باید ساخته شوند توصیف می‌کند.

این‌ها ویژگی‌هایی هستند که پذیرفته می‌شوند:

id یا app-id (رشته)

رشته‌ای که شناسه برنامه (application id) را تعریف می‌کند.

توجه داشته باشید که «app-id» منسوخ شده و فقط برای سازگاری با نسخه‌های پیشین حفظ شده است.

branch (رشته)

شاخه‌ای که هنگام خروجی گرفتن (export) از برنامه استفاده می‌شود. اگر این گزینه تنظیم نشود، مقدار پیش‌فرض از گزینه default-branch گرفته می‌شود.

این کلید هم کلید default-branch و هم گزینه خط فرمان --default-branch را رونویسی (override) می‌کند. مگر در مواردی که به نام شاخه بسیار خاصی نیاز دارید (مانند یک ران‌تایم یا یک افزونه)، توصیه می‌شود به جای آن از کلید default-branch استفاده کنید، زیرا این کلید را می‌توان با گزینه --default-branch رونویسی کرد.

default-branch (رشته)

شاخه پیش‌فرضی که هنگام خروجی گرفتن از برنامه استفاده می‌شود. مقدار پیش‌فرض master است.

این کلید می‌تواند با گزینه خط فرمان --default-branch رونویسی شود.

collection-id (رشته)

شناسه مجموعه (collection ID) مخزن؛ به طور پیش‌فرض تنظیم نشده است. تنظیم یک شناسه مجموعه یکتا در سطح جهانی امکان به اشتراک‌گذاری برنامه‌های موجود در مخزن را از طریق سیستم‌های همتا به همتا (P2P) بدون نیاز به پیکربندی بیشتر فراهم می‌کند. در صورت ساخت در یک مخزن موجود، شناسه مجموعه باید با شناسه مجموعه پیکربندی‌شده موجود برای آن مخزن مطابقت داشته باشد.

extension-tag (رشته)

اگر در حال ساخت یک افزونه هستید، برچسب مربوط به نقطه اتصال افزونه (extension point) برای استفاده. از نسخه ۰.۱۱.۴ فلت‌پک به بعد، یک ران‌تایم ممکن است چندین مکان را برای یک نقطه اتصال افزونه با این هدف تعریف کند که شاخه‌های مختلف افزونه در هر مکان سوار (mount) شوند. هنگام ساخت یک افزونه، دانستن اینکه افزونه باید در کدام نقطه اتصال نصب شود ضروری است. این گزینه هرگونه ابهام در انتخاب نقطه افزونه را برطرف می‌کند. در صورت عدم تعیین، انتخاب پیش‌فرض نصب در تنها مکان مربوط به آن نقطه افزونه یا در مکان نقطه افزونه بدون برچسب است. اگر چندین مکان برای یک نقطه افزونه با برچسب‌های متفاوت تعریف شده باشد، خطا رخ خواهد داد.

token-type (عدد صحیح)

نوع توکن مورد نیاز برای نصب این کامیت. تنظیم این مقدار به عددی بزرگتر از ۰ به این معناست که برای نصب این فلت‌پک به احراز هویت نیاز خواهد بود.

runtime (رشته)

نام ران‌تایمی (runtime) که برنامه استفاده می‌کند.

runtime-version (رشته)

نسخه ران‌تایمی که برنامه استفاده می‌کند؛ مقدار پیش‌فرض master است.

sdk (رشته)

نام ران‌تایم توسعه (SDK) که برنامه با آن ساخته می‌شود.

var (رشته)

مقداردهی اولیه شاخه قابل نوشتن /var (که در حالت عادی خالی است) در فرآیند ساخت با رونوشتی از این ران‌تایم.

metadata (رشته)

استفاده از این فایل به عنوان فایل فراداده پایه هنگام نهایی‌سازی (finishing).

command (رشته)

نام فایل یا مسیر باینری اصلی برنامه. توجه داشته باشید که این باید یک فایل اجرایی واحد باشد، نه یک خط فرمان یا مسیر مطلق. اگر می‌خواهید آرگومان‌هایی را ارسال کنید، یک اسکریپت پوسته واسط (wrapper) نصب کرده و از آن به عنوان دستور استفاده کنید.

همچنین توجه داشته باشید که این دستور زمانی استفاده می‌شود که برنامه از طریق flatpak run اجرا شود، و بر آنچه هنگام اجرای برنامه به روش‌های دیگر، مثلاً از طریق فایل دسکتاپ یا فعال‌سازی D-Bus اجرا می‌شود، تاثیری ندارد.

build-runtime (بولی)

ساخت یک ران‌تایم جدید به جای یک برنامه کاربردی.

build-extension (بولی)

ساخت یک افزونه (extension).

separate-locales (بولی)

تفکیک فایل‌های محلی (locale) و ترجمه‌ها به یک ران‌تایم افزونه مجزا. مقدار پیش‌فرض true است.

id-platform (رشته)

هنگام ساخت یک SDK ران‌تایم، همچنین یک پلتفرم بر پایه آن با این شناسه ایجاد شود.

metadata-platform (رشته)

فایل فراداده‌ای که برای پلتفرم ایجاد شده استفاده می‌شود.

writable-sdk (بولی)

اگر true باشد، از یک نسخه قابل نوشتن از SDK برای مسیر /usr استفاده می‌شود. در صورت تعیین build-runtime، مقدار پیش‌فرض true خواهد بود.

appstream-compose (بولی)

اجرای دستور appstreamcli compose در طول مرحله پاک‌سازی (cleanup). مقدار پیش‌فرض true است.

sdk-extensions (آرایه‌ای از رشته‌ها)

نصب این افزونه‌های اضافی SDK در مسیر /usr.

platform-extensions (آرایه‌ای از رشته‌ها)

نصب این افزونه‌های اضافی SDK هنگام ایجاد پلتفرم.

base (رشته)

شروع ساخت با فایل‌های برنامه مشخص‌شده. این گزینه می‌تواند برای ایجاد برنامه‌هایی استفاده شود که برنامه دیگری را گسترش می‌دهند.

base-version (رشته)

استفاده از این نسخه خاص از برنامه مشخص‌شده در base. در صورت عدم تعیین، از مقدار مشخص‌شده در branch استفاده می‌شود.

base-extensions (آرایه‌ای از رشته‌ها)

نصب این افزونه‌های اضافی از برنامه پایه هنگام مقداردهی اولیه پوشه برنامه.

inherit-extensions (آرایه‌ای از رشته‌ها)

به ارث بردن این نقاط اتصال افزونه اضافی از برنامه پایه یا SDK هنگام نهایی‌سازی ساخت.

inherit-sdk-extensions (آرایه‌ای از رشته‌ها)

به ارث بردن این نقاط اتصال افزونه اضافی از برنامه پایه یا SDK هنگام نهایی‌سازی ساخت، بدون به ارث بردن آن‌ها در پلتفرم.

tags (آرایه‌ای از رشته‌ها)

افزودن این برچسب‌ها به فایل فراداده.

build-options (شیء)

شیئی که محیط ساخت را مشخص می‌کند. برای جزئیات به بخش‌های زیر مراجعه کنید.

modules (آرایه‌ای از اشیاء یا رشته‌ها)

آرایه‌ای از اشیاء که ماژول‌های ساخته‌شونده را به ترتیب مشخص می‌کنند. اعضای رشته‌ای در آرایه به عنوان نام یک فایل json یا yaml مجزا تفسیر می‌شوند که حاوی یک ماژول است. برای جزئیات به بخش‌های زیر مراجعه کنید.

add-extensions (اشیاء)

فرهنگ‌لغتی از اشیاء افزونه. کلید، نام افزونه است. برای جزئیات به بخش‌های زیر مراجعه کنید.

add-build-extensions (اشیاء)

فرهنگ‌لغتی از اشیاء افزونه مشابه add-extensions. تفاوت اصلی در این است که افزونه‌ها زودتر اضافه می‌شوند و در طول فرآیند ساخت در دسترس هستند.

cleanup (آرایه‌ای از رشته‌ها)

آرایه‌ای از الگوهای فایل که باید در پایان حذف شوند. الگوهایی که با / شروع می‌شوند به عنوان نام مسیرهای کامل (بدون پیشوند /app) در نظر گرفته می‌شوند، در غیر این صورت فقط با نام پایه (basename) تطبیق داده می‌شوند.

cleanup-commands (آرایه‌ای از رشته‌ها)

آرایه‌ای از خطوط فرمان که در طول مرحله پاک‌سازی اجرا می‌شوند.

cleanup-platform (آرایه‌ای از رشته‌ها)

فایل‌های اضافی برای پاک‌سازی در پلتفرم.

cleanup-platform-commands (آرایه‌ای از رشته‌ها)

آرایه‌ای از خطوط فرمان که در طول مرحله پاک‌سازی پلتفرم اجرا می‌شوند.

prepare-platform-commands (آرایه‌ای از رشته‌ها)

آرایه‌ای از خطوط فرمان که پس از وارد کردن پلتفرم پایه اما قبل از اعمال فایل‌های جدید از SDK اجرا می‌شوند. این مکان مناسبی برای مثال برای حذف مواردی از پایه است که ممکن است با فایل‌های اضافه‌شده در SDK تداخل داشته باشند.

finish-args (آرایه‌ای از رشته‌ها)

آرایه‌ای از آرگومان‌ها که به دستور flatpak build-finish ارسال می‌شوند.

rename-desktop-file (رشته)

هر فایل دسکتاپ با این نام در طول مرحله پاک‌سازی به نامی بر اساس شناسه (id) تغییر نام خواهد یافت. بخش launchable فایل appdata نیز در صورت نیاز به‌روزرسانی می‌شود.

rename-appdata-file (رشته)

هر فایل appdata (metainfo) با این نام در طول مرحله پاک‌سازی به نامی بر اساس شناسه تغییر نام خواهد یافت. شناسه موجود در فایل و provides متعاقب آن در صورت نیاز به‌روزرسانی خواهد شد. (از نسخه ۱.۴.۱)

rename-mime-file (رشته)

هر فایل mimetypes با این نام در طول مرحله پاک‌سازی به نامی بر اساس شناسه تغییر نام خواهد یافت. (از نسخه ۱.۴.۰)

rename-icon (رشته)

هر آیکون با این نام در طول مرحله پاک‌سازی به نامی بر اساس شناسه تغییر نام خواهد یافت. توجه داشته باشید که این نام آیکون است نه نام کامل فایل، بنابراین نباید شامل پسوند فایل باشد.

rename-mime-icons (آرایه‌ای از رشته‌ها)

هر آیکون mime با هر یک از این نام‌ها در طول مرحله پاک‌سازی به نامی با پیشوند شناسه تغییر نام خواهد یافت. توجه داشته باشید که این‌ها نام‌های آیکون هستند نه نام‌های کامل فایل، بنابراین نباید شامل پسوند فایل باشند. (از نسخه ۱.۴.۰)

appdata-license (رشته)

جایگزینی فیلد project_license در appdata (metainfo) با این رشته. این گزینه مفید است زیرا مجوز بالادستی معمولاً فقط مربوط به خود برنامه است، در حالی که برنامه بسته‌بندی‌شده می‌تواند شامل مجوزهای دیگر نیز باشد.

copy-icon (بولی)

اگر rename-icon تنظیم شده باشد، یک رونوشت از فایل آیکون قدیمی نگه داشته می‌شود.

desktop-file-name-prefix (رشته)

این رشته به عنوان پیشوند به کلید Name در فایل دسکتاپ اصلی برنامه اضافه می‌شود.

desktop-file-name-suffix (رشته)

این رشته به عنوان پسوند به کلید Name در فایل دسکتاپ اصلی برنامه اضافه می‌شود.

گزینه‌های ساخت، محیط ساخت یک ماژول را مشخص می‌کنند و می‌توانند هم به صورت سراسری و هم به ازای هر ماژول تعریف شوند. همچنین می‌توان گزینه‌ها را با استفاده از ویژگی arch به ازای هر معماری سخت‌افزاری تعیین کرد.

این‌ها ویژگی‌هایی هستند که پذیرفته می‌شوند:

cflags (رشته)

این مقدار در طول ساخت در متغیر محیطی CFLAGS تنظیم می‌شود. تعریف‌های متعدد از این گزینه (برای نمونه در بخش مربوط به هر معماری) با فاصله به یکدیگر متصل می‌شوند.

cflags-override (بولی)

اگر true باشد، قبل از افزودن مقادیر از این گزینه‌ها، مقادیر cflags از گزینه‌های ساخت قبلی پاک می‌شوند.

cppflags (رشته)

این مقدار در طول ساخت در متغیر محیطی CPPFLAGS تنظیم می‌شود. تعریف‌های متعدد از این گزینه (برای نمونه در بخش مربوط به هر معماری) با فاصله به یکدیگر متصل می‌شوند.

cppflags-override (بولی)

اگر true باشد، قبل از افزودن مقادیر از این گزینه‌ها، مقادیر cppflags از گزینه‌های ساخت قبلی پاک می‌شوند.

cxxflags (رشته)

این مقدار در طول ساخت در متغیر محیطی CXXFLAGS تنظیم می‌شود. تعریف‌های متعدد از این گزینه (برای نمونه در بخش مربوط به هر معماری) با فاصله به یکدیگر متصل می‌شوند.

cxxflags-override (بولی)

اگر true باشد، قبل از افزودن مقادیر از این گزینه‌ها، مقادیر cxxflags از گزینه‌های ساخت قبلی پاک می‌شوند.

ldflags (رشته)

این مقدار در طول ساخت در متغیر محیطی LDFLAGS تنظیم می‌شود. تعریف‌های متعدد از این گزینه (برای نمونه در بخش مربوط به هر معماری) با فاصله به یکدیگر متصل می‌شوند.

ldflags-override (بولی)

اگر true باشد، قبل از افزودن مقادیر از این گزینه‌ها، مقادیر ldflags از گزینه‌های ساخت قبلی پاک می‌شوند.

prefix (رشته)

پیشوند مسیر ساخت برای ماژول‌ها (به طور پیش‌فرض برای برنامه‌ها /app و برای ران‌تایم‌ها /usr است).

libdir (رشته)

پوشه کتابخانه‌ها (libdir) برای ماژول‌ها در هنگام ساخت (به طور پیش‌فرض برای برنامه‌ها /app/lib و برای ران‌تایم‌ها /usr/lib است).

append-path (رشته)

این مقدار در محیط ساخت به متغیر PATH الحاق می‌شود (در صورت نیاز با یک دو‌نقطه ابتدایی).

prepend-path (رشته)

این مقدار در محیط ساخت به ابتدای متغیر PATH اضافه می‌شود (در صورت نیاز با یک دو‌نقطه پایانی).

append-ld-library-path (رشته)

این مقدار در محیط ساخت به متغیر LD_LIBRARY_PATH الحاق می‌شود (در صورت نیاز با یک دو‌نقطه ابتدایی).

prepend-ld-library-path (رشته)

این مقدار در محیط ساخت به ابتدای متغیر LD_LIBRARY_PATH اضافه می‌شود (در صورت نیاز با یک دو‌نقطه پایانی).

append-pkg-config-path (رشته)

این مقدار در محیط ساخت به متغیر PKG_CONFIG_PATH الحاق می‌شود (در صورت نیاز با یک دو‌نقطه ابتدایی).

prepend-pkg-config-path (رشته)

این مقدار در محیط ساخت به ابتدای متغیر PKG_CONFIG_PATH اضافه می‌شود (در صورت نیاز با یک دو‌نقطه پایانی).

env (شیء)

فرهنگ‌لغتی که متغیرهای محیطی قابل تنظیم در طول ساخت را تعریف می‌کند. عناصر موجود در این بخش بر ویژگی‌هایی که محیط را تنظیم می‌کنند (مانند cflags و ldflags) اولویت دارند. کلیدهایی با مقدار تهی (null) متغیر مربوطه را حذف می‌کنند.

secret-env (آرایه‌ای از رشته‌ها)

آرایه‌ای که مشخص می‌کند کدام متغیرهای محیطی سیستم میزبان به محیط build-commands یا post-install منتقل شوند.

build-args (آرایه‌ای از رشته‌ها)

آرایه‌ای شامل گزینه‌های اضافی برای ارسال به flatpak build.

test-args (آرایه‌ای از رشته‌ها)

مشابه build-args اما روی آزمون‌ها اثر می‌گذارد، نه ساخت عادی.

config-opts (آرایه‌ای از رشته‌ها)

آرایه‌ای شامل گزینه‌های اضافی ارسال‌شده به سیستم ساخت در طول پیکربندی.

secret-opts (آرایه‌ای از رشته‌ها)

آرایه‌ای از گزینه‌ها که به اسکریپت پیکربندی (configure) ارسال می‌شوند. این گزینه برای انتقال اطلاعات محرمانه از طریق متغیرهای محیطی میزبان در نظر گرفته شده است. متغیرهای محیطی موجود در گزینه‌ها بسط داده می‌شوند: '-DSECRET_ID=$CI_SECRET'

make-args (آرایه‌ای از رشته‌ها)

آرایه‌ای از آرگومان‌های اضافی که به دستور make ارسال خواهند شد.

make-install-args (آرایه‌ای از رشته‌ها)

آرایه‌ای از آرگومان‌های اضافی که به دستور make install ارسال خواهند شد.

strip (بولی)

اگر این مقدار true باشد (پیش‌فرض false است)، نمادهای اشکال‌زدایی از تمام فایل‌های ELF پس از نصب حذف می‌شوند (strip).

no-debuginfo (بولی)

به طور پیش‌فرض (اگر strip برابر با true نباشد)، ابزار flatpak-builder تمام اطلاعات اشکال‌زدایی در فایل‌های ELF را به فایل‌های مجزا استخراج کرده و آن‌ها را در یک افزونه قرار می‌دهد. اگر می‌خواهید این ویژگی را غیرفعال کنید، no-debuginfo را روی true تنظیم نمایید.

no-debuginfo-compression (بولی)

به طور پیش‌فرض هنگام استخراج debuginfo، بخش‌های اشکال‌زدایی فشرده‌سازی می‌شوند. اگر می‌خواهید این فشرده‌سازی را غیرفعال کنید، no-debuginfo-compression را روی true تنظیم کنید.

arch (شیء)

فرهنگ‌لغتی که یک شیء گزینه‌های ساخت مجزا را برای هر معماری تعریف می‌کند تا گزینه‌های اصلی ساخت را رونویسی نماید.

نقاط اتصال افزونه را در برنامه یا ران‌تایم تعریف می‌کند که می‌توانند توسط افزونه‌ها پیاده‌سازی شوند و فایل‌های اضافی را که در زمان اجرا در دسترس هستند ارائه دهند.

این‌ها ویژگی‌هایی هستند که پذیرفته می‌شوند:

directory (رشته)

پوشه‌ای که افزونه در آن سوار (mount) می‌شود. اگر نقطه افزونه برای یک برنامه کاربردی باشد، این مسیر نسبت به /app سنجیده می‌شود، در غیر این صورت نسبت به /usr خواهد بود.

bundle (بولی)

اگر true باشد، داده‌های ایجادشده در پوشه افزونه از نتیجه نهایی حذف شده و در عوض در یک افزونه جداگانه بسته‌بندی می‌شوند.

remove-after-build (بولی)

اگر true باشد، افزونه هنگام نهایی‌سازی حذف می‌شود. این ویژگی فقط برای افزونه‌های موجود در ویژگی add-build-extensions کاربرد دارد.

علاوه بر این، ویژگی‌های استاندارد افزونه فلت‌پک پشتیبانی شده و مستقیماً در فایل فراداده قرار می‌گیرند: autodelete, no-autodownload, subdirectories, add-ld-path, download-if, enable-if, autoprune-unless, merge-dirs, subdirectory-suffix, locale-subset, version, versions. برای اطلاعات بیشتر در مورد این موارد، به مستندات فراداده فلت‌پک مراجعه کنید.

هر ماژول یک منبع (source) را مشخص می‌کند که باید به طور جداگانه ساخته و نصب شود. ماژول شامل گزینه‌های ساخت و فهرستی از منابع است که قبل از ساخت باید دانلود و استخراج شوند.

ماژول‌ها می‌توانند به صورت تودرتو باشند تا بتوان ماژول‌های مرتبط را با یک کلید واحد روشن و خاموش کرد. حوزه‌های ماژول همیشه ایزوله هستند، بنابراین ماژول‌های تودرتو ویژگی‌ها را از ماژول‌های والد به ارث نمی‌برند.

این‌ها ویژگی‌هایی هستند که پذیرفته می‌شوند:

name (رشته)

نام ماژول، که برای نمونه در گزارش‌های ساخت استفاده می‌شود. این نام همچنین برای ساختن نام فایل‌ها و آرگومان‌های خط فرمان استفاده می‌شود، بنابراین استفاده از فاصله‌ها یا '/' در این رشته ایده نامناسبی است.

disabled (بولی)

اگر true باشد، این ماژول نادیده گرفته می‌شود.

sources (آرایه‌ای از اشیاء یا رشته‌ها)

آرایه‌ای از اشیاء که منابعی را تعریف می‌کنند که باید به ترتیب دانلود و استخراج شوند. اعضای رشته‌ای در آرایه به عنوان نام یک فایل json یا yaml مجزا تفسیر می‌شوند که حاوی منابع است. برای جزئیات به بخش‌های زیر مراجعه کنید.

secret-env (آرایه‌ای از رشته‌ها)

آرایه‌ای که مشخص می‌کند کدام متغیرهای محیطی سیستم میزبان به محیط build-commands یا post-install منتقل شوند.

config-opts (آرایه‌ای از رشته‌ها)

آرایه‌ای از گزینه‌ها که به اسکریپت پیکربندی (configure) ارسال خواهند شد.

secret-opts (آرایه‌ای از رشته‌ها)

آرایه‌ای از گزینه‌ها که به configure ارسال می‌شوند و هدف از آن‌ها انتقال اطلاعات محرمانه از طریق متغیرهای محیطی میزبان است. گزینه را همراه با یک متغیر محیطی قرار دهید تا از قبل مقداردهی شود: '-DSECRET_ID=$CI_SECRET'

make-args (آرایه‌ای از رشته‌ها)

آرایه‌ای از آرگومان‌ها که به make ارسال خواهند شد.

make-install-args (آرایه‌ای از رشته‌ها)

آرایه‌ای از آرگومان‌ها که به make install ارسال خواهند شد.

rm-configure (بولی)

اگر true باشد، اسکریپت configure قبل از شروع ساخت حذف می‌شود. این امر مستلزم وجود اسکریپت configure در پوشه منبع است.

no-autogen (بولی)

نادیده گرفتن وجود اسکریپت autogen.

no-parallel-make (بولی)

عدم فراخوانی make با آرگومان‌های ساخت موازی.

install-rule (رشته)

نام قاعده‌ای که برای مرحله نصب به make ارسال می‌شود؛ پیش‌فرض install است.

no-make-install (بولی)

عدم اجرای مرحله make install (یا معادل آن).

no-python-timestamp-fix (بولی)

عدم اصلاح برچسب‌های زمانی سرایند *.py[oc] برای استفاده در ostree.

cmake (بولی)

استفاده از cmake به جای configure (منسوخ شده: به جای آن از buildsystem استفاده کنید).

buildsystem (رشته)

سیستم ساخت مورد استفاده: autotools, cmake, cmake-ninja, meson, simple, qmake

builddir (بولی)

استفاده از یک پوشه ساخت مجزا از پوشه منبع.

subdir (رشته)

ساخت درون این زیرپوشه از منابع استخراج‌شده.

build-options (شیء)

یک شیء گزینه‌های ساخت که می‌تواند گزینه‌های سراسری را رونویسی کند. توجه داشته باشید که این ویژگی توسط ماژول‌های تودرتو به ارث برده نمی‌شود.

build-commands (آرایه‌ای از رشته‌ها)

آرایه‌ای از دستورات برای اجرا در طول فرآیند ساخت (بین make و make install در صورت استفاده از آن‌ها). این گزینه عمدتاً هنگام استفاده از سیستم ساخت «simple» کاربرد دارد. هر دستور در محیط /bin/sh -c اجرا می‌شود، بنابراین می‌تواند از نحو استاندارد پوسته POSIX مانند هدایت لوله‌ای خروجی (piping) استفاده کند. اگر هر ورودی منفرد در آرایه با شکست مواجه شود، کل فرآیند ساخت با شکست روبرو خواهد شد، مشابه دستورات موجود در یک دستورالعمل make(1).

post-install (آرایه‌ای از رشته‌ها)

آرایه‌ای از دستورات پوسته که پس از مرحله نصب اجرا می‌شوند. برای مثال می‌تواند پوشه نصب را پاک‌سازی کرده یا فایل‌های اضافی را نصب کند.

cleanup (آرایه‌ای از رشته‌ها)

آرایه‌ای از الگوهای فایل که باید در پایان حذف شوند. الگوهایی که با / شروع می‌شوند به عنوان نام مسیرهای کامل (بدون پیشوند /app) در نظر گرفته می‌شوند، در غیر این صورت فقط با نام پایه تطبیق داده می‌شوند. توجه داشته باشید که هر الگو فقط با فایل‌های نصب‌شده توسط این ماژول تطبیق داده خواهد شد.

ensure-writable (آرایه‌ای از رشته‌ها)

روش کار سازنده به این صورت است که فایل‌های موجود در پوشه نصب، پیوندهای سخت (hard-links) به فایل‌های کش‌شده هستند، بنابراین مجاز به اصلاح آن‌ها درجا نیستید. اگر فایلی را در اینجا فهرست کنید، پیوند سخت شکسته شده و می‌توانید آن را اصلاح نمایید. این یک راهکار موقت است؛ در حالت ایده‌آل نصب فایل‌ها باید جایگزین فایل‌ها شود، نه اینکه فایل‌های موجود را اصلاح کند.

only-arches (آرایه‌ای از رشته‌ها)

در صورت غیرخالی بودن، ماژول فقط روی معماری‌های فهرست‌شده ساخته می‌شود.

skip-arches (آرایه‌ای از رشته‌ها)

عدم ساخت روی هر یک از معماری‌های فهرست‌شده.

cleanup-platform (آرایه‌ای از رشته‌ها)

فایل‌های اضافی برای پاک‌سازی در پلتفرم.

run-tests (بولی)

اگر true باشد، آزمون‌ها پس از نصب اجرا خواهند شد.

test-rule (رشته)

هدف (target) ساخته‌شونده هنگام اجرای آزمون‌ها. برای make پیش‌فرض «check» و برای ninja پیش‌فرض «test» است. برای غیرفعال کردن، آن را خالی بگذارید.

test-commands (آرایه‌ای از رشته‌ها)

آرایه‌ای از دستورات برای اجرا در طول آزمون‌ها.

license-files (آرایه‌ای از رشته‌ها)

آرایه‌ای از مسیرها به فایل‌های LICENSE ماژول.

modules (آرایه‌ای از اشیاء یا رشته‌ها)

آرایه‌ای از اشیاء که ماژول‌های تودرتو را برای ساخت قبل از این ماژول مشخص می‌کنند. اعضای رشته‌ای در آرایه به عنوان نام‌های یک فایل json یا yaml مجزا تفسیر می‌شوند که حاوی یک ماژول است.

این بخش‌ها شامل اشاره‌گری به منبعی هستند که قبل از شروع ساخت در پوشه منبع استخراج خواهد شد. آن‌ها می‌توانند از انواع مختلفی باشند که با ویژگی type متمایز می‌شوند.

علاوه بر این، فهرست منابع می‌تواند شامل یک رشته ساده باشد که به عنوان نام یک فایل json یا yaml مجزا تفسیر می‌شود که در این نقطه خوانده و درج می‌گردد. این فایل می‌تواند شامل یک منبع واحد یا آرایه‌ای از منابع باشد.

تمام منابع (All sources)

only-arches (آرایه‌ای از رشته‌ها)

در صورت غیرخالی بودن، ماژول فقط روی معماری‌های فهرست‌شده ساخته می‌شود.

skip-arches (آرایه‌ای از رشته‌ها)

عدم ساخت روی هر یک از معماری‌های فهرست‌شده.

dest (رشته)

پوشه‌ای در داخل پوشه منبع که این منبع در آن استخراج خواهد شد.

منابع آرشیو (Archive sources - tar, zip)

type

"archive"

path (رشته)

مسیر فایل آرشیو.

url (رشته)

نشانی اینترنتی (URL) یک آرشیو راه دور که دانلود خواهد شد. اگر هر دو مشخص شده باشند، این گزینه بر path اولویت دارد.

mirror-urls (آرایه‌ای از رشته‌ها)

فهرستی از نشانی‌های اینترنتی جایگزین که در صورت شکست نشانی اصلی استفاده می‌شوند.

referer (رشته)

تنظیم هدر «Referer» در پروتکل HTTP هنگام دانلود آرشیو.

disable-http-decompression (بولی)

غیرفعال کردن رفع فشرده‌سازی دانلودها روی HTTP برای سرورهایی با پیکربندی نادرست.

git-init (بولی)

آیا مخزن به عنوان یک مخزن گیت مقداردهی اولیه شود یا خیر.

archive-type (رشته)

نوع آرشیو در صورتی که نتوان آن را از روی مسیر حدس زد. مقادیر مجاز عبارتند از: "rpm", "tar", "tar-gzip", "tar-compress", "tar-bzip2", "tar-lzip", "tar-lzma", "tar-lzop", "tar-xz", "tar-zst", "zip" و "7z".

md5 (رشته)

چکسام md5 فایل، که پس از دانلود تایید می‌شود.

توجه داشته باشید که md5 دیگر یک چکسام امن تلقی نمی‌شود؛ توصیه می‌کنیم حداقل از sha256 استفاده کنید.

sha1 (رشته)

چکسام sha1 فایل، که پس از دانلود تایید می‌شود.

توجه داشته باشید که sha1 دیگر یک چکسام امن تلقی نمی‌شود؛ توصیه می‌کنیم حداقل از sha256 استفاده کنید.

sha256 (رشته)

چکسام sha256 فایل، که پس از دانلود تایید می‌شود.

sha512 (رشته)

چکسام sha512 فایل، که پس از دانلود تایید می‌شود.

strip-components (عدد صحیح)

تعداد بخش‌های اولیه مسیر برای حذف در هنگام استخراج. مقدار پیش‌فرض ۱ است.

dest-filename (رشته)

نام فایل برای فایل دانلودشده؛ پیش‌فرض همان نام پایه (basename) نشانی اینترنتی است.

منابع گیت (Git sources)

type

"git"

path (رشته)

مسیر به یک نسخه محلی از مخزن گیت. به دلیل نحوه عملکرد git-clone، این بسیار سریع‌تر از تعیین یک URL به صورت file:///... خواهد بود.

url (رشته)

نشانی اینترنتی مخزن گیت. اگر هر دو مشخص شده باشند، این گزینه بر path اولویت دارد. هنگام استفاده از گیت از طریق SSH، نحو صحیح ssh://user@domain/path/to/repo.git است.

branch (رشته)

شاخه‌ای که باید از مخزن گیت استفاده شود. از نسخه ۱.۲.۳ تلاش می‌شود تا شاخه پیش‌فرض بالادستی به طور خودکار شناسایی شود. پیش از این، پیش‌فرض master بود.

tag (رشته)

برچسبی (tag) که باید از مخزن گیت استفاده شود.

commit (رشته)

کامیتی که باید از مخزن گیت استفاده شود. اگر branch نیز مشخص شده باشد، بررسی می‌شود که آن شاخه/برچسب دقیقاً روی این کامیت مشخص باشد. این روشی خوانا برای مستندسازی استفاده از یک تگ خاص و در عین حال تایید تغییر نکردن آن است.

disable-fsckobjects (بولی)

عدم استفاده از transfer.fsckObjects=1 برای آینه‌کردن مخزن گیت. این ممکن است برای برخی مخازن (خراب) لازم باشد.

disable-shallow-clone (بولی)

عدم بهینه‌سازی با ایجاد یک کلون کم‌عمق (shallow clone) هنگام دانلود مخزن گیت.

disable-submodules (بولی)

عدم دریافت زیرماژول‌های گیت هنگام کلون کردن مخزن.

disable-lfs (بولی)

عدم دریافت یا چک‌اوت صریح اشیاء Git LFS. اگر فیلترهای LFS در gitconfig سراسری یا سیستمی فعال باشند، این گزینه توسط گیت نادیده گرفته خواهد شد.

منابع Bzr (Bzr sources)

type

"bzr"

url (رشته)

نشانی اینترنتی مخزن bzr.

revision (رشته)

یک بازنگری (revision) خاص برای استفاده در شاخه.

منابع Svn (Svn sources)

type

"svn"

url (رشته)

نشانی اینترنتی مخزن svn، شامل بخش شاخه/برچسب.

revision (رشته)

یک شماره بازنگری خاص برای استفاده.

منابع پوشه‌ای (Directory sources)

type

"dir"

path (رشته)

مسیر یک پوشه محلی که محتوای آن در پوشه منبع کپی خواهد شد. توجه داشته باشید که منابع پوشه‌ای در حال حاضر از ذخیره‌سازی کش پشتیبانی نمی‌کنند، بنابراین هر بار مجدداً ساخته خواهند شد.

skip (آرایه‌ای از رشته‌ها)

فایل‌های منبعی که باید در پوشه نادیده گرفته شوند.

منابع فایلی (File sources)

type

"file"

path (رشته)

مسیر یک فایل محلی که در پوشه منبع کپی خواهد شد.

url (رشته)

نشانی اینترنتی یک فایل راه دور که دانلود شده و در پوشه منبع کپی خواهد شد. اگر هر دو مشخص شده باشند، این گزینه بر path اولویت دارد.

mirror-urls (آرایه‌ای از رشته‌ها)

فهرستی از نشانی‌های اینترنتی جایگزین که در صورت شکست نشانی اصلی استفاده می‌شوند.

referer (رشته)

تنظیم هدر «Referer» در پروتکل HTTP هنگام دانلود فایل.

disable-http-decompression (بولی)

غیرفعال کردن رفع فشرده‌سازی دانلودها روی HTTP برای سرورهایی با پیکربندی نادرست.

md5 (رشته)

چکسام md5 فایل، که پس از دانلود تایید می‌شود. این گزینه برای فایل‌های محلی اختیاری است.

توجه داشته باشید که md5 دیگر یک چکسام امن تلقی نمی‌شود؛ توصیه می‌کنیم حداقل از sha256 استفاده کنید.

sha1 (رشته)

چکسام sha1 فایل، که پس از دانلود تایید می‌شود. این گزینه برای فایل‌های محلی اختیاری است.

توجه داشته باشید که sha1 دیگر یک چکسام امن تلقی نمی‌شود؛ توصیه می‌کنیم حداقل از sha256 استفاده کنید.

sha256 (رشته)

چکسام sha256 فایل، که پس از دانلود تایید می‌شود. این گزینه برای فایل‌های محلی اختیاری است.

sha512 (رشته)

چکسام sha512 فایل، که پس از دانلود تایید می‌شود. این گزینه برای فایل‌های محلی اختیاری است.

dest-filename (رشته)

نام فایل برای استفاده در داخل پوشه منبع؛ پیش‌فرض همان نام پایه path است.

منابع اسکریپت (Script sources)

روشی برای ایجاد یک اسکریپت پوسته (/bin/sh) از یک مجموعه دستورات درون‌برنامه‌ای.

type

"script"

commands (آرایه‌ای از رشته‌ها)

آرایه‌ای از دستورات پوسته که در یک فایل اسکریپت پوسته قرار خواهند گرفت.

dest-filename (رشته)

نام فایل برای استفاده در داخل پوشه منبع؛ پیش‌فرض autogen.sh است.

منابع داده درون‌خطی (Inline data sources)

روشی برای ایجاد یک فایل با محتویات مشخص‌شده.

type

"inline"

dest-filename (رشته)

نام فایل برای استفاده در داخل پوشه منبع.

contents (رشته)

داده‌های متنی که درون فایل قرار خواهند گرفت.

base64 (بولی)

آیا محتوا با قالب base64 کدگذاری شده است یا خیر.

منابع پوسته (Shell sources)

روشی برای ایجاد یا اصلاح منابع با اجرای دستورات پوسته.

type

"shell"

commands (آرایه‌ای از رشته‌ها)

آرایه‌ای از دستورات پوسته که در حین استخراج منبع اجرا خواهند شد.

منابع وصله (Patch sources)

type

"patch"

path (رشته)

مسیر یک فایل وصله (patch) که در پوشه منبع اعمال خواهد شد.

paths (آرایه‌ای از رشته‌ها)

فهرستی از مسیرها به فایل‌های وصله که به ترتیب در پوشه منبع اعمال خواهند شد.

strip-components (عدد صحیح)

مقدار آرگومان -p برای دستور patch؛ پیش‌فرض ۱ است.

use-git (بولی)

استفاده از «git apply» به جای «patch» برای اعمال وصله؛ هنگامی که فایل وصله حاوی تغییرات دودویی (binary diffs) است الزامی می‌باشد.

use-git-am (بولی)

استفاده از «git am» به جای «patch» برای اعمال وصله؛ هنگامی که فایل وصله حاوی تغییرات دودویی است الزامی می‌باشد. نمی‌توانید این گزینه را هم‌زمان با use-git استفاده کنید.

options (آرایه‌ای از رشته‌ها)

گزینه‌های اضافی برای ارسال به دستور patch.

منابع داده اضافی (Extra data sources)

type

"extra-data"

filename (رشته)

نام مورد استفاده برای داده‌های اضافی دانلودشده.

url (رشته)

نشانی اینترنتی داده‌های اضافی.

sha256 (رشته)

چکسام sha256 داده‌های اضافی.

size (عدد)

اندازه داده‌های اضافی بر حسب بایت.

installed-size (رشته)

اندازه نصب‌شده اضافی که این مورد به برنامه اضافه می‌کند (اختیاری).

هنگام ساخت برنامه، هر دستور در یک جعبه‌شنی (sandbox) مجزا با دسترسی تنها به مواردی که برای آن لازم است اجرا می‌شود. این بخش جزئیات جعبه‌شنی را توصیف می‌کند. هر گزینه‌ای در اینجا را می‌توان به صورت سراسری یا به ازای هر ماژول با گزینه build-args رونویسی کرد (هرچند اگر flatpak-builder را با --sandbox آغاز کنید، چنین مانیفستی کار نخواهد کرد).

هر ماژول در پوشه ساخت اختصاصی خود ساخته می‌شود که در زیرپوشه‌ای به نام build/$modulename-$count در پوشه وضعیت (که معمولاً .flatpak-builder/ است) ذخیره می‌گردد. علاوه بر این یک پیوند نمادین (symlink) به نام build/$modulename به آخرین نسخه وجود دارد. به منظور تولید ساخت‌های بازتولیدپذیر (reproducible builds)، این پوشه همچنین به صورت /run/build/$modulename در جعبه‌شنی (یا /run/build-runtime/$modulename هنگام ساخت ران‌تایم‌ها) و همچنین به صورت /run/active-build از نسخه ۱.۴.۷ به بعد سوار (mount) می‌شود. این مسیر به عنوان دایرکتوری کاری جاری برای تمام عملیات ساخت استفاده می‌شود.

پوشه مقصد برای نصب، در همان مکانی که در زمان اجرا دیده خواهد شد با دسترسی نوشتن قابل دسترسی است. در مورد یک برنامه معمولی این مسیر /app خواهد بود. اگر در حال ساخت یک ران‌تایم باشید در عوض /usr خواهد بود، و هنگام ساخت یک افزونه در پوشه نقطه افزونه در جایی زیر مسیر /app (برای افزونه‌های برنامه) یا /usr (برای افزونه‌های ران‌تایم) قرار خواهد داشت.

علاوه بر این (بر حسب نیاز و بسته به آنچه ساخته می‌شود)، پایه‌های فقط‌خواندنی از SDK در /usr، افزونه‌های SDK در زیر آن، و برنامه در /app وجود خواهند داشت. هیچ دسترسی دیگری به سیستم فایل در دسترس نیست.

محیط را می‌توان به روش‌های مختلفی در مانیفست تغییر داد، اما مقادیر پیش‌فرض عبارتند از:

FLATPAK_ID

شناسه برنامه‌ای که در حال حاضر در حال ساخت است.

FLATPAK_ARCH

معماری که در حال حاضر در حال ساخت است.

FLATPAK_DEST

مسیر به جایی که ساخت جاری باید در آن نصب شود. این مسیر برای ساخت برنامه‌ها /app است.

FLATPAK_BUILDER_N_JOBS

تعداد کارهایی که flatpak-builder معمولاً برای make -j استفاده می‌کند. پیش‌فرض برابر با ncpus است مگر اینکه ماژول ساخت موازی را غیرفعال کرده باشد.

FLATPAK_BUILDER_BUILDDIR

مسیر به پوشه ساخت ماژولی که در حال حاضر در حال ساخت است. این مسیر معمولاً /run/build/$MODULE است.

PATH

/app/bin:/usr/bin

LD_LIBRARY_PATH

/app/lib

PKG_CONFIG_PATH

/app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig

ACLOCAL_PATH

/app/share/aclocal

C_INCLUDE_PATH

/app/include

CPLUS_INCLUDE_PATH

/app/include

LDFLAGS

-L/app/lib

LC_ALL

en_US.utf8

عملیات ساخت دارای مجوزهای --allow=devel و --allow=multiarch هستند که اجراهای معمولی فلت‌پک به طور پیش‌فرض آن‌ها را ندارند. این امر فیلتر کردن فراخوانی‌های سیستمی (syscall filtering) را که معمولاً انجام می‌شود محدود می‌کند تا ابزارهای توسعه مانند دیباگرها کار کنند. در غیر این صورت، جعبه‌شنی ساخت بسیار محدود است؛ به عنوان مثال هیچ دسترسی به شبکه وجود ندارد.

$ flatpak-builder my-app-dir manifest.json

نمونه فایل مانیفست:

{
    "id": "org.test.TestApp",
    "runtime": "org.freedesktop.Platform",
    "runtime-version": "1.2",
    "sdk": "org.freedesktop.Sdk",
    "command": "test",
    "clean": [ "/include", "*.la" ],
    "build-options" : {
        "cflags": "-O2 -g",
        "cxxflags": "-O2 -g",
        "env": {
            "V": "1"
        },
        "arch": {
            "x86_64": {
                "cflags": "-O3 -g",
            }
        }
    },
    "modules": [
        {
            "name": "pygobject",
            "config-opts": [ "--disable-introspection" ],
            "sources": [
                {
                    "type": "archive",
                    "url": "http://ftp.gnome.org/pub/GNOME/sources/pygobject/2.28/pygobject-2.28.6.tar.xz",
                    "sha256": "fb8a1d4f665130a125011659bd347c7339c944232163dbb9a34fd0686577adb8"
                },
                {
                    "type": "patch",
                    "path": "required-pygobject-fix.patch"
                },
                {
                    "type": "file",
                    "path": "pygobject-extra-file",
                    "dest-filename": "extra-file"
                }
            ]
        },
        {
            "name": "babl",
            "build-options" : { "cxxflags": "-O2 -g -std=c++11" },
            "cleanup": [ "/bin" ],
            "sources": [
                {
                    "type": "git",
                    "url": "https://gitlab.gnome.org/GNOME/babl.git"
                }
            ]
        },
        {
            "name": "testapp",
            "sources": [
                {
                    "type": "bzr",
                    "url": "lp:testapp"
                }
            ]
        }
    ]
}

flatpak-builder(1)

flatpak