I'm building a package using multiple sources.
I'm using $forgemeta to get/manage sources, as per example here:
https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/#_multip...
One of my sources pulls from upstream scm (github), and needs a subsequent 'git submodule--init'.
Is seems that what %forgemeta pulls/tars/expands is not initilialize git repo; rather, just the relevant target's files.
E.g., for a given scm source (here, ngx_brotli), the %forgemeta pull unpacks
tree -L 1 -a ngx_brotli ngx_brotli ├── config ├── CONTRIBUTING.md ├── deps ├── filter ├── .gitmodules ├── LICENSE ├── README.md ├── script ├── static └── .travis.yml
note, no ".git" folder, and no ability as is to `git submodule --init` in the tree.
otoh, a `git clone` of the same source results, as expected, in
tree -L 1 -a ngx_brotli ngx_brotli ├── config ├── CONTRIBUTING.md ├── deps ├── filter !! ├── .git ├── .gitmodules ├── LICENSE ├── README.md ├── script ├── static └── .travis.yml
currently, to workaround this, I DISABLE the forge for the source in question, and do the pull & submodule init in %prep,
e.g., this spec
%global forgeurl0 https://github.com/nginx/nginx Version: 1.19.0 %global tag0 release-%{version}
%global forgeurl1 https://github.com/openresty/headers-more-nginx-module %global tag1 master
# DISABLE global forgeurl1 https://github.com/google/ngx_brotli %global tag2 master
%forgemeta -i -z 0 %forgemeta -i -z 1 # DISABLE forgemeta -i -z 2
Name: %{name} %define dist %{scm0} Release: %{dist} Summary: %{name} License: BSD URL: %{forgeurl0}
Source0: %{forgesource0} Source1: %{forgesource1} Source2: https://github.com/google/ngx_brotli/archive/master/ngx_brotli-master.tar.gz ...
%prep pushd . cd %{_sourcedir} rm -rf ngx_brotli git clone https://github.com/google/ngx_brotli cd ngx_brotli git submodule update --init cd .. tar --remove-files -czf ngx_brotli.tar.gz ngx_brotli popd
%setup -T -b 0 -n nginx-%{tag0} %setup -T -b 1 -n headers-more-nginx-module-%{tag1} ...
%build export DESTDIR=%{buildroot} cd %{_builddir}/%{name}-%{tag0} ...
%install cd %{_builddir}/%{name}-%{tag0} make install DESTDIR=%{buildroot} INSTALLDIRS=vendor ...
appears to work, and the `git submodule --init` is taken care of correctly.
but, it's messy.
_is_ there a %forgemeta alternative to the manual git clone that will init/unpack the source _as_ a repo, allowing the submodule task to be exec'd?
this isn't, of course, ONLY a COPR question, but one of rpmbuild more generally.
_my_ goal _is_ to get it working on COPR, eventually.
that said, if this^ belongs on some other list, let me know.
copr-devel@lists.fedorahosted.org