1"use strict";(self.webpackChunkpopdoc=self.webpackChunkpopdoc||[]).push([["838"],{7428(e,t,r){r.r(t),r.d(t,{metadata:()=>n,default:()=>p,frontMatter:()=>s,contentTitle:()=>d,toc:()=>l,assets:()=>o});var n=JSON.parse('{"id":"para/installation/sdk-layout","title":"SDK Directory Layout","description":"The standard Unix-style directory tree of the PARA SDK and the role of each top-level directory.","source":"@site/content/public/docs/para/installation/sdk-layout.md","sourceDirName":"para/installation","slug":"/para/installation/sdk-layout","permalink":"/docs/para/installation/sdk-layout","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":3,"frontMatter":{"title":"SDK Directory Layout","description":"The standard Unix-style directory tree of the PARA SDK and the role of each top-level directory.","sidebar_position":3,"sidebar_label":"SDK Layout"},"sidebar":"publicSidebar","previous":{"title":"Prerequisites","permalink":"/docs/para/installation/prerequisites"},"next":{"title":"Environment Setup","permalink":"/docs/para/installation/environment-setup"}}'),i=r(4848),a=r(8453);let s={title:"SDK Directory Layout",description:"The standard Unix-style directory tree of the PARA SDK and the role of each top-level directory.",sidebar_position:3,sidebar_label:"SDK Layout"},d,o={},l=[{value:"Summary of Key Directory Roles",id:"summary-of-key-directory-roles",level:2}];function c(e){let t={a:"a",code:"code",h2:"h2",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,a.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:["The PARA SDK is distributed as a standard Unix-style tree. After extraction, the top-level directory (hereafter ",(0,i.jsx)(t.code,{children:"$PARA_SDK"}),") is organized as follows."]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-text",children:"$PARA_SDK/\n\u251C\u2500 VERSION # Release/version/target string\n\u251C\u2500 LICENSE # License (PopcornSAR proprietary)\n\u251C\u2500 para-env-setup.sh # Environment setup script (use by sourcing)\n\u251C\u2500 bin/ # Runtime daemons and developer tools (EM, CM, para-tui, para-bench ...)\n\u251C\u2500 lib/ # Functional Cluster shared libraries (libpara_*.so) + CMake packages\n\u2502 \u2514\u2500 cmake/ # find_package(para-*) config packages\n\u251C\u2500 include/ # Public headers\n\u2502 \u251C\u2500 ara/ # Standard AUTOSAR AP API (ara::*)\n\u2502 \u251C\u2500 para/ # PARA extension API (para::*)\n\u2502 \u251C\u2500 apext/ # AP extension headers\n\u2502 \u2514\u2500 para_base_ffi.h # Base-layer FFI boundary\n\u251C\u2500 etc/ # Runtime configuration (ships with dlt/; manifests are added as apps are deployed)\n\u251C\u2500 opt/ # Deployed applications (each app = bin/ + etc/; initially empty)\n\u251C\u2500 share/ # Examples and CMake modules\n\u2502 \u251C\u2500 examples/ # Step-by-step example scripts + complete example Machine + playground\n\u2502 \u2514\u2500 cmake/ # PARA CMake modules (Modules/PARA/Para.cmake)\n\u251C\u2500 external/ # Bundled third-party (DLT daemon, pkg-config, etc.)\n\u2514\u2500 var/ # Runtime data directory (initially empty)\n"})}),"\n",(0,i.jsx)(t.h2,{id:"summary-of-key-directory-roles",children:"Summary of Key Directory Roles"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Directory"}),(0,i.jsx)(t.th,{children:"Environment Variable"}),(0,i.jsx)(t.th,{children:"Role"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"$PARA_SDK"})}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"PARA_SDK"}),", ",(0,i.jsx)(t.code,{children:"PARA_CORE"})]}),(0,i.jsx)(t.td,{children:"SDK root / runtime core root"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"etc/"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"PARA_CONF"})}),(0,i.jsx)(t.td,{children:"Machine, execution, communication, and logging manifests"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"var/"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"PARA_DATA"})}),(0,i.jsx)(t.td,{children:"Runtime mutable data"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"opt/"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"PARA_APPL"})}),(0,i.jsxs)(t.td,{children:["Deployed applications (per-app ",(0,i.jsx)(t.code,{children:"bin/"}),"+",(0,i.jsx)(t.code,{children:"etc/"}),")"]})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"bin/"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"$PARA_CORE/bin"})}),(0,i.jsx)(t.td,{children:"Daemon and tool executables"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"lib/"}),", ",(0,i.jsx)(t.code,{children:"external/lib/"})]}),(0,i.jsx)(t.td,{children:"(runtime link path)"}),(0,i.jsx)(t.td,{children:"Shared libraries"})]})]})]}),"\n",(0,i.jsxs)(t.p,{children:["You do not set these variables directly; the ",(0,i.jsx)(t.a,{href:"/docs/para/installation/environment-setup",children:"environment setup script"})," picks them up automatically."]})]})}function p(e={}){let{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453(e,t,r){r.d(t,{R:()=>s,x:()=>d});var n=r(6540);let i={},a=n.createContext(i);function s(e){let t=n.useContext(a);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.