编译v2ray-geodata出错,使用immortalwrt源码
make[3]: Entering directory '/home/destoryg/immortalwrt/feeds/small/v2ray-geodata'
touch /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/.prepared_947140e14290494f290687f18f95c647_6664517399ebbbc92a37c5bb081b5c53_check
true
[ ! -d ./src/ ] || cp -fpR ./src/. /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata
rm -f /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/.configured_*
rm -f /home/destoryg/immortalwrt/staging_dir/target-mipsel_24kc_musl/stamp/.v2ray-geodata_installed
(cd /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/./; if [ -x ./configure ]; then find /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ -name config.guess | xargs -r chmod u+w; find /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ -name config.guess | xargs -r -n1 cp --remove-destination /home/destoryg/immortalwrt/scripts/config.guess; find /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ -name config.sub | xargs -r chmod u+w; find /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ -name config.sub | xargs -r -n1 cp --remove-destination /home/destoryg/immortalwrt/scripts/config.sub; AR="mipsel-openwrt-linux-musl-gcc-ar" AS="ccache mipsel-openwrt-linux-musl-gcc -c -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts -msoft-float -fmacro-prefix-map=/home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata=v2ray-geodata -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro" LD="mipsel-openwrt-linux-musl-ld.bfd" NM="mipsel-openwrt-linux-musl-gcc-nm" CC="ccache mipsel-openwrt-linux-musl-gcc" GCC="ccache mipsel-openwrt-linux-musl-gcc" CXX="ccache mipsel-openwrt-linux-musl-g++" RANLIB="mipsel-openwrt-linux-musl-gcc-ranlib" STRIP=mipsel-openwrt-linux-musl-strip OBJCOPY=mipsel-openwrt-linux-musl-objcopy OBJDUMP=mipsel-openwrt-linux-musl-objdump SIZE=mipsel-openwrt-linux-musl-size CFLAGS="-Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts -msoft-float -fmacro-prefix-map=/home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata=v2ray-geodata -mips16 -minterlink-mips16 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro " CXXFLAGS="-Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts -msoft-float -fmacro-prefix-map=/home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata=v2ray-geodata -mips16 -minterlink-mips16 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -mips16 -minterlink-mips16 " CPPFLAGS="-I/home/destoryg/immortalwrt/staging_dir/toolchain-mipsel_24kc_gcc-13.3.0_musl/usr/include -I/home/destoryg/immortalwrt/staging_dir/toolchain-mipsel_24kc_gcc-13.3.0_musl/include -I/home/destoryg/immortalwrt/staging_dir/toolchain-mipsel_24kc_gcc-13.3.0_musl/include/fortify " LDFLAGS="-L/home/destoryg/immortalwrt/staging_dir/toolchain-mipsel_24kc_gcc-13.3.0_musl/usr/lib -L/home/destoryg/immortalwrt/staging_dir/toolchain-mipsel_24kc_gcc-13.3.0_musl/lib -fuse-ld=bfd -znow -zrelro " ./configure --target=mipsel-openwrt-linux --host=mipsel-openwrt-linux --build=x86_64-pc-linux-gnu --disable-dependency-tracking --program-prefix="" --program-suffix="" --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib --sysconfdir=/etc --datadir=/usr/share --localstatedir=/var --mandir=/usr/man --infodir=/usr/info --disable-nls ; fi; )
touch /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/.configured_68b329da9893e34099c7d8ad5cb9c940
rm -f /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/.built
touch /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/.built_check
touch /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/.built
rm -rf /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/.pkgdir/v2ray-geoip.installed /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/.pkgdir/v2ray-geoip
mkdir -p /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/.pkgdir/v2ray-geoip
install -d -m0755 /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/.pkgdir/v2ray-geoip/usr/share/v2ray
install -m0644 /home/destoryg/immortalwrt/dl/geoip.dat.202501190004 /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/.pkgdir/v2ray-geoip/usr/share/v2ray/geoip.dat
touch /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/.pkgdir/v2ray-geoip.installed
mkdir -p /home/destoryg/immortalwrt/staging_dir/target-mipsel_24kc_musl/root-ramips/stamp
SHELL= flock /home/destoryg/immortalwrt/tmp/.root-copy.flock -c 'cp -fpR /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/.pkgdir/v2ray-geoip/. /home/destoryg/immortalwrt/staging_dir/target-mipsel_24kc_musl/root-ramips/'
touch /home/destoryg/immortalwrt/staging_dir/target-mipsel_24kc_musl/root-ramips/stamp/.v2ray-geoip_installed
rm -rf /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip
mkdir -p /home/destoryg/immortalwrt/bin/targets/ramips/mt7621/packages /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip /home/destoryg/immortalwrt/staging_dir/target-mipsel_24kc_musl/pkginfo
install -d -m0755 /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/usr/share/v2ray
install -m0644 /home/destoryg/immortalwrt/dl/geoip.dat.202501190004 /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/usr/share/v2ray/geoip.dat
find /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip -name 'CVS' -o -name '.svn' -o -name '.#*' -o -name '*~'| xargs -r rm -rf
export CROSS="mipsel-openwrt-linux-musl-" NO_RENAME=1 ; NM="mipsel-openwrt-linux-musl-nm" STRIP="/home/destoryg/immortalwrt/staging_dir/host/bin/sstrip -z" STRIP_KMOD="/home/destoryg/immortalwrt/scripts/strip-kmod.sh" PATCHELF="/home/destoryg/immortalwrt/staging_dir/host/bin/patchelf" /home/destoryg/immortalwrt/scripts/rstrip.sh /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip
install -d -m0755 /home/destoryg/immortalwrt/bin/packages/mipsel_24kc/small/tmp
mkdir -p /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/apk-all/v2ray-geoip/
mkdir -p /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/lib/apk/packages/
(cd /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/apk-all/v2ray-geoip; )
( echo "#!/bin/sh"; echo "[ \"\${IPKG_NO_SCRIPT}\" = \"1\" ] && exit 0"; echo "[ -s "\${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; echo ". \${IPKG_INSTROOT}/lib/functions.sh"; echo 'export root="${IPKG_INSTROOT}"'; echo 'export pkgname="v2ray-geoip"'; echo "add_group_and_user"; echo "default_postinst"; [ ! -f /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/apk-all/v2ray-geoip/postinst-pkg ] || sed -z 's/^\s*#!/#!/' "/home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/apk-all/v2ray-geoip/postinst-pkg"; ) > /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/apk-all/v2ray-geoip/post-install;
( echo "#!/bin/sh"; echo "[ -s "\${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; echo ". \${IPKG_INSTROOT}/lib/functions.sh"; echo 'export root="${IPKG_INSTROOT}"'; echo 'export pkgname="v2ray-geoip"'; echo "default_prerm"; [ ! -f /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/apk-all/v2ray-geoip/prerm-pkg ] || sed -z 's/^\s*#!/#!/' "/home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/apk-all/v2ray-geoip/prerm-pkg"; ) > /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/apk-all/v2ray-geoip/pre-deinstall;
[ ! -f /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/apk-all/v2ray-geoip/postrm ] || sed -zi 's/^\s*#!/#!/' "/home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/apk-all/v2ray-geoip/postrm";
if [ -n "" ]; then echo > /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/lib/apk/packages/v2ray-geoip.rusers; fi;
if [ -n "" ]; then echo > /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/lib/apk/packages/v2ray-geoip.alternatives; fi;
(cd /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip && find . -type f,l -printf "/%P\n" > /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/lib/apk/packages/v2ray-geoip.list)
# Move conffiles to IDIR and build conffiles_static with csums
if [ -f /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/apk-all/v2ray-geoip/conffiles ]; then mv -f /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/apk-all/v2ray-geoip/conffiles /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/lib/apk/packages/v2ray-geoip.conffiles; for file in $(cat /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/lib/apk/packages/v2ray-geoip.conffiles); do [ -f /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/$file ] || continue; csum=$(/home/destoryg/immortalwrt/staging_dir/host/bin/mkhash sha256 /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/$file); echo $file $csum >> /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/lib/apk/packages/v2ray-geoip.conffiles_static; done; fi
# Some package (base-files) manually append stuff to conffiles
# Append stuff from it and delete the CONTROL directory since everything else should be migrated
if [ -f /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/CONTROL/conffiles ]; then echo $(IDIR_v2ray-geoip)/CONTROL/conffiles >> /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/lib/apk/packages/v2ray-geoip.conffiles; for file in $(cat /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/CONTROL/conffiles); do [ -f /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/$file ] || continue; csum=$(/home/destoryg/immortalwrt/staging_dir/host/bin/mkhash sha256 /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/$file); echo $file $csum >> /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/lib/apk/packages/v2ray-geoip.conffiles_static; done; rm -rf /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/CONTROL/conffiles; fi
if [ -z "$(ls -A /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/CONTROL 2>/dev/null)" ]; then rm -rf /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/CONTROL; else echo "CONTROL directory /home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip/CONTROL is not empty! This is not right and should be checked!" >&2; exit 1; fi
/home/destoryg/immortalwrt/staging_dir/host/bin/fakeroot /home/destoryg/immortalwrt/staging_dir/host/bin/apk mkpkg --info "name:v2ray-geoip" --info "version:202501190004-1" --info "description:GeoIP List for V2Ray" --info "arch:noarch" --info "license:CC-BY-SA-4.0" --info "origin:feeds/small/v2ray-geodata" --info "url:https://www.v2fly.org" --info "maintainer:Tianling Shen <[email protected]>" --info "provides:" --script "post-install:/home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/apk-all/v2ray-geoip/post-install" --script "pre-deinstall:/home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/apk-all/v2ray-geoip/pre-deinstall" --info "depends:libc" --files "/home/destoryg/immortalwrt/build_dir/target-mipsel_24kc_musl/v2ray-geodata/ipkg-all/v2ray-geoip" --output "/home/destoryg/immortalwrt/bin/packages/mipsel_24kc/small/v2ray-geoip-202501190004-1.apk" --sign "/home/destoryg/immortalwrt/private-key.pem"
ERROR: info field 'version' has invalid value: package version is invalid
ERROR: failed to create package: /home/destoryg/immortalwrt/bin/packages/mipsel_24kc/small/v2ray-geoip-202501190004-1.apk: package version is invalid
make[3]: *** [Makefile:132: /home/destoryg/immortalwrt/bin/packages/mipsel_24kc/small/v2ray-geoip-202501190004-1.apk] Error 99
make[3]: Leaving directory '/home/destoryg/immortalwrt/feeds/small/v2ray-geodata'
time: package/feeds/small/v2ray-geodata/compile#0.11#1.47#2.43
ERROR: package/feeds/small/v2ray-geodata failed to build.
make[2]: *** [package/Makefile:185: package/feeds/small/v2ray-geodata/compile] Error 1
make[2]: Leaving directory '/home/destoryg/immortalwrt'
make[1]: *** [package/Makefile:179: /home/destoryg/immortalwrt/staging_dir/target-mipsel_24kc_musl/stamp/.package_compile] Error 2
make[1]: Leaving directory '/home/destoryg/immortalwrt'
make: *** [/home/destoryg/immortalwrt/include/toplevel.mk:233: world] Error 2
大佬,是怎么使用 immortalwrt源码编译的?
这个我也遇到了
问题在于 v2ray-geodata 使用的版本号格式不符合 apk 的要求, 于是无法通过编译. 在 Global Build Settings 中取消选择 Use APK instead of OPKG to build distribution 可以避免这个问题. 但值得注意的是 opkg 已经被 openwwrt 弃用.
https://github.com/kenzok8/small/blob/1002cc3f013464985d28fe74e16590dd5a204558/v2ray-geodata/Makefile#L50-L70
三处 VERSION 格式不对,应参照 openwrt/immortalwrt 改成这样:VERSION:=$(GEOIP_VER)-r$(PKG_RELEASE) @kenzok8
修改 v2fly 的代码毫无逻辑 @Orion-zhen
@MkQtS 所以应该是在这个仓库的 makefile 里动吗?
define Package/v2ray-geodata/template
SECTION:=net
CATEGORY:=Network
SUBMENU:=IP Addresses and Names
+ VERSION:=$(GEOSITE_VER)-r$(PKG_RELEASE)
URL:=https://www.v2fly.org
PKGARCH:=all
endef
我在 immortalwrt 里交 issue, 那边的维护者说引入第三方库与 immortalwrt 无关, 我就尝试去找原始仓库了. 我对这块不是很熟, 如果你知道怎么改的话能麻烦开个 PR 修了这个 bug 吗?
所以应该是在这个仓库的 makefile 里动吗?
是的,因为是这个仓库的 v2ray-geodata Makefile 有问题,APK 不喜欢这个版本号格式
openwrt/immortalwrt 本来就有 v2ray-geodata,不需要为了这个包引入此仓库
没有开 PR 的打算,不知道为什么这个 makefile 是从上游抄过来的但没有跟进格式变化,不清楚会不会有其他的奇妙影响
非要用 openwrt/immortalwrt 编译这里的 v2ray-geodata 的话,如上所述 makefile 加三个 r 就行了