Setup a new repo

Short Version

Normally, people get repo tools by copying all the bootstrap files from other repo. You would need following files:

  • repo.sh and repo.bat - entry points

  • tools/repoman/repoman.py - bootstrap script

  • tools/packman - packman

  • deps/repo-deps.packman.xml - packman config for repo tools to pull. It needs at least to have repo_man itself.

They can also be copied from repo_man itself.

All those files should be committed and from now on to update use:

  • repo update repo_man command to update repo_man

  • repo packman update to update packman

After an update all the changes should be committed too.

Long Version

To set up a repo to use repo_man, follow these steps:

  • First, copy over the packman and repo_man bootstrap scripts. This can be done from the repo_man repo itself, by doing:

    Windows

    git clone --depth 1 --filter=blob:none https://gitlab-master.nvidia.com/omniverse/repo/repo_man.git repo_man_temp
    xcopy /S repo_man_temp\tools tools\
    copy repo_man_temp\repo.sh .
    copy repo_man_temp\repo.bat .
    rmdir /S /Q repo_man_temp
    

    Linux/MacOS

    git clone --depth 1 --filter=blob:none https://gitlab-master.nvidia.com/omniverse/repo/repo_man.git repo_man_temp
    cp -r repo_man_temp/tools repo_man_temp/repo.sh repo_man_temp/repo.bat .
    rm -rf repo_man_temp
    
  • Next, create a deps/repo-deps.packman.xml file, which declares repo_man as a dependency:

    Windows/Linux/MacOS

    mkdir deps
    

    Then, in your favorite text editor, save a new deps/repo-deps.packman.xml. This is the minimum necessary to use repo_man:

    <project toolsVersion="5.0">
        <dependency name="repo_man">
            <package name="repo_man" version="0.4.7" />
         </dependency> 
    </project>
    

    However, since nearly all the useful functionality is in the various subtools, and repo_man itself is just a way to manage those tools, with only this, repo_man won’t be very useful. You’ll want to add in support for whichever tools you want to use. For instance, to enable support for repo_build and repo_format, use this deps/repo-deps.packman.xml:

    <project toolsVersion="5.0">
        <dependency name="repo_man">
            <package name="repo_man" version="0.4.7" />
        </dependency> 
        <dependency name="repo_build">
            <package name="repo_build" version="0.17.21" />
        </dependency> 
        <dependency name="repo_format">
            <package name="repo_format" version="0.6.5" />
        </dependency> 
    </project>
    

    To find what versions are available for a given tool, use packman - either via packman-list or the web frontend, nv/packman

  • Finally, create a repo.toml file - it may be empty, but must exist:

    Windows

    type nul > repo.toml
    

    Linux/MacOS

    touch repo.toml
    
  • You’ll likely also want to commit these files to your repo. For instance, if using git:

    Winows/Linux/MacOS

    git add deps repo.bat repo.sh repo.toml tools
    git commit -a -m "adding basic repoman support"