| FLATPAK-BUILDER(1) | flatpak builder | FLATPAK-BUILDER(1) |
نام (NAME)
flatpak-builder - کمک به ساخت وابستگیهای برنامه
خلاصه دستور (SYNOPSIS)
flatpak-builder [OPTION...] DIRECTORY MANIFEST
flatpak-builder --run [OPTION...] DIRECTORY MANIFEST COMMAND
flatpak-builder --show-deps [OPTION...] MANIFEST
flatpak-builder --show-manifest [OPTION...] MANIFEST
توضیحات (DESCRIPTION)
دستور flatpak-builder پوستهای (wrapper) بر روی دستور flatpak build است که فرآیند ساخت برنامهها و وابستگیهای آنها را خودکار میکند. این یکی از گزینههایی است که میتوانید برای ساخت برنامهها به کار ببرید.
هدف flatpak-builder این است که تا جای ممکن دانش مربوط به نحوهٔ ساخت پودمانها (modules) را به خود پروژههای بالادستی منتقل کند. این کار با فرض اینکه پودمانها از Build API مشخصشده در https://github.com/cgwalters/build-api پیروی میکنند انجام میشود. این اساساً بدان معناست که از الگوی ./configure && make && make install با یک اسکریپت اختیاری autogen پیروی میکند. اگر پروژهٔ بالادستی از این API پیروی نمیکند، میتوانید با افزودن وصلهها (patches) و فایلهای اضافی آن را سازگار کنید.
اجرای flatpak-builder در مراحل زیر پیش میرود که هر یک با جزئیات در قالب json در MANIFEST مشخص شده است:
پس از این، ساخت برنامه را در DIRECTORY خواهید داشت که میتوانید آن را با دستور flatpak build-export به یک مخزن صادر (export) کنید. اگر از گزینهٔ --repo استفاده کنید، flatpak-builder در پایان فرآیند ساخت، عمل خروجی گرفتن را برای شما انجام میدهد. هنگامی که flatpak-builder خروجی میگیرد، مانیفست مورد استفاده برای ساخت را نیز در /app/manifest.json ذخیره میکند. این مانیفست بهاصطلاح «حلشده» (resolved) است؛ یعنی نام شاخههای git با شناسههای کامیت واقعی استفادهشده در ساخت جایگزین میشوند.
در هر یک از مراحل بالا، flatpak نتیجه را در حافظهٔ موقت (cache) ذخیره میکند و اگر همان فایل را دوباره بسازید، از نخستین مرحلهای که چیزی در آن تغییر کرده آغاز به کار خواهد کرد. برای نمونه، نخستین منبع تحت کنترل نسخهای که کامیتهای جدیدی به آن افزوده شده، یا نخستین پودمانی که تغییراتی در فایل MANIFEST آن موجب دگرگونی محیط ساخت شده است. این امر flatpak-builder را برای ساختهای افزایشی (incremental builds) بسیار کارآمد میسازد.
هنگام ساخت یک فلتپک برای انتشار در اینترنت، گزینهٔ --collection-id=COLLECTION-ID باید بهصورت یک مقدار DNS معکوس و یکتا در سطح جهانی مشخص شود تا مجموعهٔ فلتپکهایی که این برنامه به آن افزوده میشود شناسایی گردد. تنظیم یک شناسهٔ مجموعهٔ یکتا در سطح جهانی، امکان به اشتراکگذاری برنامههای موجود در مخزن را از طریق سیستمهای همتابههمتا (peer-to-peer) بدون نیاز به پیکربندی بیشتر فراهم میکند.
مانیفست (MANIFEST)
فایل مانیفست یک فایل json یا yaml است که قالب آن با جزئیات در صفحهٔ راهنمای اختصاصی خودش شرح داده شده است.
گزینهها (OPTIONS)
گزینههای زیر پشتیبانی میشوند:
-h, --help
-v, --verbose
--version
--arch=ARCH
--default-branch=BRANCH
--disable-cache
--disable-rofiles-fuse
--disable-download
--disable-updates
--disable-tests
--run
تنها گزینههای --arch=ARCH، --ccache، --verbose و --state-dirPATH (از نسخهٔ 1.4.8 به بعد) را میتوان با این گزینه ترکیب کرد.
--build-shell=MODULENAME
--show-deps
تنها گزینهٔ --verbose را میتوان با این گزینه ترکیب کرد.
--show-manifest
تنها گزینهٔ --verbose را میتوان با این گزینه ترکیب کرد.
--download-only
--bundle-sources
--build-only
--finish-only
--export-only
--require-changes
--state-dir=PATH
--keep-build-dirs
--delete-build-dirs
--ccache
--stop-at=MODULENAME
--repo=DIR
-s, --subject=SUBJECT
-b, --body=BODY
--collection-id=COLLECTION-ID
--token-type=VAL
--gpg-sign=KEYID
--gpg-homedir=PATH
--jobs=JOBS
--force-clean
--sandbox
--allow-missing-runtimes
--rebuild-on-sdk-change
--skip-if-unchanged
--mirror-screenshots-url=URL
--extra-sources=SOURCE-DIR
مقدار converted-uri از روی path یا url (در مورد git) و از روی url (در مورد bzr و svn) ساخته میشود. :// به یک زیرخط (_) تبدیل شده و هر / دیگری نیز با یک زیرخط جایگزین میشود. برای نمونه، https://github.com/user/repo.git تبدیل به https_github.com_user_repo.git میشود. در مورد منابع svn اگر revision موجود باشد، نام پوشه svn/<converted-uri>__r<revision>/ خواهد بود. در مورد منابع git، باید یک کلون آینهشده (mirrored clone) باشد.
--extra-sources-url=URL
--from-git=GIT
--from-git-branch=BRANCH
--no-shallow-clone
--override-source-date-epoch
--compose-url-policy=POLICY
--add-tag=TAG
--remove-tag=TAG
--install-deps-from=REMOTE
--install-deps-only
--install
--user
--system
--installation=NAME
حافظهٔ موقت (CACHING)
دستور flatpak-builder منابع و نتایج جزئی ساخت را در دایرکتوری وضعیت (که بهطور پیشفرض زیردایرکتوری .flatpak-builder در دایرکتوری جاری است) ذخیره میکند. اگر از --keep-build-dirs استفاده کنید، دایرکتوریهای ساخت هر پودمان نیز در اینجا ذخیره میشوند.
حذف دایرکتوری وضعیت بیخطر است. این کار موجب میشود که در ساخت بعدی، یک ساخت کامل (full build) انجام شود.
مثالها (EXAMPLES)
$ 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",
"cleanup": [ "/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"
}
]
}
]
}
همچنین ببینید (SEE ALSO)
flatpak(1), flatpak-manifest(5), flatpak-build-init(1), flatpak-build(1), flatpak-build-finish(1), flatpak-build-export(1)
| flatpak |