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/#_mul...
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.