libguestfs / virt-v2v

Virt-v2v converts guests from foreign hypervisors to run on KVM
GNU General Public License v2.0
83 stars 34 forks source link

Build instructions do not work #22

Closed desultory closed 1 year ago

desultory commented 1 year ago

The release tarball is missing configure.sh and there is not a valid makefile in the release or git repo. Using GNU Make 4.3

~/virt-v2v-2.3.3 $ autoreconf -i
configure.ac: warning: AM_GNU_GETTEXT is used, but not AM_GNU_GETTEXT_VERSION or AM_GNU_GETTEXT_REQUIRE_VERSION
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
libtoolize: copying file 'build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
m4/guestfs-c.m4:23: warning: The macro `AC_PROG_CC_STDC' is obsolete.
m4/guestfs-c.m4:23: You should run autoupdate.
./lib/autoconf/c.m4:1671: AC_PROG_CC_STDC is expanded from...
m4/guestfs-c.m4:23: the top level
configure.ac:34: installing 'build-aux/compile'
configure.ac:45: installing 'build-aux/config.guess'
configure.ac:45: installing 'build-aux/config.sub'
configure.ac:37: installing 'build-aux/install-sh'
configure.ac:37: installing 'build-aux/missing'
configure.ac:129: error: required file 'common/options/Makefile.in' not found
configure.ac:129: error: required file 'common/mlcustomize/Makefile.in' not found
configure.ac:129: error: required file 'common/mldrivers/Makefile.in' not found
configure.ac:129: error: required file 'common/mlgettext/Makefile.in' not found
configure.ac:129: error: required file 'common/mlpcre/Makefile.in' not found
configure.ac:129: error: required file 'common/mlstdutils/Makefile.in' not found
configure.ac:129: error: required file 'common/mlstdutils/guestfs_config.ml.in' not found
configure.ac:129: error: required file 'common/mltools/Makefile.in' not found
configure.ac:129: error: required file 'common/mlutils/Makefile.in' not found
configure.ac:129: error: required file 'common/mlv2v/Makefile.in' not found
configure.ac:129: error: required file 'common/mlxml/Makefile.in' not found
configure.ac:129: error: required file 'common/qemuopts/Makefile.in' not found
configure.ac:129: error: required file 'common/utils/Makefile.in' not found
Makefile.am:22: error: required directory ./common/mlstdutils does not exist
Makefile.am:22: error: required directory ./common/qemuopts does not exist
Makefile.am:22: error: required directory ./common/utils does not exist
Makefile.am:22: error: required directory ./common/mlutils does not exist
Makefile.am:22: error: required directory ./common/mlpcre does not exist
Makefile.am:22: error: required directory ./common/options does not exist
Makefile.am:22: error: required directory ./common/mlgettext does not exist
Makefile.am:22: error: required directory ./common/mlxml does not exist
Makefile.am:22: error: required directory ./common/mltools does not exist
Makefile.am:22: error: required directory ./common/mlcustomize does not exist
Makefile.am:22: error: required directory ./common/mldrivers does not exist
Makefile.am:22: error: required directory ./common/mlv2v does not exist
parallel-tests: installing 'build-aux/test-driver'
convert/Makefile.am: installing 'build-aux/depcomp'
autoreconf-2.71: error: automake failed with exit status: 1
minger0 commented 1 year ago

since the tarball install seems to have some issues (common submodule not included?), I took the other route, "To build from git". Unfortunately, those instructions did not work for me. is it may be the way how libguestfs version is checked? any suggestion is welcome this is on an Ubuntu 22.04.1

$ git clone https://github.com/libguestfs/virt-v2v.git
Cloning into 'virt-v2v'...
remote: Enumerating objects: 23883, done.
remote: Counting objects: 100% (4505/4505), done.
remote: Compressing objects: 100% (1086/1086), done.
remote: Total 23883 (delta 3563), reused 4049 (delta 3409), pack-reused 19378
Receiving objects: 100% (23883/23883), 15.06 MiB | 9.61 MiB/s, done.
Resolving deltas: 100% (10542/10542), done.

$ cd virt-v2v/

virt-v2v$ git submodule update --init
Submodule 'common' (https://github.com/libguestfs/libguestfs-common) registered for path 'common'
Cloning into 'virt-v2v/common'...
Submodule path 'common': checked out '70c10a079a30ff3a84f38596d725a6c5d46e2470'

virt-v2v$ autoreconf -i
m4/guestfs-libraries.m4:77: warning: macro 'AM_GNU_GETTEXT' not found in library
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
libtoolize: copying file 'build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
m4/guestfs-libraries.m4:77: warning: macro 'AM_GNU_GETTEXT' not found in library
m4/guestfs-c.m4:23: warning: The macro `AC_PROG_CC_STDC' is obsolete.
m4/guestfs-c.m4:23: You should run autoupdate.
./lib/autoconf/c.m4:1666: AC_PROG_CC_STDC is expanded from...
m4/guestfs-c.m4:23: the top level
configure:15128: error: possibly undefined macro: AM_GNU_GETTEXT
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
autoreconf: error: /usr/bin/autoconf failed with exit status: 1

virt-v2v$ autoreconf -vi
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I m4
m4/guestfs-libraries.m4:77: warning: macro 'AM_GNU_GETTEXT' not found in library
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: aclocal -I m4
m4/guestfs-libraries.m4:77: warning: macro 'AM_GNU_GETTEXT' not found in library
autoreconf: running: /usr/bin/autoconf
m4/guestfs-c.m4:23: warning: The macro `AC_PROG_CC_STDC' is obsolete.
m4/guestfs-c.m4:23: You should run autoupdate.
./lib/autoconf/c.m4:1666: AC_PROG_CC_STDC is expanded from...
m4/guestfs-c.m4:23: the top level
autoreconf: running: /usr/bin/autoheader
autoreconf: running: automake --add-missing --copy --no-force
configure.ac:34: installing 'build-aux/compile'
configure.ac:45: installing 'build-aux/config.guess'
configure.ac:45: installing 'build-aux/config.sub'
configure.ac:37: installing 'build-aux/install-sh'
configure.ac:37: installing 'build-aux/missing'
parallel-tests: installing 'build-aux/test-driver'
common/mlcustomize/Makefile.am: installing 'build-aux/depcomp'
autoreconf: Leaving directory '.'

virt-v2v$ ./configure
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for wchar.h... yes
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking whether _XOPEN_SOURCE should be defined... no
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports the include directive... yes (GNU style)
checking whether make supports nested variables... yes
checking how to create a pax tar archive... gnutar
checking dependency style of gcc... gcc3
checking whether make supports nested variables... (cached) yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking if 2.3 is a stable or development branch of virt-v2v... development
configure: virt-v2v version 2.3.3

--- Checking for external programs ---
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for gawk... (cached) gawk
checking whether ln -s works... yes
checking for xorrisofs... /usr/bin/xorrisofs
checking for po4a-gettextize... no
checking for po4a-translate... no
checking for sqlite3... sqlite3
checking for zip... /usr/bin/zip
checking for unzip... /usr/bin/unzip
checking for valgrind... no
checking for pycodestyle... no

--- Checking for the C compiler environment ---
checking how to run the C preprocessor... gcc -E
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking size of long... 8
checking if __attribute__((cleanup(...))) works with this compiler... yes

--- Checking for libraries used by virt-v2v ---
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for libguestfs >= 1.44... no
configure: error: Package requirements (libguestfs >= 1.44) were not met:

No package 'libguestfs' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LIBGUESTFS_CFLAGS
and LIBGUESTFS_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

virt-v2v$ sudo apt install libguestfs
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package libguestfs

virt-v2v$ sudo apt install libguestfs-tools
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libguestfs-tools is already the newest version (1:1.46.2-10ubuntu3).
The following packages were automatically installed and are no longer required:
  android-libbacktrace android-libf2fs-utils android-libutils app-install-data-partner fonts-cantarell fonts-dejavu-extra g++-9 gir1.2-cogl-1.0 gir1.2-coglpango-1.0
  gnome-getting-started-docs gnome-screenshot java-common libann0 libaom0 libatk-wrapper-java libatk-wrapper-java-jni libboost-date-time1.71.0
  libboost-filesystem1.71.0 libboost-iostreams1.71.0 libcamel-1.2-62 libcbor0.6 libcdio18 libcdt5 libclang-cpp10 libclang1-10 libcmis-0.5-5v5
  libextutils-pkgconfig-perl libf2fs-format4 libf2fs5 libflashrom1 libfluidsynth2 libftdi1-2 libicu66 libidn11 libigdgmm11 libisl22 libjson-c4 libjuh-java
  liblab-gamut1 liblibreoffice-java libllvm10 libllvm12 libllvm13 libmbedcrypto3 libmbedx509-0 libmms0 libmozjs-68-0 libmpdec2 libnettle7 libntfs-3g883 libobjc-9-dev
  libofa0 liborcus-0.15-0 libprotobuf17 libqt5script5 libraw19 libreoffice-style-tango libroken18-heimdal libstd-rust-1.59 libstdc++-9-dev libtracker-sparql-2.0-0
  libunoloader-java libusrsctp1 libwind0-heimdal libwmf0.2-7 libx265-179 llvm-10 llvm-10-runtime ltrace popularity-contest python-pip-whl python3-entrypoints
  qbs-common syslinux-legacy ure-java vino xul-ext-ubufox
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 10 not upgraded.
nertpinx commented 1 year ago

I'm guessing you used the automatically generated tarball from the tag in github, not the actual release from https://download.libguestfs.org/virt-v2v right?

And about the building from git you need not only the library, but also the development package. My guess for that package name is libguestfs-dev or similar.

rwmjones commented 1 year ago

This one: https://packages.debian.org/sid/libguestfs-dev

There's not a bug here, so closing.

desultory commented 1 year ago

did you check the original issue? this got kinda hijacked

rwmjones commented 1 year ago

As Martin said, please use the tarballs from https://download.libguestfs.org/virt-v2v

desultory commented 1 year ago

are the github releases just broken somehow? or am i misunderstanding this

rwmjones commented 1 year ago

Yes the github releases are broken, do not use them. There is unfortunately no way to disable them from being generated.