Message ID | 20230607064017.4062296-1-zboszor@gmail.com |
---|---|
State | New |
Headers | show |
Series | [meta-oe,v2] mpich: Upgrade to 4.1.1 | expand |
On Tue, Jun 6, 2023 at 11:40 PM Zoltán Böszörményi <zboszor@gmail.com> wrote: > mpich 4.1+ has its own official way to allow cross-compiling, > use it. > > Remove the old PACKAGECONFIG[x11], the configuration option > does not exist anymore. > > Add PACKAGECONFIG knobs to allow building the C++ and FORTRAN > parts. Both are needed by intel-oneapi-mkl in meta-intel. Don't > enable either by default to keep the current minimalistic build. > > Remove configuration options that don't exist in the new version. > > Set TOOLCHAIN = "gcc" so gfortran may be used. we do not enable Fortran even with gcc by default, is it a requirement now for this recipe ? > > Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com> > --- > meta-oe/recipes-devtools/mpich/mpich_4.0.3.bb | 58 ----------------- > meta-oe/recipes-devtools/mpich/mpich_4.1.1.bb | 63 +++++++++++++++++++ > 2 files changed, 63 insertions(+), 58 deletions(-) > delete mode 100644 meta-oe/recipes-devtools/mpich/mpich_4.0.3.bb > create mode 100644 meta-oe/recipes-devtools/mpich/mpich_4.1.1.bb > > diff --git a/meta-oe/recipes-devtools/mpich/mpich_4.0.3.bb > b/meta-oe/recipes-devtools/mpich/mpich_4.0.3.bb > deleted file mode 100644 > index 000f73981..000000000 > --- a/meta-oe/recipes-devtools/mpich/mpich_4.0.3.bb > +++ /dev/null > @@ -1,58 +0,0 @@ > -SUMMARY = "Message Passing Interface (MPI) implementation" > -HOMEPAGE = "http://www.mpich.org/" > -SECTION = "devel" > - > -LICENSE = "BSD-2-Clause" > -LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=bd4d7ab13df98988b1ca2a4e01c8c163" > - > -SRC_URI = "http://www.mpich.org/static/downloads/${PV}/mpich-${PV}.tar.gz > " > -SRC_URI[sha256sum] = > "17406ea90a6ed4ecd5be39c9ddcbfac9343e6ab4f77ac4e8c5ebe4a3e3b6c501" > - > -RDEPENDS:${PN} += "bash perl libxml2" > - > -EXTRA_OECONF = "--enable-debuginfo \ > - --enable-fast \ > - --enable-shared \ > - --with-pm=gforker \ > - --disable-rpath \ > - --disable-f77 \ > - --disable-fc \ > - --disable-fortran \ > - --disable-cxx \ > - BASH_SHELL='${USRBINPATH}/env bash' \ > - PERL='${USRBINPATH}/env perl' \ > - --with-device=ch3:nemesis \ > - --with-rdmacm=no \ > - --disable-numa \ > -" > - > -PACKAGECONFIG += " \ > - ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \ > -" > -PACKAGECONFIG[x11] = "--with-x --x-includes=${STAGING_INCDIR} > --x-libraries=${STAGING_LIBDIR},--without-x,virtual/libx11" > - > -# libmpi.so needs symbols like __multf3 and somehow it does not respect > --rtlib option passed by clang > -LDFLAGS:append:x86-64 = " -lgcc" > -LDFLAGS:append:x86 = " -lgcc" > - > -inherit autotools gettext pkgconfig > - > -do_configure() { > - for d in confdb test/mpi test/mpi/confdb src/pm/hydra/confdb \ > - src/pm/hydra/tools/topo/hwloc/hwloc/config > src/pm/hydra/mpl/confdb \ > - modules/yaksa/m4 modules/json-c modules/ucx modules/hwloc/config \ > - test/mpi/dtpools/confdb src/mpl/confdb src/mpi/romio/confdb; do > - install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess > ${S}/$d > - install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub > ${S}/$d > - done > -# cd ${S} > -# autoupdate > -# autoreconf --verbose --install --force > -# cd ${B} > - oe_runconf > -} > - > -do_install:append() { > - sed -i 's,${S}/,,g' ${D}/${libdir}/libmpi.la > - sed -i 's,${DEBUG_PREFIX_MAP},,g' ${D}/${libdir}/pkgconfig/mpich.pc > -} > diff --git a/meta-oe/recipes-devtools/mpich/mpich_4.1.1.bb > b/meta-oe/recipes-devtools/mpich/mpich_4.1.1.bb > new file mode 100644 > index 000000000..e65f9074e > --- /dev/null > +++ b/meta-oe/recipes-devtools/mpich/mpich_4.1.1.bb > @@ -0,0 +1,63 @@ > +SUMMARY = "Message Passing Interface (MPI) implementation" > +HOMEPAGE = "http://www.mpich.org/" > +SECTION = "devel" > + > +LICENSE = "BSD-2-Clause" > +LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=f1804c45b8b4e816e53eb1f175d810f3" > + > +SRC_URI = "http://www.mpich.org/static/downloads/${PV}/mpich-${PV}.tar.gz > " > +SRC_URI[sha256sum] = > "ee30471b35ef87f4c88f871a5e2ad3811cd9c4df32fd4f138443072ff4284ca2" > + > +TOOLCHAIN = "gcc" > + > +RDEPENDS:${PN} += "bash perl libxml2" > + > +EXTRA_OECONF = "--enable-debuginfo \ > + --enable-fast \ > + --enable-shared \ > + --with-pm=gforker \ > + BASH_SHELL='${USRBINPATH}/env bash' \ > + PERL='${USRBINPATH}/env perl' \ > + --with-device=ch3:nemesis \ > + --with-cross=${WORKDIR}/cross_values.txt \ > +" > + > +PACKAGECONFIG ??= "" > + > +PACKAGECONFIG[cxx] = "--enable-cxx,--disable-cxx" > +PACKAGECONFIG[fortran] = "--enable-fortran,--disable-f77 --disable-fc > --disable-fortran,libgfortran" > + > +# libmpi.so needs symbols like __multf3 and somehow it does not respect > --rtlib option passed by clang > +LDFLAGS:append:x86-64 = " -lgcc" > +LDFLAGS:append:x86 = " -lgcc" > + > +inherit autotools gettext pkgconfig qemu > + > +DEPENDS += "qemu-native" > + > +do_configure() { > + qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), > [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}" > + cat > ${WORKDIR}/qemuwrapper << EOF > +#!/bin/sh > +$qemu_binary "\$@" > +EOF > + chmod +x ${WORKDIR}/qemuwrapper > + > + sed -i 's:my \(.*\) ./t`;:my \1 ${WORKDIR}/qemuwrapper > ${WORKDIR}/t`;:' ${S}/maint/gen_cross.pl > + > + cd ${WORKDIR} > + perl ${S}/maint/gen_cross.pl > + > + sed -i 's:\(CROSS_F90_INTEGER_MODEL_MAP=.*\) }"$:\1 }, ":' > ${WORKDIR}/cross_values.txt > + > + cd ${S} > + ./autogen.sh > + > + cd ${B} > + oe_runconf > +} > + > +do_install:append() { > + sed -i 's,${S}/,,g' ${D}/${libdir}/libmpi.la > + sed -i 's,${DEBUG_PREFIX_MAP},,g' ${D}/${libdir}/pkgconfig/mpich.pc > +} > -- > 2.40.1 > >
2023. 06. 07. 8:47 keltezéssel, Khem Raj írta: > > > On Tue, Jun 6, 2023 at 11:40 PM Zoltán Böszörményi <zboszor@gmail.com> wrote: > > mpich 4.1+ has its own official way to allow cross-compiling, > use it. > > Remove the old PACKAGECONFIG[x11], the configuration option > does not exist anymore. > > Add PACKAGECONFIG knobs to allow building the C++ and FORTRAN > parts. Both are needed by intel-oneapi-mkl in meta-intel. Don't > enable either by default to keep the current minimalistic build. > > Remove configuration options that don't exist in the new version. > > Set TOOLCHAIN = "gcc" so gfortran may be used. > > > we do not enable Fortran even with gcc by default, is it a requirement now for this > recipe ? The cross file generator uses it. Maybe it's better to move the --with-cross= setting into PACKAGEGROUP[fortran]. Also, how to express a build time dependency on arch-gfortran in a generic way? > > > > Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com> > --- > meta-oe/recipes-devtools/mpich/mpich_4.0.3.bb <http://mpich_4.0.3.bb> | 58 > ----------------- > meta-oe/recipes-devtools/mpich/mpich_4.1.1.bb <http://mpich_4.1.1.bb> | 63 > +++++++++++++++++++ > 2 files changed, 63 insertions(+), 58 deletions(-) > delete mode 100644 meta-oe/recipes-devtools/mpich/mpich_4.0.3.bb > <http://mpich_4.0.3.bb> > create mode 100644 meta-oe/recipes-devtools/mpich/mpich_4.1.1.bb > <http://mpich_4.1.1.bb> > > diff --git a/meta-oe/recipes-devtools/mpich/mpich_4.0.3.bb <http://mpich_4.0.3.bb> > b/meta-oe/recipes-devtools/mpich/mpich_4.0.3.bb <http://mpich_4.0.3.bb> > deleted file mode 100644 > index 000f73981..000000000 > --- a/meta-oe/recipes-devtools/mpich/mpich_4.0.3.bb <http://mpich_4.0.3.bb> > +++ /dev/null > @@ -1,58 +0,0 @@ > -SUMMARY = "Message Passing Interface (MPI) implementation" > -HOMEPAGE = "http://www.mpich.org/" > -SECTION = "devel" > - > -LICENSE = "BSD-2-Clause" > -LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=bd4d7ab13df98988b1ca2a4e01c8c163" > - > -SRC_URI = "http://www.mpich.org/static/downloads/${PV}/mpich-${PV}.tar.gz > <http://www.mpich.org/static/downloads/$%7BPV%7D/mpich-$%7BPV%7D.tar.gz>" > -SRC_URI[sha256sum] = "17406ea90a6ed4ecd5be39c9ddcbfac9343e6ab4f77ac4e8c5ebe4a3e3b6c501" > - > -RDEPENDS:${PN} += "bash perl libxml2" > - > -EXTRA_OECONF = "--enable-debuginfo \ > - --enable-fast \ > - --enable-shared \ > - --with-pm=gforker \ > - --disable-rpath \ > - --disable-f77 \ > - --disable-fc \ > - --disable-fortran \ > - --disable-cxx \ > - BASH_SHELL='${USRBINPATH}/env bash' \ > - PERL='${USRBINPATH}/env perl' \ > - --with-device=ch3:nemesis \ > - --with-rdmacm=no \ > - --disable-numa \ > -" > - > -PACKAGECONFIG += " \ > - ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \ > -" > -PACKAGECONFIG[x11] = "--with-x --x-includes=${STAGING_INCDIR} > --x-libraries=${STAGING_LIBDIR},--without-x,virtual/libx11" > - > -# libmpi.so needs symbols like __multf3 and somehow it does not respect --rtlib > option passed by clang > -LDFLAGS:append:x86-64 = " -lgcc" > -LDFLAGS:append:x86 = " -lgcc" > - > -inherit autotools gettext pkgconfig > - > -do_configure() { > - for d in confdb test/mpi test/mpi/confdb src/pm/hydra/confdb \ > - src/pm/hydra/tools/topo/hwloc/hwloc/config src/pm/hydra/mpl/confdb \ > - modules/yaksa/m4 modules/json-c modules/ucx modules/hwloc/config \ > - test/mpi/dtpools/confdb src/mpl/confdb src/mpi/romio/confdb; do > - install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}/$d > - install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}/$d > - done > -# cd ${S} > -# autoupdate > -# autoreconf --verbose --install --force > -# cd ${B} > - oe_runconf > -} > - > -do_install:append() { > - sed -i 's,${S}/,,g' ${D}/${libdir}/libmpi.la <http://libmpi.la> > - sed -i 's,${DEBUG_PREFIX_MAP},,g' ${D}/${libdir}/pkgconfig/mpich.pc > -} > diff --git a/meta-oe/recipes-devtools/mpich/mpich_4.1.1.bb <http://mpich_4.1.1.bb> > b/meta-oe/recipes-devtools/mpich/mpich_4.1.1.bb <http://mpich_4.1.1.bb> > new file mode 100644 > index 000000000..e65f9074e > --- /dev/null > +++ b/meta-oe/recipes-devtools/mpich/mpich_4.1.1.bb <http://mpich_4.1.1.bb> > @@ -0,0 +1,63 @@ > +SUMMARY = "Message Passing Interface (MPI) implementation" > +HOMEPAGE = "http://www.mpich.org/" > +SECTION = "devel" > + > +LICENSE = "BSD-2-Clause" > +LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=f1804c45b8b4e816e53eb1f175d810f3" > + > +SRC_URI = "http://www.mpich.org/static/downloads/${PV}/mpich-${PV}.tar.gz > <http://www.mpich.org/static/downloads/$%7BPV%7D/mpich-$%7BPV%7D.tar.gz>" > +SRC_URI[sha256sum] = "ee30471b35ef87f4c88f871a5e2ad3811cd9c4df32fd4f138443072ff4284ca2" > + > +TOOLCHAIN = "gcc" > + > +RDEPENDS:${PN} += "bash perl libxml2" > + > +EXTRA_OECONF = "--enable-debuginfo \ > + --enable-fast \ > + --enable-shared \ > + --with-pm=gforker \ > + BASH_SHELL='${USRBINPATH}/env bash' \ > + PERL='${USRBINPATH}/env perl' \ > + --with-device=ch3:nemesis \ > + --with-cross=${WORKDIR}/cross_values.txt \ > +" > + > +PACKAGECONFIG ??= "" > + > +PACKAGECONFIG[cxx] = "--enable-cxx,--disable-cxx" > +PACKAGECONFIG[fortran] = "--enable-fortran,--disable-f77 --disable-fc > --disable-fortran,libgfortran" > + > +# libmpi.so needs symbols like __multf3 and somehow it does not respect --rtlib > option passed by clang > +LDFLAGS:append:x86-64 = " -lgcc" > +LDFLAGS:append:x86 = " -lgcc" > + > +inherit autotools gettext pkgconfig qemu > + > +DEPENDS += "qemu-native" > + > +do_configure() { > + qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), > [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}" > + cat > ${WORKDIR}/qemuwrapper << EOF > +#!/bin/sh > +$qemu_binary "\$@" > +EOF > + chmod +x ${WORKDIR}/qemuwrapper > + > + sed -i 's:my \(.*\) ./t`;:my \1 ${WORKDIR}/qemuwrapper ${WORKDIR}/t`;:' > ${S}/maint/gen_cross.pl <http://gen_cross.pl> > + > + cd ${WORKDIR} > + perl ${S}/maint/gen_cross.pl <http://gen_cross.pl> > + > + sed -i 's:\(CROSS_F90_INTEGER_MODEL_MAP=.*\) }"$:\1 }, ":' > ${WORKDIR}/cross_values.txt > + > + cd ${S} > + ./autogen.sh > + > + cd ${B} > + oe_runconf > +} > + > +do_install:append() { > + sed -i 's,${S}/,,g' ${D}/${libdir}/libmpi.la <http://libmpi.la> > + sed -i 's,${DEBUG_PREFIX_MAP},,g' ${D}/${libdir}/pkgconfig/mpich.pc > +} > -- > 2.40.1 >
diff --git a/meta-oe/recipes-devtools/mpich/mpich_4.0.3.bb b/meta-oe/recipes-devtools/mpich/mpich_4.0.3.bb deleted file mode 100644 index 000f73981..000000000 --- a/meta-oe/recipes-devtools/mpich/mpich_4.0.3.bb +++ /dev/null @@ -1,58 +0,0 @@ -SUMMARY = "Message Passing Interface (MPI) implementation" -HOMEPAGE = "http://www.mpich.org/" -SECTION = "devel" - -LICENSE = "BSD-2-Clause" -LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=bd4d7ab13df98988b1ca2a4e01c8c163" - -SRC_URI = "http://www.mpich.org/static/downloads/${PV}/mpich-${PV}.tar.gz" -SRC_URI[sha256sum] = "17406ea90a6ed4ecd5be39c9ddcbfac9343e6ab4f77ac4e8c5ebe4a3e3b6c501" - -RDEPENDS:${PN} += "bash perl libxml2" - -EXTRA_OECONF = "--enable-debuginfo \ - --enable-fast \ - --enable-shared \ - --with-pm=gforker \ - --disable-rpath \ - --disable-f77 \ - --disable-fc \ - --disable-fortran \ - --disable-cxx \ - BASH_SHELL='${USRBINPATH}/env bash' \ - PERL='${USRBINPATH}/env perl' \ - --with-device=ch3:nemesis \ - --with-rdmacm=no \ - --disable-numa \ -" - -PACKAGECONFIG += " \ - ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \ -" -PACKAGECONFIG[x11] = "--with-x --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR},--without-x,virtual/libx11" - -# libmpi.so needs symbols like __multf3 and somehow it does not respect --rtlib option passed by clang -LDFLAGS:append:x86-64 = " -lgcc" -LDFLAGS:append:x86 = " -lgcc" - -inherit autotools gettext pkgconfig - -do_configure() { - for d in confdb test/mpi test/mpi/confdb src/pm/hydra/confdb \ - src/pm/hydra/tools/topo/hwloc/hwloc/config src/pm/hydra/mpl/confdb \ - modules/yaksa/m4 modules/json-c modules/ucx modules/hwloc/config \ - test/mpi/dtpools/confdb src/mpl/confdb src/mpi/romio/confdb; do - install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}/$d - install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}/$d - done -# cd ${S} -# autoupdate -# autoreconf --verbose --install --force -# cd ${B} - oe_runconf -} - -do_install:append() { - sed -i 's,${S}/,,g' ${D}/${libdir}/libmpi.la - sed -i 's,${DEBUG_PREFIX_MAP},,g' ${D}/${libdir}/pkgconfig/mpich.pc -} diff --git a/meta-oe/recipes-devtools/mpich/mpich_4.1.1.bb b/meta-oe/recipes-devtools/mpich/mpich_4.1.1.bb new file mode 100644 index 000000000..e65f9074e --- /dev/null +++ b/meta-oe/recipes-devtools/mpich/mpich_4.1.1.bb @@ -0,0 +1,63 @@ +SUMMARY = "Message Passing Interface (MPI) implementation" +HOMEPAGE = "http://www.mpich.org/" +SECTION = "devel" + +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=f1804c45b8b4e816e53eb1f175d810f3" + +SRC_URI = "http://www.mpich.org/static/downloads/${PV}/mpich-${PV}.tar.gz" +SRC_URI[sha256sum] = "ee30471b35ef87f4c88f871a5e2ad3811cd9c4df32fd4f138443072ff4284ca2" + +TOOLCHAIN = "gcc" + +RDEPENDS:${PN} += "bash perl libxml2" + +EXTRA_OECONF = "--enable-debuginfo \ + --enable-fast \ + --enable-shared \ + --with-pm=gforker \ + BASH_SHELL='${USRBINPATH}/env bash' \ + PERL='${USRBINPATH}/env perl' \ + --with-device=ch3:nemesis \ + --with-cross=${WORKDIR}/cross_values.txt \ +" + +PACKAGECONFIG ??= "" + +PACKAGECONFIG[cxx] = "--enable-cxx,--disable-cxx" +PACKAGECONFIG[fortran] = "--enable-fortran,--disable-f77 --disable-fc --disable-fortran,libgfortran" + +# libmpi.so needs symbols like __multf3 and somehow it does not respect --rtlib option passed by clang +LDFLAGS:append:x86-64 = " -lgcc" +LDFLAGS:append:x86 = " -lgcc" + +inherit autotools gettext pkgconfig qemu + +DEPENDS += "qemu-native" + +do_configure() { + qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}" + cat > ${WORKDIR}/qemuwrapper << EOF +#!/bin/sh +$qemu_binary "\$@" +EOF + chmod +x ${WORKDIR}/qemuwrapper + + sed -i 's:my \(.*\) ./t`;:my \1 ${WORKDIR}/qemuwrapper ${WORKDIR}/t`;:' ${S}/maint/gen_cross.pl + + cd ${WORKDIR} + perl ${S}/maint/gen_cross.pl + + sed -i 's:\(CROSS_F90_INTEGER_MODEL_MAP=.*\) }"$:\1 }, ":' ${WORKDIR}/cross_values.txt + + cd ${S} + ./autogen.sh + + cd ${B} + oe_runconf +} + +do_install:append() { + sed -i 's,${S}/,,g' ${D}/${libdir}/libmpi.la + sed -i 's,${DEBUG_PREFIX_MAP},,g' ${D}/${libdir}/pkgconfig/mpich.pc +}
mpich 4.1+ has its own official way to allow cross-compiling, use it. Remove the old PACKAGECONFIG[x11], the configuration option does not exist anymore. Add PACKAGECONFIG knobs to allow building the C++ and FORTRAN parts. Both are needed by intel-oneapi-mkl in meta-intel. Don't enable either by default to keep the current minimalistic build. Remove configuration options that don't exist in the new version. Set TOOLCHAIN = "gcc" so gfortran may be used. Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com> --- meta-oe/recipes-devtools/mpich/mpich_4.0.3.bb | 58 ----------------- meta-oe/recipes-devtools/mpich/mpich_4.1.1.bb | 63 +++++++++++++++++++ 2 files changed, 63 insertions(+), 58 deletions(-) delete mode 100644 meta-oe/recipes-devtools/mpich/mpich_4.0.3.bb create mode 100644 meta-oe/recipes-devtools/mpich/mpich_4.1.1.bb