diff --git a/.direnv/flake-inputs/6pakgwxwz07gifgrzgckj6730qmk9k1g-source b/.direnv/flake-inputs/6pakgwxwz07gifgrzgckj6730qmk9k1g-source new file mode 120000 index 0000000..f4a8732 --- /dev/null +++ b/.direnv/flake-inputs/6pakgwxwz07gifgrzgckj6730qmk9k1g-source @@ -0,0 +1 @@ +/nix/store/6pakgwxwz07gifgrzgckj6730qmk9k1g-source \ No newline at end of file diff --git a/.direnv/flake-inputs/ffng591v1gyq3k1f2q43mxrlrsc5by00-source b/.direnv/flake-inputs/ffng591v1gyq3k1f2q43mxrlrsc5by00-source new file mode 120000 index 0000000..f464892 --- /dev/null +++ b/.direnv/flake-inputs/ffng591v1gyq3k1f2q43mxrlrsc5by00-source @@ -0,0 +1 @@ +/nix/store/ffng591v1gyq3k1f2q43mxrlrsc5by00-source \ No newline at end of file diff --git a/.direnv/flake-inputs/zj9y21aivdlpzbjhlpqnf2cpnrffzpk7-source b/.direnv/flake-inputs/zj9y21aivdlpzbjhlpqnf2cpnrffzpk7-source new file mode 120000 index 0000000..35ffb89 --- /dev/null +++ b/.direnv/flake-inputs/zj9y21aivdlpzbjhlpqnf2cpnrffzpk7-source @@ -0,0 +1 @@ +/nix/store/zj9y21aivdlpzbjhlpqnf2cpnrffzpk7-source \ No newline at end of file diff --git a/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa b/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa new file mode 120000 index 0000000..a460e0f --- /dev/null +++ b/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa @@ -0,0 +1 @@ +/nix/store/4nf54nsz3nfa9yaxv7lig5ra446577wx-nix-shell-env \ No newline at end of file diff --git a/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc b/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc new file mode 100644 index 0000000..4b80f67 --- /dev/null +++ b/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc @@ -0,0 +1,1997 @@ +unset shellHook +nix_saved_PATH="$PATH" +ANDROID_AVD_HOME='/nix/store/ffng591v1gyq3k1f2q43mxrlrsc5by00-source/.android/avd' +export ANDROID_AVD_HOME +ANDROID_HOME='/nix/store/jjr6xjlpcx19fbf0jjq2d0034j7aarnb-androidsdk/libexec/android-sdk' +export ANDROID_HOME +AR='ar' +export AR +AR_FOR_TARGET='ar' +export AR_FOR_TARGET +AS='as' +export AS +AS_FOR_TARGET='as' +export AS_FOR_TARGET +BASH='/nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16/bin/bash' +CC='gcc' +export CC +CC_FOR_TARGET='clang' +export CC_FOR_TARGET +CLASSPATH='' +export CLASSPATH +CMAKE_INCLUDE_PATH='/nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7/include:/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/include:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/include:/nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev/include:/nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev/include:/nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/include:/nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev/include:/nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev/include:/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/include:/nix/store/3idrdw9wm55dapgfy9dqicpsfnl4zw08-glibc-iconv-2.34/include:/nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/include:/nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev/include:/nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/include:/nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev/include:/nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/include:/nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/include:/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/include:/nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev/include:/nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5/include:/nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev/include:/nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev/include:/nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev/include:/nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev/include:/nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev/include:/nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev/include:/nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev/include:/nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev/include:/nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/include:/nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev/include:/nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev/include:/nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev/include:/nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/include:/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/include:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/include:/nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0/include:/nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev/include:/nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev/include:/nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev/include:/nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev/include:/nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev/include:/nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev/include:/nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev/include:/nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev/include:/nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/include:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/include:/nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev/include:/nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev/include:/nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev/include:/nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/include:/nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev/include:/nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/include:/nix/store/x8l8s0zzmzg7ydwzvndn81ir33z89gn6-compiler-rt-libc-11.1.0-dev/include:/nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7/include:/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/include:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/include:/nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev/include:/nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev/include:/nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/include:/nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev/include:/nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev/include:/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/include:/nix/store/3idrdw9wm55dapgfy9dqicpsfnl4zw08-glibc-iconv-2.34/include:/nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/include:/nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev/include:/nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/include:/nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev/include:/nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/include:/nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/include:/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/include:/nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev/include:/nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5/include:/nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev/include:/nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev/include:/nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev/include:/nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev/include:/nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev/include:/nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev/include:/nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev/include:/nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev/include:/nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/include:/nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev/include:/nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev/include:/nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev/include:/nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/include:/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/include:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/include:/nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0/include:/nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev/include:/nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev/include:/nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev/include:/nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev/include:/nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev/include:/nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev/include:/nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev/include:/nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev/include:/nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/include:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/include:/nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev/include:/nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev/include:/nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev/include:/nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/include:/nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev/include:/nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/include:/nix/store/x8l8s0zzmzg7ydwzvndn81ir33z89gn6-compiler-rt-libc-11.1.0-dev/include' +export CMAKE_INCLUDE_PATH +CMAKE_LIBRARY_PATH='/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/lib:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/lib:/nix/store/vdyarq02kn92wvljax1m1gd092ryfli7-jq-1.6-lib/lib:/nix/store/j5jxw3iy7bbz4a57fh9g2xm2gxmyal8h-zlib-1.2.12/lib:/nix/store/zf2p161nx09fkd36g79b0xv7srcc1av1-libffi-3.4.2/lib:/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/lib:/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0/lib:/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0/lib:/nix/store/vgw0mw7s490428lzgswl1cxj4xmlf5gn-bzip2-1.0.6.0.2/lib:/nix/store/hyh1whmci39mv1hd6gr8nnhxva0c2rvm-libpng-apng-1.6.37/lib:/nix/store/9kpdwg8rjdizjkqbf6jj96w2jmcfhcad-freetype-2.11.1/lib:/nix/store/zcjja5yd97dgnnh3qwanbsra8xsavcgw-fontconfig-2.13.94-lib/lib:/nix/store/sw3dj5k1sas1jckb750z3rd9ay8pxq2h-expat-2.4.7/lib:/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/lib:/nix/store/b38zsh4qgfj60fjlpg6m9v29bcp09abk-libXau-1.0.9/lib:/nix/store/fmbay7w2i0qg57jcdzij3v0lzr4gpcyk-libXext-1.3.4/lib:/nix/store/3jch9iknmlz6r3m2fhhnvaqryzlh3zq4-libxcb-1.14/lib:/nix/store/0np4qysvv5v05w49bs3ii123gckd4n0b-libX11-1.7.2/lib:/nix/store/cs3m5r3f7x6ghf9xwgnmg1bzb12lqi19-libXrender-0.9.10/lib:/nix/store/cqhhah8c6rgms9wmxr9pa1wghh2smki3-xcb-util-0.4.0/lib:/nix/store/q796xg0x515ajdly44iqdvacxnprj6qx-libGL-1.4.0/lib:/nix/store/hrl51nkr7dszlwcs29wmyxq0jsqlaszn-libglvnd-1.4.0/lib:/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0/lib:/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9/lib:/nix/store/3jcj0v2a0pjfi3ydscabrv532dsg43kf-libjpeg-turbo-2.1.3/lib:/nix/store/xmhqvwkhmvc6grldj5vq43ffsahskfq0-xz-5.2.5/lib:/nix/store/nl0km2rshc71svq137kx2bv2fdjmqv56-libtiff-4.3.0/lib:/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/lib:/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/lib:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/lib:/nix/store/hs258jqx4blnk6b8zncy8k0y6l2fqkl3-libICE-1.0.10/lib:/nix/store/n7pzh8k7h5axpiqp0nvn49df4k5qqz3l-libSM-1.2.3/lib:/nix/store/dvch1l6v4gczrsgb01y3p2lpgsw36aa4-libXfixes-6.0.0/lib:/nix/store/x6332d0bxzbkscshyri8z7if4j8lrz0d-libXcomposite-0.4.5/lib:/nix/store/jg8q74faxp8xbqw5dcdw7i63h9mjkjgz-libXcursor-1.2.0/lib:/nix/store/8r67k5yn6ic2vmj5dq0d0hm4lc2br0vj-libXi-1.8/lib:/nix/store/j3hqqyqpl6zwp3dcrc6xrvdqi6p776gl-libXrandr-1.5.2/lib:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/lib:/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2/lib:/nix/store/1hyvc28l0nc25jxp0yfyrdmpqla2vx3d-libXft-2.3.4/lib:/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6/lib:/nix/store/dvv86s6ipnm6hp8fhnh2smkal4q95p45-wayland-1.20.0/lib:/nix/store/fqfk1r89lavcagxg15a8jvq63l00snsf-libXinerama-1.1.4/lib:/nix/store/nmk2zbdxsmiinqxqxzv9cfjkladq9jlx-gmp-with-cxx-6.2.1/lib:/nix/store/kal2vyxj49n0sfmf635h304hp96d81ia-cups-2.4.1-lib/lib:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/lib:/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45/lib:/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/lib:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/lib:/nix/store/vdyarq02kn92wvljax1m1gd092ryfli7-jq-1.6-lib/lib:/nix/store/j5jxw3iy7bbz4a57fh9g2xm2gxmyal8h-zlib-1.2.12/lib:/nix/store/zf2p161nx09fkd36g79b0xv7srcc1av1-libffi-3.4.2/lib:/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/lib:/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0/lib:/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0/lib:/nix/store/vgw0mw7s490428lzgswl1cxj4xmlf5gn-bzip2-1.0.6.0.2/lib:/nix/store/hyh1whmci39mv1hd6gr8nnhxva0c2rvm-libpng-apng-1.6.37/lib:/nix/store/9kpdwg8rjdizjkqbf6jj96w2jmcfhcad-freetype-2.11.1/lib:/nix/store/zcjja5yd97dgnnh3qwanbsra8xsavcgw-fontconfig-2.13.94-lib/lib:/nix/store/sw3dj5k1sas1jckb750z3rd9ay8pxq2h-expat-2.4.7/lib:/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/lib:/nix/store/b38zsh4qgfj60fjlpg6m9v29bcp09abk-libXau-1.0.9/lib:/nix/store/fmbay7w2i0qg57jcdzij3v0lzr4gpcyk-libXext-1.3.4/lib:/nix/store/3jch9iknmlz6r3m2fhhnvaqryzlh3zq4-libxcb-1.14/lib:/nix/store/0np4qysvv5v05w49bs3ii123gckd4n0b-libX11-1.7.2/lib:/nix/store/cs3m5r3f7x6ghf9xwgnmg1bzb12lqi19-libXrender-0.9.10/lib:/nix/store/cqhhah8c6rgms9wmxr9pa1wghh2smki3-xcb-util-0.4.0/lib:/nix/store/q796xg0x515ajdly44iqdvacxnprj6qx-libGL-1.4.0/lib:/nix/store/hrl51nkr7dszlwcs29wmyxq0jsqlaszn-libglvnd-1.4.0/lib:/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0/lib:/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9/lib:/nix/store/3jcj0v2a0pjfi3ydscabrv532dsg43kf-libjpeg-turbo-2.1.3/lib:/nix/store/xmhqvwkhmvc6grldj5vq43ffsahskfq0-xz-5.2.5/lib:/nix/store/nl0km2rshc71svq137kx2bv2fdjmqv56-libtiff-4.3.0/lib:/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/lib:/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/lib:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/lib:/nix/store/hs258jqx4blnk6b8zncy8k0y6l2fqkl3-libICE-1.0.10/lib:/nix/store/n7pzh8k7h5axpiqp0nvn49df4k5qqz3l-libSM-1.2.3/lib:/nix/store/dvch1l6v4gczrsgb01y3p2lpgsw36aa4-libXfixes-6.0.0/lib:/nix/store/x6332d0bxzbkscshyri8z7if4j8lrz0d-libXcomposite-0.4.5/lib:/nix/store/jg8q74faxp8xbqw5dcdw7i63h9mjkjgz-libXcursor-1.2.0/lib:/nix/store/8r67k5yn6ic2vmj5dq0d0hm4lc2br0vj-libXi-1.8/lib:/nix/store/j3hqqyqpl6zwp3dcrc6xrvdqi6p776gl-libXrandr-1.5.2/lib:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/lib:/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2/lib:/nix/store/1hyvc28l0nc25jxp0yfyrdmpqla2vx3d-libXft-2.3.4/lib:/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6/lib:/nix/store/dvv86s6ipnm6hp8fhnh2smkal4q95p45-wayland-1.20.0/lib:/nix/store/fqfk1r89lavcagxg15a8jvq63l00snsf-libXinerama-1.1.4/lib:/nix/store/nmk2zbdxsmiinqxqxzv9cfjkladq9jlx-gmp-with-cxx-6.2.1/lib:/nix/store/kal2vyxj49n0sfmf635h304hp96d81ia-cups-2.4.1-lib/lib:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/lib:/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45/lib' +export CMAKE_LIBRARY_PATH +CMAKE_PREFIX_PATH='/nix/store/6d4bp009bcmz5afl9n7w7niycqi3m0rm-patchelf-0.14.5:/nix/store/4ybkncn05qbhgbdxg9sxdgpm1jpdx76w-gcc-wrapper-10.3.0:/nix/store/c4k3fcsp5cqg9v0rpac9qbqmbkm6a7pk-binutils-wrapper-2.35.2:/nix/store/8blq2fy6y9x2ffcgr052f0abakammw0k-flutter-2.13.0-0.1.pre:/nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7:/nix/store/i8l1f18ak16jj5ar464m3myxg4hk2swa-hook:/nix/store/12msvv6k9rf9ywjpzcj502y0azsgmhp1-platform-tools-31.0.3:/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta:/nix/store/f15fzjp3g5av46d9v844nj55w60zvrzd-gitlint-0.17.0:/nix/store/wmyfippxf9sr358nvnw2l8aj35nmwx2s-python3.9-arrow-1.2.2:/nix/store/7m68x9rdv1fj8i40p7h83wcl8wbmcrff-python3.9-python-dateutil-2.8.2:/nix/store/r6j9x43wcvp79472y4kv93w23s94apy4-python3.9-six-1.16.0:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11:/nix/store/s5jwgr4qci2r1rxnylhl33qhg4qmaa20-python3.9-click-8.0.4:/nix/store/dx5grbhnlja2nhm3chszxxxmakgbqa1w-python3.9-sh-1.14.2:/nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev:/nix/store/q6ga19qfb3bk3clqan8k22jnnh8m32n5-jq-1.6-bin:/nix/store/vdyarq02kn92wvljax1m1gd092ryfli7-jq-1.6-lib:/nix/store/y1ilfhl51jr1m8y8dn2pl07703ppcadn-ripgrep-13.0.0:/nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev:/nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev:/nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev:/nix/store/j5jxw3iy7bbz4a57fh9g2xm2gxmyal8h-zlib-1.2.12:/nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev:/nix/store/zf2p161nx09fkd36g79b0xv7srcc1av1-libffi-3.4.2:/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21:/nix/store/3idrdw9wm55dapgfy9dqicpsfnl4zw08-glibc-iconv-2.34:/nix/store/xl4fcwa76r0xy59dlhjvvj7h0nl0ix84-glib-2.72.0-bin:/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0:/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0:/nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev:/nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev:/nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev:/nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev:/nix/store/9hnz235608afb1z943sh3fd21ngxa7ra-bzip2-1.0.6.0.2-bin:/nix/store/vgw0mw7s490428lzgswl1cxj4xmlf5gn-bzip2-1.0.6.0.2:/nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev:/nix/store/hyh1whmci39mv1hd6gr8nnhxva0c2rvm-libpng-apng-1.6.37:/nix/store/9kpdwg8rjdizjkqbf6jj96w2jmcfhcad-freetype-2.11.1:/nix/store/r4aknngzmydzd6dql0ys0lj03cvmcyfk-fontconfig-2.13.94-bin:/nix/store/zcjja5yd97dgnnh3qwanbsra8xsavcgw-fontconfig-2.13.94-lib:/nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev:/nix/store/sw3dj5k1sas1jckb750z3rd9ay8pxq2h-expat-2.4.7:/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4:/nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev:/nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5:/nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev:/nix/store/b38zsh4qgfj60fjlpg6m9v29bcp09abk-libXau-1.0.9:/nix/store/fmbay7w2i0qg57jcdzij3v0lzr4gpcyk-libXext-1.3.4:/nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev:/nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev:/nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev:/nix/store/3jch9iknmlz6r3m2fhhnvaqryzlh3zq4-libxcb-1.14:/nix/store/0np4qysvv5v05w49bs3ii123gckd4n0b-libX11-1.7.2:/nix/store/cs3m5r3f7x6ghf9xwgnmg1bzb12lqi19-libXrender-0.9.10:/nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev:/nix/store/cqhhah8c6rgms9wmxr9pa1wghh2smki3-xcb-util-0.4.0:/nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev:/nix/store/q796xg0x515ajdly44iqdvacxnprj6qx-libGL-1.4.0:/nix/store/hrl51nkr7dszlwcs29wmyxq0jsqlaszn-libglvnd-1.4.0:/nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev:/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0:/nix/store/58rj9srjk7m4hamw7jlf6i4vlvgv1mv6-clang-wrapper-11.1.0:/nix/store/5nhxhpqsd2wzzlcdkj61rspvxxmnqp2k-binutils-wrapper-2.35.2:/nix/store/jlqvmjzwpxqfghhn1k3kc07ssga2zm0f-cmake-3.22.3:/nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev:/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9:/nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev:/nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev:/nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev:/nix/store/hj59ddxmjx7f41qwzwkbigrfyxzyb4ci-libjpeg-turbo-2.1.3-bin:/nix/store/3jcj0v2a0pjfi3ydscabrv532dsg43kf-libjpeg-turbo-2.1.3:/nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev:/nix/store/74vm0qblviq2rjjyhb26n017wzam1c9b-xz-5.2.5-bin:/nix/store/xmhqvwkhmvc6grldj5vq43ffsahskfq0-xz-5.2.5:/nix/store/9lrz8brsphinnzyg3ws6gfkbxpivr0n5-libtiff-4.3.0-bin:/nix/store/nl0km2rshc71svq137kx2bv2fdjmqv56-libtiff-4.3.0:/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8:/nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev:/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11:/nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0:/nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev:/nix/store/hs258jqx4blnk6b8zncy8k0y6l2fqkl3-libICE-1.0.10:/nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev:/nix/store/n7pzh8k7h5axpiqp0nvn49df4k5qqz3l-libSM-1.2.3:/nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev:/nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev:/nix/store/dvch1l6v4gczrsgb01y3p2lpgsw36aa4-libXfixes-6.0.0:/nix/store/x6332d0bxzbkscshyri8z7if4j8lrz0d-libXcomposite-0.4.5:/nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev:/nix/store/jg8q74faxp8xbqw5dcdw7i63h9mjkjgz-libXcursor-1.2.0:/nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev:/nix/store/8r67k5yn6ic2vmj5dq0d0hm4lc2br0vj-libXi-1.8:/nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev:/nix/store/j3hqqyqpl6zwp3dcrc6xrvdqi6p776gl-libXrandr-1.5.2:/nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev:/nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14:/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2:/nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev:/nix/store/1hyvc28l0nc25jxp0yfyrdmpqla2vx3d-libXft-2.3.4:/nix/store/9wsylssmyb6w9bwd2wmzpzhj85llvrld-pango-1.50.6-bin:/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6:/nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev:/nix/store/ykk7ngn81vhihs5gvz3g6xnimyzih8da-wayland-1.20.0-bin:/nix/store/dvv86s6ipnm6hp8fhnh2smkal4q95p45-wayland-1.20.0:/nix/store/nrhjz3m3wmnay297z456mpp5jfjh6a49-wayland-protocols-1.25:/nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev:/nix/store/fqfk1r89lavcagxg15a8jvq63l00snsf-libXinerama-1.1.4:/nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev:/nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev:/nix/store/nmk2zbdxsmiinqxqxzv9cfjkladq9jlx-gmp-with-cxx-6.2.1:/nix/store/kal2vyxj49n0sfmf635h304hp96d81ia-cups-2.4.1-lib:/nix/store/fxbxcv4swqp7rjv39bq6wknyg51lyzq9-cups-2.4.1:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33:/nix/store/ix08ss2s3shjya9cq7jmj1czwglfz366-ninja-1.10.2:/nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev:/nix/store/4wqmz2ayiibvkc36dc91kdgmj4l02bdh-pcre-8.45-bin:/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45:/nix/store/l8k4yxyyg2vym5vi8mxzmzpabcwz444p-pkg-config-wrapper-0.29.2:/nix/store/x8l8s0zzmzg7ydwzvndn81ir33z89gn6-compiler-rt-libc-11.1.0-dev:/nix/store/r9zfl37l5dsr8kfypian6w1vamcdngva-compiler-rt-libc-11.1.0' +export CMAKE_PREFIX_PATH +CONFIG_SHELL='/nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16/bin/bash' +export CONFIG_SHELL +CPATH='/nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev/include:/nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5/include' +export CPATH +CXX='g++' +export CXX +CXX_FOR_TARGET='clang++' +export CXX_FOR_TARGET +DETERMINISTIC_BUILD='1' +export DETERMINISTIC_BUILD +EPOCHREALTIME='1651232779.558632' +EPOCHSECONDS='1651232779' +GDK_PIXBUF_MODULE_FILE='/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache' +export GDK_PIXBUF_MODULE_FILE +GETTEXTDATADIRS='/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/share/gettext:/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0/share/gettext:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/share/gettext' +export GETTEXTDATADIRS +GSETTINGS_SCHEMAS_PATH='/nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0/share/gsettings-schemas/gsettings-desktop-schemas-42.0:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/share/gsettings-schemas/gtk+3-3.24.33' +export GSETTINGS_SCHEMAS_PATH +HOSTTYPE='x86_64' +HOST_PATH='/nix/store/8blq2fy6y9x2ffcgr052f0abakammw0k-flutter-2.13.0-0.1.pre/bin:/nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7/bin:/nix/store/12msvv6k9rf9ywjpzcj502y0azsgmhp1-platform-tools-31.0.3/bin:/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/bin:/nix/store/f15fzjp3g5av46d9v844nj55w60zvrzd-gitlint-0.17.0/bin:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/bin:/nix/store/q6ga19qfb3bk3clqan8k22jnnh8m32n5-jq-1.6-bin/bin:/nix/store/y1ilfhl51jr1m8y8dn2pl07703ppcadn-ripgrep-13.0.0/bin:/nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/bin:/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/bin:/nix/store/xl4fcwa76r0xy59dlhjvvj7h0nl0ix84-glib-2.72.0-bin/bin:/nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/bin:/nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/bin:/nix/store/9hnz235608afb1z943sh3fd21ngxa7ra-bzip2-1.0.6.0.2-bin/bin:/nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/bin:/nix/store/r4aknngzmydzd6dql0ys0lj03cvmcyfk-fontconfig-2.13.94-bin/bin:/nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/bin:/nix/store/58rj9srjk7m4hamw7jlf6i4vlvgv1mv6-clang-wrapper-11.1.0/bin:/nix/store/5nhxhpqsd2wzzlcdkj61rspvxxmnqp2k-binutils-wrapper-2.35.2/bin:/nix/store/jlqvmjzwpxqfghhn1k3kc07ssga2zm0f-cmake-3.22.3/bin:/nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/bin:/nix/store/hj59ddxmjx7f41qwzwkbigrfyxzyb4ci-libjpeg-turbo-2.1.3-bin/bin:/nix/store/74vm0qblviq2rjjyhb26n017wzam1c9b-xz-5.2.5-bin/bin:/nix/store/9lrz8brsphinnzyg3ws6gfkbxpivr0n5-libtiff-4.3.0-bin/bin:/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/bin:/nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/bin:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/bin:/nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/bin:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/bin:/nix/store/9wsylssmyb6w9bwd2wmzpzhj85llvrld-pango-1.50.6-bin/bin:/nix/store/ykk7ngn81vhihs5gvz3g6xnimyzih8da-wayland-1.20.0-bin/bin:/nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/bin:/nix/store/fxbxcv4swqp7rjv39bq6wknyg51lyzq9-cups-2.4.1/bin:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/bin:/nix/store/ix08ss2s3shjya9cq7jmj1czwglfz366-ninja-1.10.2/bin:/nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/bin:/nix/store/4wqmz2ayiibvkc36dc91kdgmj4l02bdh-pcre-8.45-bin/bin:/nix/store/l8k4yxyyg2vym5vi8mxzmzpabcwz444p-pkg-config-wrapper-0.29.2/bin:/nix/store/mi38zzxcylfc1jwnbbjyln959k1yjl9b-coreutils-9.0/bin:/nix/store/g2ax8hr2vcv74ymdi9i0z898zgwv5qck-findutils-4.9.0/bin:/nix/store/y01pvic7xsg3q05fynbh6mb1d4vqk5bf-diffutils-3.8/bin:/nix/store/4w3fd4s7l967bdplcqn74bf3iq45h4f8-gnused-4.8/bin:/nix/store/pa1hxz0q46giv9zw1bi4205hgzkjnz17-gnugrep-3.7/bin:/nix/store/8cm5s7jjqh2r16bx36shsizpm49mq9hk-gawk-5.1.1/bin:/nix/store/82z93m4mv563fj3m2j9d61cabvidx703-gnutar-1.34/bin:/nix/store/fsfnkwpydb6pb0sdri12fpiynjprczyq-gzip-1.12/bin:/nix/store/9hnz235608afb1z943sh3fd21ngxa7ra-bzip2-1.0.6.0.2-bin/bin:/nix/store/laascnf607s0p98q6n1kk4r0r9922c4l-gnumake-4.3/bin:/nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16/bin:/nix/store/8xlgg9jl10gf1mv5mx459wr7x1wpnsnq-patch-2.7.6/bin:/nix/store/74vm0qblviq2rjjyhb26n017wzam1c9b-xz-5.2.5-bin/bin' +export HOST_PATH +IFS=' +' +IN_NIX_SHELL='impure' +export IN_NIX_SHELL +JAVA_HOME='/nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7' +export JAVA_HOME +LD='ld' +export LD +LD_FOR_TARGET='ld' +export LD_FOR_TARGET +LD_LIBRARY_PATH='/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0/lib:/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0/lib:/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9/lib:/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/lib:/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0/lib:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/lib:/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2/lib:/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6/lib' +export LD_LIBRARY_PATH +LINENO='73' +MACHTYPE='x86_64-pc-linux-gnu' +NIX_BINTOOLS='/nix/store/c4k3fcsp5cqg9v0rpac9qbqmbkm6a7pk-binutils-wrapper-2.35.2' +export NIX_BINTOOLS +NIX_BINTOOLS_FOR_TARGET='/nix/store/5nhxhpqsd2wzzlcdkj61rspvxxmnqp2k-binutils-wrapper-2.35.2' +export NIX_BINTOOLS_FOR_TARGET +NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +NIX_BINTOOLS_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu='1' +export NIX_BINTOOLS_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu +NIX_BUILD_CORES='8' +export NIX_BUILD_CORES +NIX_CC='/nix/store/4ybkncn05qbhgbdxg9sxdgpm1jpdx76w-gcc-wrapper-10.3.0' +export NIX_CC +NIX_CC_FOR_TARGET='/nix/store/58rj9srjk7m4hamw7jlf6i4vlvgv1mv6-clang-wrapper-11.1.0' +export NIX_CC_FOR_TARGET +NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +NIX_CC_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu='1' +export NIX_CC_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu +NIX_CFLAGS_COMPILE=' -frandom-seed=4nf54nsz3n -isystem /nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7/include -isystem /nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/include -isystem /nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/include -isystem /nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev/include -isystem /nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev/include -isystem /nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/include -isystem /nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev/include -isystem /nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev/include -isystem /nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/include -isystem /nix/store/3idrdw9wm55dapgfy9dqicpsfnl4zw08-glibc-iconv-2.34/include -isystem /nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/include -isystem /nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev/include -isystem /nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/include -isystem /nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev/include -isystem /nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/include -isystem /nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/include -isystem /nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/include -isystem /nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev/include -isystem /nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5/include -isystem /nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev/include -isystem /nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev/include -isystem /nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev/include -isystem /nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev/include -isystem /nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev/include -isystem /nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev/include -isystem /nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev/include -isystem /nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev/include -isystem /nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/include -isystem /nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev/include -isystem /nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev/include -isystem /nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev/include -isystem /nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/include -isystem /nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/include -isystem /nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/include -isystem /nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0/include -isystem /nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev/include -isystem /nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev/include -isystem /nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev/include -isystem /nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev/include -isystem /nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev/include -isystem /nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev/include -isystem /nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev/include -isystem /nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev/include -isystem /nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/include -isystem /nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/include -isystem /nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev/include -isystem /nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev/include -isystem /nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev/include -isystem /nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/include -isystem /nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev/include -isystem /nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/include -isystem /nix/store/x8l8s0zzmzg7ydwzvndn81ir33z89gn6-compiler-rt-libc-11.1.0-dev/include -isystem /nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7/include -isystem /nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/include -isystem /nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/include -isystem /nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev/include -isystem /nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev/include -isystem /nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/include -isystem /nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev/include -isystem /nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev/include -isystem /nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/include -isystem /nix/store/3idrdw9wm55dapgfy9dqicpsfnl4zw08-glibc-iconv-2.34/include -isystem /nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/include -isystem /nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev/include -isystem /nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/include -isystem /nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev/include -isystem /nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/include -isystem /nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/include -isystem /nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/include -isystem /nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev/include -isystem /nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5/include -isystem /nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev/include -isystem /nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev/include -isystem /nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev/include -isystem /nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev/include -isystem /nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev/include -isystem /nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev/include -isystem /nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev/include -isystem /nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev/include -isystem /nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/include -isystem /nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev/include -isystem /nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev/include -isystem /nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev/include -isystem /nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/include -isystem /nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/include -isystem /nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/include -isystem /nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0/include -isystem /nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev/include -isystem /nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev/include -isystem /nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev/include -isystem /nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev/include -isystem /nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev/include -isystem /nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev/include -isystem /nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev/include -isystem /nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev/include -isystem /nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/include -isystem /nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/include -isystem /nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev/include -isystem /nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev/include -isystem /nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev/include -isystem /nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/include -isystem /nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev/include -isystem /nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/include -isystem /nix/store/x8l8s0zzmzg7ydwzvndn81ir33z89gn6-compiler-rt-libc-11.1.0-dev/include' +export NIX_CFLAGS_COMPILE +NIX_CFLAGS_COMPILE_FOR_TARGET=' -isystem /nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7/include -isystem /nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/include -isystem /nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/include -isystem /nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev/include -isystem /nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev/include -isystem /nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/include -isystem /nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev/include -isystem /nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev/include -isystem /nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/include -isystem /nix/store/3idrdw9wm55dapgfy9dqicpsfnl4zw08-glibc-iconv-2.34/include -isystem /nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/include -isystem /nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev/include -isystem /nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/include -isystem /nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev/include -isystem /nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/include -isystem /nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/include -isystem /nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/include -isystem /nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev/include -isystem /nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5/include -isystem /nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev/include -isystem /nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev/include -isystem /nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev/include -isystem /nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev/include -isystem /nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev/include -isystem /nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev/include -isystem /nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev/include -isystem /nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev/include -isystem /nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/include -isystem /nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev/include -isystem /nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev/include -isystem /nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev/include -isystem /nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/include -isystem /nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/include -isystem /nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/include -isystem /nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0/include -isystem /nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev/include -isystem /nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev/include -isystem /nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev/include -isystem /nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev/include -isystem /nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev/include -isystem /nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev/include -isystem /nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev/include -isystem /nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev/include -isystem /nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/include -isystem /nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/include -isystem /nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev/include -isystem /nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev/include -isystem /nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev/include -isystem /nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/include -isystem /nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev/include -isystem /nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/include -isystem /nix/store/x8l8s0zzmzg7ydwzvndn81ir33z89gn6-compiler-rt-libc-11.1.0-dev/include' +export NIX_CFLAGS_COMPILE_FOR_TARGET +NIX_ENFORCE_NO_NATIVE='1' +export NIX_ENFORCE_NO_NATIVE +NIX_HARDENING_ENABLE='fortify stackprotector pic strictoverflow format relro bindnow' +export NIX_HARDENING_ENABLE +NIX_INDENT_MAKE='1' +export NIX_INDENT_MAKE +NIX_LDFLAGS='-rpath /home/alexander/Development/Personal/Android/moxdns/outputs/out/lib64 -rpath /home/alexander/Development/Personal/Android/moxdns/outputs/out/lib -L/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/lib -L/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/lib -L/nix/store/vdyarq02kn92wvljax1m1gd092ryfli7-jq-1.6-lib/lib -L/nix/store/j5jxw3iy7bbz4a57fh9g2xm2gxmyal8h-zlib-1.2.12/lib -L/nix/store/zf2p161nx09fkd36g79b0xv7srcc1av1-libffi-3.4.2/lib -L/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/lib -L/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0/lib -L/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0/lib -L/nix/store/vgw0mw7s490428lzgswl1cxj4xmlf5gn-bzip2-1.0.6.0.2/lib -L/nix/store/hyh1whmci39mv1hd6gr8nnhxva0c2rvm-libpng-apng-1.6.37/lib -L/nix/store/9kpdwg8rjdizjkqbf6jj96w2jmcfhcad-freetype-2.11.1/lib -L/nix/store/zcjja5yd97dgnnh3qwanbsra8xsavcgw-fontconfig-2.13.94-lib/lib -L/nix/store/sw3dj5k1sas1jckb750z3rd9ay8pxq2h-expat-2.4.7/lib -L/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/lib -L/nix/store/b38zsh4qgfj60fjlpg6m9v29bcp09abk-libXau-1.0.9/lib -L/nix/store/fmbay7w2i0qg57jcdzij3v0lzr4gpcyk-libXext-1.3.4/lib -L/nix/store/3jch9iknmlz6r3m2fhhnvaqryzlh3zq4-libxcb-1.14/lib -L/nix/store/0np4qysvv5v05w49bs3ii123gckd4n0b-libX11-1.7.2/lib -L/nix/store/cs3m5r3f7x6ghf9xwgnmg1bzb12lqi19-libXrender-0.9.10/lib -L/nix/store/cqhhah8c6rgms9wmxr9pa1wghh2smki3-xcb-util-0.4.0/lib -L/nix/store/q796xg0x515ajdly44iqdvacxnprj6qx-libGL-1.4.0/lib -L/nix/store/hrl51nkr7dszlwcs29wmyxq0jsqlaszn-libglvnd-1.4.0/lib -L/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0/lib -L/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9/lib -L/nix/store/3jcj0v2a0pjfi3ydscabrv532dsg43kf-libjpeg-turbo-2.1.3/lib -L/nix/store/xmhqvwkhmvc6grldj5vq43ffsahskfq0-xz-5.2.5/lib -L/nix/store/nl0km2rshc71svq137kx2bv2fdjmqv56-libtiff-4.3.0/lib -L/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/lib -L/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/lib -L/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/lib -L/nix/store/hs258jqx4blnk6b8zncy8k0y6l2fqkl3-libICE-1.0.10/lib -L/nix/store/n7pzh8k7h5axpiqp0nvn49df4k5qqz3l-libSM-1.2.3/lib -L/nix/store/dvch1l6v4gczrsgb01y3p2lpgsw36aa4-libXfixes-6.0.0/lib -L/nix/store/x6332d0bxzbkscshyri8z7if4j8lrz0d-libXcomposite-0.4.5/lib -L/nix/store/jg8q74faxp8xbqw5dcdw7i63h9mjkjgz-libXcursor-1.2.0/lib -L/nix/store/8r67k5yn6ic2vmj5dq0d0hm4lc2br0vj-libXi-1.8/lib -L/nix/store/j3hqqyqpl6zwp3dcrc6xrvdqi6p776gl-libXrandr-1.5.2/lib -L/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/lib -L/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2/lib -L/nix/store/1hyvc28l0nc25jxp0yfyrdmpqla2vx3d-libXft-2.3.4/lib -L/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6/lib -L/nix/store/dvv86s6ipnm6hp8fhnh2smkal4q95p45-wayland-1.20.0/lib -L/nix/store/fqfk1r89lavcagxg15a8jvq63l00snsf-libXinerama-1.1.4/lib -L/nix/store/nmk2zbdxsmiinqxqxzv9cfjkladq9jlx-gmp-with-cxx-6.2.1/lib -L/nix/store/kal2vyxj49n0sfmf635h304hp96d81ia-cups-2.4.1-lib/lib -L/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/lib -L/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45/lib -L/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/lib -L/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/lib -L/nix/store/vdyarq02kn92wvljax1m1gd092ryfli7-jq-1.6-lib/lib -L/nix/store/j5jxw3iy7bbz4a57fh9g2xm2gxmyal8h-zlib-1.2.12/lib -L/nix/store/zf2p161nx09fkd36g79b0xv7srcc1av1-libffi-3.4.2/lib -L/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/lib -L/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0/lib -L/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0/lib -L/nix/store/vgw0mw7s490428lzgswl1cxj4xmlf5gn-bzip2-1.0.6.0.2/lib -L/nix/store/hyh1whmci39mv1hd6gr8nnhxva0c2rvm-libpng-apng-1.6.37/lib -L/nix/store/9kpdwg8rjdizjkqbf6jj96w2jmcfhcad-freetype-2.11.1/lib -L/nix/store/zcjja5yd97dgnnh3qwanbsra8xsavcgw-fontconfig-2.13.94-lib/lib -L/nix/store/sw3dj5k1sas1jckb750z3rd9ay8pxq2h-expat-2.4.7/lib -L/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/lib -L/nix/store/b38zsh4qgfj60fjlpg6m9v29bcp09abk-libXau-1.0.9/lib -L/nix/store/fmbay7w2i0qg57jcdzij3v0lzr4gpcyk-libXext-1.3.4/lib -L/nix/store/3jch9iknmlz6r3m2fhhnvaqryzlh3zq4-libxcb-1.14/lib -L/nix/store/0np4qysvv5v05w49bs3ii123gckd4n0b-libX11-1.7.2/lib -L/nix/store/cs3m5r3f7x6ghf9xwgnmg1bzb12lqi19-libXrender-0.9.10/lib -L/nix/store/cqhhah8c6rgms9wmxr9pa1wghh2smki3-xcb-util-0.4.0/lib -L/nix/store/q796xg0x515ajdly44iqdvacxnprj6qx-libGL-1.4.0/lib -L/nix/store/hrl51nkr7dszlwcs29wmyxq0jsqlaszn-libglvnd-1.4.0/lib -L/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0/lib -L/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9/lib -L/nix/store/3jcj0v2a0pjfi3ydscabrv532dsg43kf-libjpeg-turbo-2.1.3/lib -L/nix/store/xmhqvwkhmvc6grldj5vq43ffsahskfq0-xz-5.2.5/lib -L/nix/store/nl0km2rshc71svq137kx2bv2fdjmqv56-libtiff-4.3.0/lib -L/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/lib -L/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/lib -L/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/lib -L/nix/store/hs258jqx4blnk6b8zncy8k0y6l2fqkl3-libICE-1.0.10/lib -L/nix/store/n7pzh8k7h5axpiqp0nvn49df4k5qqz3l-libSM-1.2.3/lib -L/nix/store/dvch1l6v4gczrsgb01y3p2lpgsw36aa4-libXfixes-6.0.0/lib -L/nix/store/x6332d0bxzbkscshyri8z7if4j8lrz0d-libXcomposite-0.4.5/lib -L/nix/store/jg8q74faxp8xbqw5dcdw7i63h9mjkjgz-libXcursor-1.2.0/lib -L/nix/store/8r67k5yn6ic2vmj5dq0d0hm4lc2br0vj-libXi-1.8/lib -L/nix/store/j3hqqyqpl6zwp3dcrc6xrvdqi6p776gl-libXrandr-1.5.2/lib -L/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/lib -L/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2/lib -L/nix/store/1hyvc28l0nc25jxp0yfyrdmpqla2vx3d-libXft-2.3.4/lib -L/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6/lib -L/nix/store/dvv86s6ipnm6hp8fhnh2smkal4q95p45-wayland-1.20.0/lib -L/nix/store/fqfk1r89lavcagxg15a8jvq63l00snsf-libXinerama-1.1.4/lib -L/nix/store/nmk2zbdxsmiinqxqxzv9cfjkladq9jlx-gmp-with-cxx-6.2.1/lib -L/nix/store/kal2vyxj49n0sfmf635h304hp96d81ia-cups-2.4.1-lib/lib -L/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/lib -L/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45/lib' +export NIX_LDFLAGS +NIX_LDFLAGS_FOR_TARGET=' -L/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/lib -L/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/lib -L/nix/store/vdyarq02kn92wvljax1m1gd092ryfli7-jq-1.6-lib/lib -L/nix/store/j5jxw3iy7bbz4a57fh9g2xm2gxmyal8h-zlib-1.2.12/lib -L/nix/store/zf2p161nx09fkd36g79b0xv7srcc1av1-libffi-3.4.2/lib -L/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/lib -L/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0/lib -L/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0/lib -L/nix/store/vgw0mw7s490428lzgswl1cxj4xmlf5gn-bzip2-1.0.6.0.2/lib -L/nix/store/hyh1whmci39mv1hd6gr8nnhxva0c2rvm-libpng-apng-1.6.37/lib -L/nix/store/9kpdwg8rjdizjkqbf6jj96w2jmcfhcad-freetype-2.11.1/lib -L/nix/store/zcjja5yd97dgnnh3qwanbsra8xsavcgw-fontconfig-2.13.94-lib/lib -L/nix/store/sw3dj5k1sas1jckb750z3rd9ay8pxq2h-expat-2.4.7/lib -L/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/lib -L/nix/store/b38zsh4qgfj60fjlpg6m9v29bcp09abk-libXau-1.0.9/lib -L/nix/store/fmbay7w2i0qg57jcdzij3v0lzr4gpcyk-libXext-1.3.4/lib -L/nix/store/3jch9iknmlz6r3m2fhhnvaqryzlh3zq4-libxcb-1.14/lib -L/nix/store/0np4qysvv5v05w49bs3ii123gckd4n0b-libX11-1.7.2/lib -L/nix/store/cs3m5r3f7x6ghf9xwgnmg1bzb12lqi19-libXrender-0.9.10/lib -L/nix/store/cqhhah8c6rgms9wmxr9pa1wghh2smki3-xcb-util-0.4.0/lib -L/nix/store/q796xg0x515ajdly44iqdvacxnprj6qx-libGL-1.4.0/lib -L/nix/store/hrl51nkr7dszlwcs29wmyxq0jsqlaszn-libglvnd-1.4.0/lib -L/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0/lib -L/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9/lib -L/nix/store/3jcj0v2a0pjfi3ydscabrv532dsg43kf-libjpeg-turbo-2.1.3/lib -L/nix/store/xmhqvwkhmvc6grldj5vq43ffsahskfq0-xz-5.2.5/lib -L/nix/store/nl0km2rshc71svq137kx2bv2fdjmqv56-libtiff-4.3.0/lib -L/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/lib -L/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/lib -L/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/lib -L/nix/store/hs258jqx4blnk6b8zncy8k0y6l2fqkl3-libICE-1.0.10/lib -L/nix/store/n7pzh8k7h5axpiqp0nvn49df4k5qqz3l-libSM-1.2.3/lib -L/nix/store/dvch1l6v4gczrsgb01y3p2lpgsw36aa4-libXfixes-6.0.0/lib -L/nix/store/x6332d0bxzbkscshyri8z7if4j8lrz0d-libXcomposite-0.4.5/lib -L/nix/store/jg8q74faxp8xbqw5dcdw7i63h9mjkjgz-libXcursor-1.2.0/lib -L/nix/store/8r67k5yn6ic2vmj5dq0d0hm4lc2br0vj-libXi-1.8/lib -L/nix/store/j3hqqyqpl6zwp3dcrc6xrvdqi6p776gl-libXrandr-1.5.2/lib -L/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/lib -L/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2/lib -L/nix/store/1hyvc28l0nc25jxp0yfyrdmpqla2vx3d-libXft-2.3.4/lib -L/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6/lib -L/nix/store/dvv86s6ipnm6hp8fhnh2smkal4q95p45-wayland-1.20.0/lib -L/nix/store/fqfk1r89lavcagxg15a8jvq63l00snsf-libXinerama-1.1.4/lib -L/nix/store/nmk2zbdxsmiinqxqxzv9cfjkladq9jlx-gmp-with-cxx-6.2.1/lib -L/nix/store/kal2vyxj49n0sfmf635h304hp96d81ia-cups-2.4.1-lib/lib -L/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/lib -L/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45/lib' +export NIX_LDFLAGS_FOR_TARGET +NIX_LIB64_IN_SELF_RPATH='1' +NIX_NO_SELF_RPATH='1' +NIX_PKG_CONFIG_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu='1' +export NIX_PKG_CONFIG_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu +NIX_STORE='/nix/store' +export NIX_STORE +NM='nm' +export NM +NM_FOR_TARGET='nm' +export NM_FOR_TARGET +OBJCOPY='objcopy' +export OBJCOPY +OBJCOPY_FOR_TARGET='objcopy' +export OBJCOPY_FOR_TARGET +OBJDUMP='objdump' +export OBJDUMP +OBJDUMP_FOR_TARGET='objdump' +export OBJDUMP_FOR_TARGET +OLDPWD='' +export OLDPWD +OPTERR='1' +OSTYPE='linux-gnu' +PATH='/nix/store/6d4bp009bcmz5afl9n7w7niycqi3m0rm-patchelf-0.14.5/bin:/nix/store/4ybkncn05qbhgbdxg9sxdgpm1jpdx76w-gcc-wrapper-10.3.0/bin:/nix/store/2dll4xl0xn13anzfxk0pbjr209s6rwhx-gcc-10.3.0/bin:/nix/store/y2d88myw5v33mwrz13rgnjgx23rs26p6-glibc-2.34-115-bin/bin:/nix/store/mi38zzxcylfc1jwnbbjyln959k1yjl9b-coreutils-9.0/bin:/nix/store/c4k3fcsp5cqg9v0rpac9qbqmbkm6a7pk-binutils-wrapper-2.35.2/bin:/nix/store/cimp3vp40msz4afq1c3602p2rn9bff0d-binutils-2.35.2/bin:/nix/store/8blq2fy6y9x2ffcgr052f0abakammw0k-flutter-2.13.0-0.1.pre/bin:/nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7/bin:/nix/store/12msvv6k9rf9ywjpzcj502y0azsgmhp1-platform-tools-31.0.3/bin:/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/bin:/nix/store/f15fzjp3g5av46d9v844nj55w60zvrzd-gitlint-0.17.0/bin:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/bin:/nix/store/q6ga19qfb3bk3clqan8k22jnnh8m32n5-jq-1.6-bin/bin:/nix/store/y1ilfhl51jr1m8y8dn2pl07703ppcadn-ripgrep-13.0.0/bin:/nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/bin:/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/bin:/nix/store/xl4fcwa76r0xy59dlhjvvj7h0nl0ix84-glib-2.72.0-bin/bin:/nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/bin:/nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/bin:/nix/store/9hnz235608afb1z943sh3fd21ngxa7ra-bzip2-1.0.6.0.2-bin/bin:/nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/bin:/nix/store/r4aknngzmydzd6dql0ys0lj03cvmcyfk-fontconfig-2.13.94-bin/bin:/nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/bin:/nix/store/58rj9srjk7m4hamw7jlf6i4vlvgv1mv6-clang-wrapper-11.1.0/bin:/nix/store/71npsayh2m8vpys9ra1v9p0vyy85hlxv-clang-11.1.0/bin:/nix/store/5nhxhpqsd2wzzlcdkj61rspvxxmnqp2k-binutils-wrapper-2.35.2/bin:/nix/store/jlqvmjzwpxqfghhn1k3kc07ssga2zm0f-cmake-3.22.3/bin:/nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/bin:/nix/store/hj59ddxmjx7f41qwzwkbigrfyxzyb4ci-libjpeg-turbo-2.1.3-bin/bin:/nix/store/74vm0qblviq2rjjyhb26n017wzam1c9b-xz-5.2.5-bin/bin:/nix/store/9lrz8brsphinnzyg3ws6gfkbxpivr0n5-libtiff-4.3.0-bin/bin:/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/bin:/nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/bin:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/bin:/nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/bin:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/bin:/nix/store/9wsylssmyb6w9bwd2wmzpzhj85llvrld-pango-1.50.6-bin/bin:/nix/store/ykk7ngn81vhihs5gvz3g6xnimyzih8da-wayland-1.20.0-bin/bin:/nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/bin:/nix/store/fxbxcv4swqp7rjv39bq6wknyg51lyzq9-cups-2.4.1/bin:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/bin:/nix/store/ix08ss2s3shjya9cq7jmj1czwglfz366-ninja-1.10.2/bin:/nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/bin:/nix/store/4wqmz2ayiibvkc36dc91kdgmj4l02bdh-pcre-8.45-bin/bin:/nix/store/l8k4yxyyg2vym5vi8mxzmzpabcwz444p-pkg-config-wrapper-0.29.2/bin:/nix/store/r9zfl37l5dsr8kfypian6w1vamcdngva-compiler-rt-libc-11.1.0/bin:/nix/store/mi38zzxcylfc1jwnbbjyln959k1yjl9b-coreutils-9.0/bin:/nix/store/g2ax8hr2vcv74ymdi9i0z898zgwv5qck-findutils-4.9.0/bin:/nix/store/y01pvic7xsg3q05fynbh6mb1d4vqk5bf-diffutils-3.8/bin:/nix/store/4w3fd4s7l967bdplcqn74bf3iq45h4f8-gnused-4.8/bin:/nix/store/pa1hxz0q46giv9zw1bi4205hgzkjnz17-gnugrep-3.7/bin:/nix/store/8cm5s7jjqh2r16bx36shsizpm49mq9hk-gawk-5.1.1/bin:/nix/store/82z93m4mv563fj3m2j9d61cabvidx703-gnutar-1.34/bin:/nix/store/fsfnkwpydb6pb0sdri12fpiynjprczyq-gzip-1.12/bin:/nix/store/9hnz235608afb1z943sh3fd21ngxa7ra-bzip2-1.0.6.0.2-bin/bin:/nix/store/laascnf607s0p98q6n1kk4r0r9922c4l-gnumake-4.3/bin:/nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16/bin:/nix/store/8xlgg9jl10gf1mv5mx459wr7x1wpnsnq-patch-2.7.6/bin:/nix/store/74vm0qblviq2rjjyhb26n017wzam1c9b-xz-5.2.5-bin/bin' +export PATH +PKG_CONFIG_FOR_TARGET='pkg-config' +export PKG_CONFIG_FOR_TARGET +PKG_CONFIG_PATH_FOR_TARGET='/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/lib/pkgconfig:/nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev/lib/pkgconfig:/nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/lib/pkgconfig:/nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev/lib/pkgconfig:/nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev/lib/pkgconfig:/nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/lib/pkgconfig:/nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev/lib/pkgconfig:/nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/lib/pkgconfig:/nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev/lib/pkgconfig:/nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/lib/pkgconfig:/nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/lib/pkgconfig:/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/lib/pkgconfig:/nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev/lib/pkgconfig:/nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5/share/pkgconfig:/nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev/lib/pkgconfig:/nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev/lib/pkgconfig:/nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev/lib/pkgconfig:/nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev/lib/pkgconfig:/nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev/lib/pkgconfig:/nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev/lib/pkgconfig:/nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev/lib/pkgconfig:/nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev/lib/pkgconfig:/nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/lib/pkgconfig:/nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev/lib/pkgconfig:/nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev/lib/pkgconfig:/nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev/lib/pkgconfig:/nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/lib/pkgconfig:/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/lib/pkgconfig:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/lib/pkgconfig:/nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0/share/pkgconfig:/nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev/lib/pkgconfig:/nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev/lib/pkgconfig:/nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev/lib/pkgconfig:/nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev/lib/pkgconfig:/nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev/lib/pkgconfig:/nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev/lib/pkgconfig:/nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev/lib/pkgconfig:/nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev/lib/pkgconfig:/nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/lib/pkgconfig:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/lib/pkgconfig:/nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev/lib/pkgconfig:/nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev/lib/pkgconfig:/nix/store/ykk7ngn81vhihs5gvz3g6xnimyzih8da-wayland-1.20.0-bin/lib/pkgconfig:/nix/store/nrhjz3m3wmnay297z456mpp5jfjh6a49-wayland-protocols-1.25/share/pkgconfig:/nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev/lib/pkgconfig:/nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/lib/pkgconfig:/nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev/lib/pkgconfig:/nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/lib/pkgconfig' +export PKG_CONFIG_PATH_FOR_TARGET +PS4='+ ' +PYTHONHASHSEED='0' +export PYTHONHASHSEED +PYTHONNOUSERSITE='1' +export PYTHONNOUSERSITE +PYTHONPATH='/nix/store/f15fzjp3g5av46d9v844nj55w60zvrzd-gitlint-0.17.0/lib/python3.9/site-packages:/nix/store/wmyfippxf9sr358nvnw2l8aj35nmwx2s-python3.9-arrow-1.2.2/lib/python3.9/site-packages:/nix/store/7m68x9rdv1fj8i40p7h83wcl8wbmcrff-python3.9-python-dateutil-2.8.2/lib/python3.9/site-packages:/nix/store/r6j9x43wcvp79472y4kv93w23s94apy4-python3.9-six-1.16.0/lib/python3.9/site-packages:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/lib/python3.9/site-packages:/nix/store/s5jwgr4qci2r1rxnylhl33qhg4qmaa20-python3.9-click-8.0.4/lib/python3.9/site-packages:/nix/store/dx5grbhnlja2nhm3chszxxxmakgbqa1w-python3.9-sh-1.14.2/lib/python3.9/site-packages' +export PYTHONPATH +RANLIB='ranlib' +export RANLIB +RANLIB_FOR_TARGET='ranlib' +export RANLIB_FOR_TARGET +READELF='readelf' +export READELF +READELF_FOR_TARGET='readelf' +export READELF_FOR_TARGET +SHELL='/nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16/bin/bash' +export SHELL +SIZE='size' +export SIZE +SIZE_FOR_TARGET='size' +export SIZE_FOR_TARGET +SOURCE_DATE_EPOCH='315532800' +export SOURCE_DATE_EPOCH +STRINGS='strings' +export STRINGS +STRINGS_FOR_TARGET='strings' +export STRINGS_FOR_TARGET +STRIP='strip' +export STRIP +STRIP_FOR_TARGET='strip' +export STRIP_FOR_TARGET +XDG_DATA_DIRS='/nix/store/6d4bp009bcmz5afl9n7w7niycqi3m0rm-patchelf-0.14.5/share' +export XDG_DATA_DIRS +_PYTHON_HOST_PLATFORM='linux-x86_64' +export _PYTHON_HOST_PLATFORM +_PYTHON_SYSCONFIGDATA_NAME='_sysconfigdata__linux_x86_64-linux-gnu' +export _PYTHON_SYSCONFIGDATA_NAME +buildInputs='/nix/store/8blq2fy6y9x2ffcgr052f0abakammw0k-flutter-2.13.0-0.1.pre /nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7 /nix/store/12msvv6k9rf9ywjpzcj502y0azsgmhp1-platform-tools-31.0.3 /nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta /nix/store/f15fzjp3g5av46d9v844nj55w60zvrzd-gitlint-0.17.0 /nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev /nix/store/y1ilfhl51jr1m8y8dn2pl07703ppcadn-ripgrep-13.0.0 /nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev /nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev /nix/store/58rj9srjk7m4hamw7jlf6i4vlvgv1mv6-clang-wrapper-11.1.0 /nix/store/jlqvmjzwpxqfghhn1k3kc07ssga2zm0f-cmake-3.22.3 /nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev /nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev /nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev /nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev /nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev /nix/store/ix08ss2s3shjya9cq7jmj1czwglfz366-ninja-1.10.2 /nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev /nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev /nix/store/l8k4yxyyg2vym5vi8mxzmzpabcwz444p-pkg-config-wrapper-0.29.2 /nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev /nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5' +export buildInputs +buildPhase='echo "------------------------------------------------------------" >>$out +echo " WARNING: the existence of this path is not guaranteed." >>$out +echo " It is an internal implementation detail for pkgs.mkShell." >>$out +echo "------------------------------------------------------------" >>$out +echo >> $out +# Record all build inputs as runtime dependencies +export >> $out +' +export buildPhase +builder='/nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16/bin/bash' +export builder +checkPhase='ninjaCheckPhase' +configureFlags='' +export configureFlags +configurePhase='cmakeConfigurePhase' +defaultBuildInputs='' +defaultNativeBuildInputs='/nix/store/6d4bp009bcmz5afl9n7w7niycqi3m0rm-patchelf-0.14.5 /nix/store/59jmzisg8fkm9c125fw384dqq1np602l-move-docs.sh /nix/store/kxw6q8v6isaqjm702d71n2421cxamq68-make-symlinks-relative.sh /nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh /nix/store/bkxq1nfi6grmww5756ynr1aph7w04lkk-strip.sh /nix/store/bnj8d7mvbkg3vdb07yz74yhl3g107qq5-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/8zxndz5ag0p6s526c2xyllhk1nrn4c3i-audit-tmpdir.sh /nix/store/c8n9kcdddp9np665xz6ri61b383nxvz8-move-systemd-user-units.sh /nix/store/1i5y55x4b4m9qkx5dqbmr1r6bvrqbanw-multiple-outputs.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/ngg1cv31c8c7bcm2n8ww4g06nq7s4zhm-set-source-date-epoch-to-latest.sh /nix/store/wlwcf1nw2b21m4gghj70hbg1v7x53ld8-reproducible-builds.sh /nix/store/4ybkncn05qbhgbdxg9sxdgpm1jpdx76w-gcc-wrapper-10.3.0' +depsBuildBuild='' +export depsBuildBuild +depsBuildBuildPropagated='' +export depsBuildBuildPropagated +depsBuildTarget='' +export depsBuildTarget +depsBuildTargetPropagated='' +export depsBuildTargetPropagated +depsHostHost='' +export depsHostHost +depsHostHostPropagated='' +export depsHostHostPropagated +depsTargetTarget='' +export depsTargetTarget +depsTargetTargetPropagated='' +export depsTargetTargetPropagated +doCheck='' +export doCheck +doInstallCheck='' +export doInstallCheck +dontAddDisableDepTrack='1' +export dontAddDisableDepTrack +declare -a envBuildBuildHooks=() +declare -a envBuildHostHooks=() +declare -a envBuildTargetHooks=() +declare -a envHostHostHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' 'addPythonPath' 'sysconfigdataHook' 'addPythonPath' 'sysconfigdataHook' 'gettextDataDirsHook' ) +declare -a envHostTargetHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' 'addPythonPath' 'sysconfigdataHook' 'addPythonPath' 'sysconfigdataHook' 'gettextDataDirsHook' ) +declare -a envTargetTargetHooks=('addPkgToClassPath' 'make_glib_find_gsettings_schemas' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' 'addCMakeParams' 'findGdkPixbufLoaders' 'pkgConfigWrapper_addPkgConfigPath' ) +declare -a fixupOutputHooks=('if [ -z "${dontPatchELF-}" ]; then patchELF "$prefix"; fi' '_makeSymlinksRelative' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_doStrip' 'patchShebangsAuto' '_pruneLibtoolFiles' 'if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' '_moveSystemdUserUnits' '_moveSbin' '_moveLib64' '_gtkCleanImmodulesCache' ) +flag='-L/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45/lib' +guess='8' +iframework_seen='' +initialPath='/nix/store/mi38zzxcylfc1jwnbbjyln959k1yjl9b-coreutils-9.0 /nix/store/g2ax8hr2vcv74ymdi9i0z898zgwv5qck-findutils-4.9.0 /nix/store/y01pvic7xsg3q05fynbh6mb1d4vqk5bf-diffutils-3.8 /nix/store/4w3fd4s7l967bdplcqn74bf3iq45h4f8-gnused-4.8 /nix/store/pa1hxz0q46giv9zw1bi4205hgzkjnz17-gnugrep-3.7 /nix/store/8cm5s7jjqh2r16bx36shsizpm49mq9hk-gawk-5.1.1 /nix/store/82z93m4mv563fj3m2j9d61cabvidx703-gnutar-1.34 /nix/store/fsfnkwpydb6pb0sdri12fpiynjprczyq-gzip-1.12 /nix/store/9hnz235608afb1z943sh3fd21ngxa7ra-bzip2-1.0.6.0.2-bin /nix/store/laascnf607s0p98q6n1kk4r0r9922c4l-gnumake-4.3 /nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16 /nix/store/8xlgg9jl10gf1mv5mx459wr7x1wpnsnq-patch-2.7.6 /nix/store/74vm0qblviq2rjjyhb26n017wzam1c9b-xz-5.2.5-bin' +installPhase='ninjaInstallPhase' +isystem_seen='' +maybe_dir='/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/share/gsettings-schemas/gtk+3-3.24.33' +name='nix-shell' +export name +nativeBuildInputs='' +export nativeBuildInputs +out='/home/alexander/Development/Personal/Android/moxdns/outputs/out' +export out +outputBin='out' +outputDev='out' +outputDevdoc='REMOVE' +outputDevman='out' +outputDoc='out' +outputInclude='out' +outputInfo='out' +outputLib='out' +outputMan='out' +outputs='out' +export outputs +patches='' +export patches +phases='buildPhase' +export phases +pkg='/nix/store/4ybkncn05qbhgbdxg9sxdgpm1jpdx76w-gcc-wrapper-10.3.0' +declare -a pkgsBuildBuild=() +declare -a pkgsBuildHost=('/nix/store/6d4bp009bcmz5afl9n7w7niycqi3m0rm-patchelf-0.14.5' '/nix/store/59jmzisg8fkm9c125fw384dqq1np602l-move-docs.sh' '/nix/store/kxw6q8v6isaqjm702d71n2421cxamq68-make-symlinks-relative.sh' '/nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh' '/nix/store/bkxq1nfi6grmww5756ynr1aph7w04lkk-strip.sh' '/nix/store/bnj8d7mvbkg3vdb07yz74yhl3g107qq5-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/8zxndz5ag0p6s526c2xyllhk1nrn4c3i-audit-tmpdir.sh' '/nix/store/c8n9kcdddp9np665xz6ri61b383nxvz8-move-systemd-user-units.sh' '/nix/store/1i5y55x4b4m9qkx5dqbmr1r6bvrqbanw-multiple-outputs.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/ngg1cv31c8c7bcm2n8ww4g06nq7s4zhm-set-source-date-epoch-to-latest.sh' '/nix/store/wlwcf1nw2b21m4gghj70hbg1v7x53ld8-reproducible-builds.sh' '/nix/store/4ybkncn05qbhgbdxg9sxdgpm1jpdx76w-gcc-wrapper-10.3.0' '/nix/store/c4k3fcsp5cqg9v0rpac9qbqmbkm6a7pk-binutils-wrapper-2.35.2' ) +declare -a pkgsBuildTarget=() +declare -a pkgsHostHost=() +declare -a pkgsHostTarget=('/nix/store/8blq2fy6y9x2ffcgr052f0abakammw0k-flutter-2.13.0-0.1.pre' '/nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7' '/nix/store/i8l1f18ak16jj5ar464m3myxg4hk2swa-hook' '/nix/store/12msvv6k9rf9ywjpzcj502y0azsgmhp1-platform-tools-31.0.3' '/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta' '/nix/store/f15fzjp3g5av46d9v844nj55w60zvrzd-gitlint-0.17.0' '/nix/store/wmyfippxf9sr358nvnw2l8aj35nmwx2s-python3.9-arrow-1.2.2' '/nix/store/7m68x9rdv1fj8i40p7h83wcl8wbmcrff-python3.9-python-dateutil-2.8.2' '/nix/store/r6j9x43wcvp79472y4kv93w23s94apy4-python3.9-six-1.16.0' '/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11' '/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11' '/nix/store/s5jwgr4qci2r1rxnylhl33qhg4qmaa20-python3.9-click-8.0.4' '/nix/store/dx5grbhnlja2nhm3chszxxxmakgbqa1w-python3.9-sh-1.14.2' '/nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev' '/nix/store/q6ga19qfb3bk3clqan8k22jnnh8m32n5-jq-1.6-bin' '/nix/store/vdyarq02kn92wvljax1m1gd092ryfli7-jq-1.6-lib' '/nix/store/y1ilfhl51jr1m8y8dn2pl07703ppcadn-ripgrep-13.0.0' '/nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev' '/nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev' '/nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev' '/nix/store/j5jxw3iy7bbz4a57fh9g2xm2gxmyal8h-zlib-1.2.12' '/nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev' '/nix/store/zf2p161nx09fkd36g79b0xv7srcc1av1-libffi-3.4.2' '/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21' '/nix/store/3idrdw9wm55dapgfy9dqicpsfnl4zw08-glibc-iconv-2.34' '/nix/store/xl4fcwa76r0xy59dlhjvvj7h0nl0ix84-glib-2.72.0-bin' '/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0' '/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0' '/nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev' '/nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev' '/nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev' '/nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev' '/nix/store/9hnz235608afb1z943sh3fd21ngxa7ra-bzip2-1.0.6.0.2-bin' '/nix/store/vgw0mw7s490428lzgswl1cxj4xmlf5gn-bzip2-1.0.6.0.2' '/nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev' '/nix/store/hyh1whmci39mv1hd6gr8nnhxva0c2rvm-libpng-apng-1.6.37' '/nix/store/9kpdwg8rjdizjkqbf6jj96w2jmcfhcad-freetype-2.11.1' '/nix/store/r4aknngzmydzd6dql0ys0lj03cvmcyfk-fontconfig-2.13.94-bin' '/nix/store/zcjja5yd97dgnnh3qwanbsra8xsavcgw-fontconfig-2.13.94-lib' '/nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev' '/nix/store/sw3dj5k1sas1jckb750z3rd9ay8pxq2h-expat-2.4.7' '/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4' '/nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev' '/nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5' '/nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev' '/nix/store/b38zsh4qgfj60fjlpg6m9v29bcp09abk-libXau-1.0.9' '/nix/store/fmbay7w2i0qg57jcdzij3v0lzr4gpcyk-libXext-1.3.4' '/nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev' '/nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev' '/nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev' '/nix/store/3jch9iknmlz6r3m2fhhnvaqryzlh3zq4-libxcb-1.14' '/nix/store/0np4qysvv5v05w49bs3ii123gckd4n0b-libX11-1.7.2' '/nix/store/cs3m5r3f7x6ghf9xwgnmg1bzb12lqi19-libXrender-0.9.10' '/nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev' '/nix/store/cqhhah8c6rgms9wmxr9pa1wghh2smki3-xcb-util-0.4.0' '/nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev' '/nix/store/q796xg0x515ajdly44iqdvacxnprj6qx-libGL-1.4.0' '/nix/store/hrl51nkr7dszlwcs29wmyxq0jsqlaszn-libglvnd-1.4.0' '/nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev' '/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0' '/nix/store/58rj9srjk7m4hamw7jlf6i4vlvgv1mv6-clang-wrapper-11.1.0' '/nix/store/5nhxhpqsd2wzzlcdkj61rspvxxmnqp2k-binutils-wrapper-2.35.2' '/nix/store/jlqvmjzwpxqfghhn1k3kc07ssga2zm0f-cmake-3.22.3' '/nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev' '/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9' '/nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev' '/nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev' '/nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev' '/nix/store/hj59ddxmjx7f41qwzwkbigrfyxzyb4ci-libjpeg-turbo-2.1.3-bin' '/nix/store/3jcj0v2a0pjfi3ydscabrv532dsg43kf-libjpeg-turbo-2.1.3' '/nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev' '/nix/store/74vm0qblviq2rjjyhb26n017wzam1c9b-xz-5.2.5-bin' '/nix/store/xmhqvwkhmvc6grldj5vq43ffsahskfq0-xz-5.2.5' '/nix/store/9lrz8brsphinnzyg3ws6gfkbxpivr0n5-libtiff-4.3.0-bin' '/nix/store/nl0km2rshc71svq137kx2bv2fdjmqv56-libtiff-4.3.0' '/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8' '/nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev' '/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0' '/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11' '/nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0' '/nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev' '/nix/store/hs258jqx4blnk6b8zncy8k0y6l2fqkl3-libICE-1.0.10' '/nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev' '/nix/store/n7pzh8k7h5axpiqp0nvn49df4k5qqz3l-libSM-1.2.3' '/nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev' '/nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev' '/nix/store/dvch1l6v4gczrsgb01y3p2lpgsw36aa4-libXfixes-6.0.0' '/nix/store/x6332d0bxzbkscshyri8z7if4j8lrz0d-libXcomposite-0.4.5' '/nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev' '/nix/store/jg8q74faxp8xbqw5dcdw7i63h9mjkjgz-libXcursor-1.2.0' '/nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev' '/nix/store/8r67k5yn6ic2vmj5dq0d0hm4lc2br0vj-libXi-1.8' '/nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev' '/nix/store/j3hqqyqpl6zwp3dcrc6xrvdqi6p776gl-libXrandr-1.5.2' '/nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev' '/nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev' '/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14' '/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2' '/nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev' '/nix/store/1hyvc28l0nc25jxp0yfyrdmpqla2vx3d-libXft-2.3.4' '/nix/store/9wsylssmyb6w9bwd2wmzpzhj85llvrld-pango-1.50.6-bin' '/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6' '/nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev' '/nix/store/ykk7ngn81vhihs5gvz3g6xnimyzih8da-wayland-1.20.0-bin' '/nix/store/dvv86s6ipnm6hp8fhnh2smkal4q95p45-wayland-1.20.0' '/nix/store/nrhjz3m3wmnay297z456mpp5jfjh6a49-wayland-protocols-1.25' '/nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev' '/nix/store/fqfk1r89lavcagxg15a8jvq63l00snsf-libXinerama-1.1.4' '/nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev' '/nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev' '/nix/store/nmk2zbdxsmiinqxqxzv9cfjkladq9jlx-gmp-with-cxx-6.2.1' '/nix/store/kal2vyxj49n0sfmf635h304hp96d81ia-cups-2.4.1-lib' '/nix/store/fxbxcv4swqp7rjv39bq6wknyg51lyzq9-cups-2.4.1' '/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33' '/nix/store/ix08ss2s3shjya9cq7jmj1czwglfz366-ninja-1.10.2' '/nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev' '/nix/store/4wqmz2ayiibvkc36dc91kdgmj4l02bdh-pcre-8.45-bin' '/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45' '/nix/store/l8k4yxyyg2vym5vi8mxzmzpabcwz444p-pkg-config-wrapper-0.29.2' ) +declare -a pkgsTargetTarget=('/nix/store/x8l8s0zzmzg7ydwzvndn81ir33z89gn6-compiler-rt-libc-11.1.0-dev' '/nix/store/r9zfl37l5dsr8kfypian6w1vamcdngva-compiler-rt-libc-11.1.0' ) +declare -a postFixupHooks=('_multioutPropagateDev' ) +declare -a postHooks=('makeCmakeFindLibs' ) +declare -a postUnpackHooks=('_updateSourceDateEpochFromSourceRoot' ) +declare -a preConfigureHooks=('_multioutConfig' ) +declare -a preFixupHooks=('_moveToShare' '_multioutDocs' '_multioutDevs' ) +preFixupPhases=' glibPreFixupPhase dropIconThemeCache' +preInstallPhases=' glibPreInstallPhase' +prefix='/home/alexander/Development/Personal/Android/moxdns/outputs/out' +declare -a propagatedBuildDepFiles=('propagated-build-build-deps' 'propagated-native-build-inputs' 'propagated-build-target-deps' ) +propagatedBuildInputs='' +export propagatedBuildInputs +declare -a propagatedHostDepFiles=('propagated-host-host-deps' 'propagated-build-inputs' ) +propagatedNativeBuildInputs='' +export propagatedNativeBuildInputs +declare -a propagatedTargetDepFiles=('propagated-target-target-deps' ) +role_post='' +setOutputFlags='' +shell='/nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16/bin/bash' +export shell +shellHook='' +export shellHook +stdenv='/nix/store/83l8wwrx7xs3mh9sbbj6whmyx8y4cz36-stdenv-linux' +export stdenv +strictDeps='' +export strictDeps +system='x86_64-linux' +export system +declare -a unpackCmdHooks=('_defaultUnpack' ) +_activatePkgs () +{ + + local hostOffset targetOffset; + local pkg; + for hostOffset in "${allPlatOffsets[@]}"; + do + local pkgsVar="${pkgAccumVarVars[hostOffset + 1]}"; + for targetOffset in "${allPlatOffsets[@]}"; + do + (( hostOffset <= targetOffset )) || continue; + local pkgsRef="${pkgsVar}[$targetOffset - $hostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + activatePackage "$pkg" "$hostOffset" "$targetOffset"; + done; + done; + done +} +_addRpathPrefix () +{ + + if [ "${NIX_NO_SELF_RPATH:-0}" != 1 ]; then + export NIX_LDFLAGS="-rpath $1/lib ${NIX_LDFLAGS-}"; + if [ -n "${NIX_LIB64_IN_SELF_RPATH:-}" ]; then + export NIX_LDFLAGS="-rpath $1/lib64 ${NIX_LDFLAGS-}"; + fi; + if [ -n "${NIX_LIB32_IN_SELF_RPATH:-}" ]; then + export NIX_LDFLAGS="-rpath $1/lib32 ${NIX_LDFLAGS-}"; + fi; + fi +} +_addToEnv () +{ + + local depHostOffset depTargetOffset; + local pkg; + for depHostOffset in "${allPlatOffsets[@]}"; + do + local hookVar="${pkgHookVarVars[depHostOffset + 1]}"; + local pkgsVar="${pkgAccumVarVars[depHostOffset + 1]}"; + for depTargetOffset in "${allPlatOffsets[@]}"; + do + (( depHostOffset <= depTargetOffset )) || continue; + local hookRef="${hookVar}[$depTargetOffset - $depHostOffset]"; + if [[ -z "${strictDeps-}" ]]; then + local visitedPkgs=""; + for pkg in "${pkgsBuildBuild[@]}" "${pkgsBuildHost[@]}" "${pkgsBuildTarget[@]}" "${pkgsHostHost[@]}" "${pkgsHostTarget[@]}" "${pkgsTargetTarget[@]}"; + do + if [[ "$visitedPkgs" = *"$pkg"* ]]; then + continue; + fi; + runHook "${!hookRef}" "$pkg"; + visitedPkgs+=" $pkg"; + done; + else + local pkgsRef="${pkgsVar}[$depTargetOffset - $depHostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + runHook "${!hookRef}" "$pkg"; + done; + fi; + done; + done +} +_allFlags () +{ + + for varName in $(awk 'BEGIN { for (v in ENVIRON) if (v ~ /^[a-z][a-zA-Z0-9_]*$/) print v }'); + do + if (( "${NIX_DEBUG:-0}" >= 1 )); then + printf "@%s@ -> %q\n" "${varName}" "${!varName}"; + fi; + args+=("--subst-var" "$varName"); + done +} +_assignFirst () +{ + + local varName="$1"; + local REMOVE=REMOVE; + shift; + while (( $# )); do + if [ -n "${!1-}" ]; then + eval "${varName}"="$1"; + return; + fi; + shift; + done; + echo "Error: _assignFirst found no valid variant!"; + return 1 +} +_callImplicitHook () +{ + + local def="$1"; + local hookName="$2"; + if declare -F "$hookName" > /dev/null; then + "$hookName"; + else + if type -p "$hookName" > /dev/null; then + source "$hookName"; + else + if [ -n "${!hookName:-}" ]; then + eval "${!hookName}"; + else + return "$def"; + fi; + fi; + fi +} +_defaultUnpack () +{ + + local fn="$1"; + if [ -d "$fn" ]; then + cp -pr --reflink=auto -- "$fn" "$(stripHash "$fn")"; + else + case "$fn" in + *.tar.xz | *.tar.lzma | *.txz) + xz -d < "$fn" | tar xf - --warning=no-timestamp + ;; + *.tar | *.tar.* | *.tgz | *.tbz2 | *.tbz) + tar xf "$fn" --warning=no-timestamp + ;; + *) + return 1 + ;; + esac; + fi +} +_doStrip () +{ + + local -ra flags=(dontStripHost dontStripTarget); + local -ra stripCmds=(STRIP TARGET_STRIP); + if [[ "${STRIP-}" == "${TARGET_STRIP-}" ]]; then + dontStripTarget+=1; + fi; + local i; + for i in ${!stripCmds[@]}; + do + local -n flag="${flags[$i]}"; + local -n stripCmd="${stripCmds[$i]}"; + if [[ -n "${dontStrip-}" || -n "${flag-}" ]] || ! type -f "${stripCmd-}" 2> /dev/null; then + continue; + fi; + stripDebugList=${stripDebugList:-lib lib32 lib64 libexec bin sbin}; + if [ -n "$stripDebugList" ]; then + stripDirs "$stripCmd" "$stripDebugList" "${stripDebugFlags:--S}"; + fi; + stripAllList=${stripAllList:-}; + if [ -n "$stripAllList" ]; then + stripDirs "$stripCmd" "$stripAllList" "${stripAllFlags:--s}"; + fi; + done +} +_eval () +{ + + if declare -F "$1" > /dev/null 2>&1; then + "$@"; + else + eval "$1"; + fi +} +_gtkCleanImmodulesCache () +{ + + local f="${prefix:?}/lib/gtk-3.0/3.0.0/immodules.cache"; + if [ -f "$f" ]; then + sed 's|Created by .*bin/gtk-query-|Created by bin/gtk-query-|' -i "$f"; + fi +} +_makeSymlinksRelative () +{ + + local symlinkTarget; + if [ -n "${dontRewriteSymlinks-}" ]; then + return 0; + fi; + while IFS= read -r -d '' f; do + symlinkTarget=$(readlink "$f"); + if [[ "$symlinkTarget"/ != "$prefix"/* ]]; then + continue; + fi; + if [ ! -e "$symlinkTarget" ]; then + echo "the symlink $f is broken, it points to $symlinkTarget (which is missing)"; + fi; + echo "rewriting symlink $f to be relative to $prefix"; + ln -snrf "$symlinkTarget" "$f"; + done < <(find $prefix -type l -print0) +} +_moveLib64 () +{ + + if [ "${dontMoveLib64-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/lib64" -o -L "$prefix/lib64" ]; then + return; + fi; + echo "moving $prefix/lib64/* to $prefix/lib"; + mkdir -p $prefix/lib; + shopt -s dotglob; + for i in $prefix/lib64/*; + do + mv --no-clobber "$i" $prefix/lib; + done; + shopt -u dotglob; + rmdir $prefix/lib64; + ln -s lib $prefix/lib64 +} +_moveSbin () +{ + + if [ "${dontMoveSbin-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/sbin" -o -L "$prefix/sbin" ]; then + return; + fi; + echo "moving $prefix/sbin/* to $prefix/bin"; + mkdir -p $prefix/bin; + shopt -s dotglob; + for i in $prefix/sbin/*; + do + mv "$i" $prefix/bin; + done; + shopt -u dotglob; + rmdir $prefix/sbin; + ln -s bin $prefix/sbin +} +_moveSystemdUserUnits () +{ + + if [ "${dontMoveSystemdUserUnits:-0}" = 1 ]; then + return; + fi; + if [ ! -e "${prefix:?}/lib/systemd/user" ]; then + return; + fi; + local source="$prefix/lib/systemd/user"; + local target="$prefix/share/systemd/user"; + echo "moving $source/* to $target"; + mkdir -p "$target"; + ( shopt -s dotglob; + for i in "$source"/*; + do + mv "$i" "$target"; + done ); + rmdir "$source"; + ln -s "$target" "$source" +} +_moveToShare () +{ + + forceShare=${forceShare:=man doc info}; + if [[ -z "$out" ]]; then + return; + fi; + for d in $forceShare; + do + if [ -d "$out/$d" ]; then + if [ -d "$out/share/$d" ]; then + echo "both $d/ and share/$d/ exist!"; + else + echo "moving $out/$d to $out/share/$d"; + mkdir -p $out/share; + mv $out/$d $out/share/; + fi; + fi; + done +} +_multioutConfig () +{ + + if [ "$outputs" = "out" ] || [ -z "${setOutputFlags-1}" ]; then + return; + fi; + if [ -z "$shareDocName" ]; then + local confScript="$configureScript"; + if [ -z "$confScript" ] && [ -x ./configure ]; then + confScript=./configure; + fi; + if [ -f "$confScript" ]; then + local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")"; + fi; + if [ -z "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then + shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')"; + fi; + fi; + configureFlags=" --bindir=${!outputBin}/bin --sbindir=${!outputBin}/sbin --includedir=${!outputInclude}/include --oldincludedir=${!outputInclude}/include --mandir=${!outputMan}/share/man --infodir=${!outputInfo}/share/info --docdir=${!outputDoc}/share/doc/${shareDocName} --libdir=${!outputLib}/lib --libexecdir=${!outputLib}/libexec --localedir=${!outputLib}/share/locale $configureFlags"; + installFlags=" pkgconfigdir=${!outputDev}/lib/pkgconfig m4datadir=${!outputDev}/share/aclocal aclocaldir=${!outputDev}/share/aclocal $installFlags" +} +_multioutDevs () +{ + + if [ "$outputs" = "out" ] || [ -z "${moveToDev-1}" ]; then + return; + fi; + moveToOutput include "${!outputInclude}"; + moveToOutput lib/pkgconfig "${!outputDev}"; + moveToOutput share/pkgconfig "${!outputDev}"; + moveToOutput lib/cmake "${!outputDev}"; + moveToOutput share/aclocal "${!outputDev}"; + for f in "${!outputDev}"/{lib,share}/pkgconfig/*.pc; + do + echo "Patching '$f' includedir to output ${!outputInclude}"; + sed -i "/^includedir=/s,=\${prefix},=${!outputInclude}," "$f"; + done +} +_multioutDocs () +{ + + local REMOVE=REMOVE; + moveToOutput share/info "${!outputInfo}"; + moveToOutput share/doc "${!outputDoc}"; + moveToOutput share/gtk-doc "${!outputDevdoc}"; + moveToOutput share/devhelp/books "${!outputDevdoc}"; + moveToOutput share/man "${!outputMan}"; + moveToOutput share/man/man3 "${!outputDevman}" +} +_multioutPropagateDev () +{ + + if [ "$outputs" = "out" ]; then + return; + fi; + local outputFirst; + for outputFirst in $outputs; + do + break; + done; + local propagaterOutput="$outputDev"; + if [ -z "$propagaterOutput" ]; then + propagaterOutput="$outputFirst"; + fi; + if [ -z "${propagatedBuildOutputs+1}" ]; then + local po_dirty="$outputBin $outputInclude $outputLib"; + set +o pipefail; + propagatedBuildOutputs=`echo "$po_dirty" | tr -s ' ' '\n' | grep -v -F "$propagaterOutput" | sort -u | tr '\n' ' ' `; + set -o pipefail; + fi; + if [ -z "$propagatedBuildOutputs" ]; then + return; + fi; + mkdir -p "${!propagaterOutput}"/nix-support; + for output in $propagatedBuildOutputs; + do + echo -n " ${!output}" >> "${!propagaterOutput}"/nix-support/propagated-build-inputs; + done +} +_overrideFirst () +{ + + if [ -z "${!1-}" ]; then + _assignFirst "$@"; + fi +} +_pruneLibtoolFiles () +{ + + if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then + return; + fi; + find "$prefix" -type f -name '*.la' -exec grep -q '^# Generated by .*libtool' {} \; -exec grep -q "^old_library=''" {} \; -exec sed -i {} -e "/^dependency_libs='[^']/ c dependency_libs='' #pruned" \; +} +_updateSourceDateEpochFromSourceRoot () +{ + + if [ -n "$sourceRoot" ]; then + updateSourceDateEpoch "$sourceRoot"; + fi +} +activatePackage () +{ + + local pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit -1; + if [ -f "$pkg" ]; then + source "$pkg"; + fi; + if [[ -z "${strictDeps-}" || "$hostOffset" -le -1 ]]; then + addToSearchPath _PATH "$pkg/bin"; + fi; + if (( hostOffset <= -1 )); then + addToSearchPath _XDG_DATA_DIRS "$pkg/share"; + fi; + if [[ "$hostOffset" -eq 0 && -d "$pkg/bin" ]]; then + addToSearchPath _HOST_PATH "$pkg/bin"; + fi; + if [[ -f "$pkg/nix-support/setup-hook" ]]; then + source "$pkg/nix-support/setup-hook"; + fi +} +addCMakeParams () +{ + + addToSearchPath CMAKE_PREFIX_PATH $1 +} +addEnvHooks () +{ + + local depHostOffset="$1"; + shift; + local pkgHookVarsSlice="${pkgHookVarVars[$depHostOffset + 1]}[@]"; + local pkgHookVar; + for pkgHookVar in "${!pkgHookVarsSlice}"; + do + eval "${pkgHookVar}s"'+=("$@")'; + done +} +addPkgToClassPath () +{ + + local jar; + for jar in $1/share/java/*.jar; + do + export CLASSPATH=''${CLASSPATH-}''${CLASSPATH:+:}''${jar}; + done +} +addPythonPath () +{ + + addToSearchPathWithCustomDelimiter : PYTHONPATH $1/lib/python3.9/site-packages +} +addToSearchPath () +{ + + addToSearchPathWithCustomDelimiter ":" "$@" +} +addToSearchPathWithCustomDelimiter () +{ + + local delimiter="$1"; + local varName="$2"; + local dir="$3"; + if [[ -d "$dir" && "${!varName:+${delimiter}${!varName}${delimiter}}" != *"${delimiter}${dir}${delimiter}"* ]]; then + export "${varName}=${!varName:+${!varName}${delimiter}}${dir}"; + fi +} +auditTmpdir () +{ + + local dir="$1"; + [ -e "$dir" ] || return 0; + header "checking for references to $TMPDIR/ in $dir..."; + local i; + while IFS= read -r -d '' i; do + if [[ "$i" =~ .build-id ]]; then + continue; + fi; + if isELF "$i"; then + if { + printf :; + patchelf --print-rpath "$i" + } | grep -q -F ":$TMPDIR/"; then + echo "RPATH of binary $i contains a forbidden reference to $TMPDIR/"; + exit 1; + fi; + fi; + if isScript "$i"; then + if [ -e "$(dirname "$i")/.$(basename "$i")-wrapped" ]; then + if grep -q -F "$TMPDIR/" "$i"; then + echo "wrapper script $i contains a forbidden reference to $TMPDIR/"; + exit 1; + fi; + fi; + fi; + done < <(find "$dir" -type f -print0); + stopNest +} +bintoolsWrapper_addLDVars () +{ + + local role_post; + getHostRoleEnvHook; + if [[ -d "$1/lib64" && ! -L "$1/lib64" ]]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib64"; + fi; + if [[ -d "$1/lib" ]]; then + local -a glob=($1/lib/lib*); + if [ "${#glob[*]}" -gt 0 ]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib"; + fi; + fi +} +buildPhase () +{ + + runHook preBuild; + : ${makeFlags=}; + if [[ -z "$makeFlags" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then + echo "no Makefile, doing nothing"; + else + foundMakefile=1; + local flagsArray=(${enableParallelBuilding:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}} SHELL=$SHELL $makeFlags "${makeFlagsArray[@]}" $buildFlags "${buildFlagsArray[@]}"); + echoCmd 'build flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postBuild +} +ccWrapper_addCVars () +{ + + local role_post; + getHostRoleEnvHook; + if [ -d "$1/include" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -isystem $1/include"; + fi; + if [ -d "$1/Library/Frameworks" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -iframework $1/Library/Frameworks"; + fi +} +checkPhase () +{ + + runHook preCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom checkPhase, doing nothing"; + runHook postCheck; + return; + fi; + if [[ -z "${checkTarget:-}" ]]; then + if make -n ${makefile:+-f $makefile} check > /dev/null 2>&1; then + checkTarget=check; + else + if make -n ${makefile:+-f $makefile} test > /dev/null 2>&1; then + checkTarget=test; + fi; + fi; + fi; + if [[ -z "${checkTarget:-}" ]]; then + echo "no check/test target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}} SHELL=$SHELL $makeFlags "${makeFlagsArray[@]}" ${checkFlags:-VERBOSE=y} "${checkFlagsArray[@]}" ${checkTarget}); + echoCmd 'check flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postCheck +} +closeNest () +{ + + true +} +cmakeConfigurePhase () +{ + + runHook preConfigure; + export CTEST_OUTPUT_ON_FAILURE=1; + if [ -n "${enableParallelChecking-1}" ]; then + export CTEST_PARALLEL_LEVEL=$NIX_BUILD_CORES; + fi; + if [ -z "${dontFixCmake-}" ]; then + fixCmakeFiles .; + fi; + if [ -z "${dontUseCmakeBuildDir-}" ]; then + mkdir -p build; + cd build; + cmakeDir=${cmakeDir:-..}; + fi; + if [ -z "${dontAddPrefix-}" ]; then + cmakeFlags="-DCMAKE_INSTALL_PREFIX=$prefix $cmakeFlags"; + fi; + cmakeFlags="-DCMAKE_CXX_COMPILER=$CXX $cmakeFlags"; + cmakeFlags="-DCMAKE_C_COMPILER=$CC $cmakeFlags"; + cmakeFlags="-DCMAKE_AR=$(command -v $AR) $cmakeFlags"; + cmakeFlags="-DCMAKE_RANLIB=$(command -v $RANLIB) $cmakeFlags"; + cmakeFlags="-DCMAKE_STRIP=$(command -v $STRIP) $cmakeFlags"; + cmakeFlags="-DCMAKE_FIND_FRAMEWORK=LAST $cmakeFlags"; + cmakeFlags="-DCMAKE_OSX_SYSROOT= $cmakeFlags"; + cmakeFlags="-DCMAKE_POLICY_DEFAULT_CMP0025=NEW $cmakeFlags"; + cmakeFlags="-DCMAKE_INSTALL_NAME_DIR=${!outputLib}/lib $cmakeFlags"; + if [[ -z "$shareDocName" ]]; then + local cmakeLists="${cmakeDir}/CMakeLists.txt"; + if [[ -f "$cmakeLists" ]]; then + local shareDocName="$(grep --only-matching --perl-regexp --ignore-case '\bproject\s*\(\s*"?\K([^[:space:]")]+)' < "$cmakeLists" | head -n1)"; + fi; + if [[ -z "$shareDocName" ]] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_+-]'; then + if [[ -n "${pname-}" ]]; then + shareDocName="$pname"; + else + shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')"; + fi; + fi; + fi; + cmakeFlags="-DCMAKE_INSTALL_BINDIR=${!outputBin}/bin $cmakeFlags"; + cmakeFlags="-DCMAKE_INSTALL_SBINDIR=${!outputBin}/sbin $cmakeFlags"; + cmakeFlags="-DCMAKE_INSTALL_INCLUDEDIR=${!outputInclude}/include $cmakeFlags"; + cmakeFlags="-DCMAKE_INSTALL_OLDINCLUDEDIR=${!outputInclude}/include $cmakeFlags"; + cmakeFlags="-DCMAKE_INSTALL_MANDIR=${!outputMan}/share/man $cmakeFlags"; + cmakeFlags="-DCMAKE_INSTALL_INFODIR=${!outputInfo}/share/info $cmakeFlags"; + cmakeFlags="-DCMAKE_INSTALL_DOCDIR=${!outputDoc}/share/doc/${shareDocName} $cmakeFlags"; + cmakeFlags="-DCMAKE_INSTALL_LIBDIR=${!outputLib}/lib $cmakeFlags"; + cmakeFlags="-DCMAKE_INSTALL_LIBEXECDIR=${!outputLib}/libexec $cmakeFlags"; + cmakeFlags="-DCMAKE_INSTALL_LOCALEDIR=${!outputLib}/share/locale $cmakeFlags"; + if [ -z "${doCheck-}" ]; then + cmakeFlags="-DBUILD_TESTING=OFF $cmakeFlags"; + fi; + cmakeFlags="-DCMAKE_BUILD_TYPE=${cmakeBuildType:-Release} -DCMAKE_SKIP_BUILD_RPATH=ON $cmakeFlags"; + cmakeFlags="-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON $cmakeFlags"; + cmakeFlags="-DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF $cmakeFlags"; + cmakeFlags="-DCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY=OFF $cmakeFlags"; + if [ "${buildPhase-}" = ninjaBuildPhase ]; then + cmakeFlags="-GNinja $cmakeFlags"; + fi; + echo "cmake flags: $cmakeFlags ${cmakeFlagsArray[@]}"; + cmake ${cmakeDir:-.} $cmakeFlags "${cmakeFlagsArray[@]}"; + if ! [[ -v enableParallelBuilding ]]; then + enableParallelBuilding=1; + echo "cmake: enabled parallel building"; + fi; + runHook postConfigure +} +compressManPages () +{ + + local dir="$1"; + if [ -L "$dir"/share ] || [ -L "$dir"/share/man ] || [ ! -d "$dir/share/man" ]; then + return; + fi; + echo "gzipping man pages under $dir/share/man/"; + find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | while IFS= read -r -d '' f; do + if gzip -c -n "$f" > "$f".gz; then + rm "$f"; + else + rm "$f".gz; + fi; + done; + find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | sort -z | while IFS= read -r -d '' f; do + local target; + target="$(readlink -f "$f")"; + if [ -f "$target".gz ]; then + ln -sf "$target".gz "$f".gz && rm "$f"; + fi; + done +} +configurePhase () +{ + + runHook preConfigure; + : ${configureScript=}; + : ${configureFlags=}; + if [[ -z "$configureScript" && -x ./configure ]]; then + configureScript=./configure; + fi; + if [ -z "${dontFixLibtool:-}" ]; then + export lt_cv_deplibs_check_method="${lt_cv_deplibs_check_method-pass_all}"; + local i; + find . -iname "ltmain.sh" -print0 | while IFS='' read -r -d '' i; do + echo "fixing libtool script $i"; + fixLibtool "$i"; + done; + fi; + if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then + configureFlags="${prefixKey:---prefix=}$prefix $configureFlags"; + fi; + if [[ -f "$configureScript" ]]; then + if [ -z "${dontAddDisableDepTrack:-}" ]; then + if grep -q dependency-tracking "$configureScript"; then + configureFlags="--disable-dependency-tracking $configureFlags"; + fi; + fi; + if [ -z "${dontDisableStatic:-}" ]; then + if grep -q enable-static "$configureScript"; then + configureFlags="--disable-static $configureFlags"; + fi; + fi; + fi; + if [ -n "$configureScript" ]; then + local flagsArray=($configureFlags "${configureFlagsArray[@]}"); + echoCmd 'configure flags' "${flagsArray[@]}"; + $configureScript "${flagsArray[@]}"; + unset flagsArray; + else + echo "no configure script, doing nothing"; + fi; + runHook postConfigure +} +consumeEntire () +{ + + if IFS='' read -r -d '' $1; then + echo "consumeEntire(): ERROR: Input null bytes, won't process" 1>&2; + return 1; + fi +} +distPhase () +{ + + runHook preDist; + local flagsArray=($distFlags "${distFlagsArray[@]}" ${distTarget:-dist}); + echo 'dist flags: %q' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + if [ "${dontCopyDist:-0}" != 1 ]; then + mkdir -p "$out/tarballs"; + cp -pvd ${tarballs:-*.tar.gz} "$out/tarballs"; + fi; + runHook postDist +} +dropIconThemeCache () +{ + + if [[ -z "${dontDropIconThemeCache:-}" ]]; then + local icondir="${out:?}/share/icons"; + if [[ -d "${icondir}" ]]; then + find "${icondir}" -name 'icon-theme.cache' -print0 | while IFS= read -r -d '' file; do + echo "Removing ${file}"; + rm -f "${file}"; + done; + fi; + fi +} +dumpVars () +{ + + if [ "${noDumpEnvVars:-0}" != 1 ]; then + export 2> /dev/null >| "$NIX_BUILD_TOP/env-vars" || true; + fi +} +echoCmd () +{ + + printf "%s:" "$1"; + shift; + printf ' %q' "$@"; + echo +} +exitHandler () +{ + + exitCode="$?"; + set +e; + if [ -n "${showBuildStats:-}" ]; then + read -r -d '' -a buildTimes < <(times); + echo "build times:"; + echo "user time for the shell ${buildTimes[0]}"; + echo "system time for the shell ${buildTimes[1]}"; + echo "user time for all child processes ${buildTimes[2]}"; + echo "system time for all child processes ${buildTimes[3]}"; + fi; + if (( "$exitCode" != 0 )); then + runHook failureHook; + if [ -n "${succeedOnFailure:-}" ]; then + echo "build failed with exit code $exitCode (ignored)"; + mkdir -p "$out/nix-support"; + printf "%s" "$exitCode" > "$out/nix-support/failed"; + return 0; + fi; + else + runHook exitHook; + fi; + return "$exitCode" +} +findGdkPixbufLoaders () +{ + + local loadersCache="$1/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"; + if [[ -f "$loadersCache" ]]; then + if [[ -f "${GDK_PIXBUF_MODULE_FILE-}" ]]; then + if (( "$(cat "$loadersCache" | wc -l)" > "$(cat "$GDK_PIXBUF_MODULE_FILE" | wc -l)" )); then + export GDK_PIXBUF_MODULE_FILE="$loadersCache"; + fi; + else + export GDK_PIXBUF_MODULE_FILE="$loadersCache"; + fi; + fi +} +findInputs () +{ + + local -r pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit -1; + local varVar="${pkgAccumVarVars[hostOffset + 1]}"; + local varRef="$varVar[$((targetOffset - hostOffset))]"; + local var="${!varRef}"; + unset -v varVar varRef; + local varSlice="$var[*]"; + case "${!varSlice-}" in + *" $pkg "*) + return 0 + ;; + esac; + unset -v varSlice; + eval "$var"'+=("$pkg")'; + if ! [ -e "$pkg" ]; then + echo "build input $pkg does not exist" 1>&2; + exit 1; + fi; + function mapOffset () + { + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi + }; + local relHostOffset; + for relHostOffset in "${allPlatOffsets[@]}"; + do + local files="${propagatedDepFilesVars[relHostOffset + 1]}"; + local hostOffsetNext; + mapOffset "$relHostOffset" hostOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + local relTargetOffset; + for relTargetOffset in "${allPlatOffsets[@]}"; + do + (( "$relHostOffset" <= "$relTargetOffset" )) || continue; + local fileRef="${files}[$relTargetOffset - $relHostOffset]"; + local file="${!fileRef}"; + unset -v fileRef; + local targetOffsetNext; + mapOffset "$relTargetOffset" targetOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + [[ -f "$pkg/nix-support/$file" ]] || continue; + local pkgNext; + read -r -d '' pkgNext < "$pkg/nix-support/$file" || true; + for pkgNext in $pkgNext; + do + findInputs "$pkgNext" "$hostOffsetNext" "$targetOffsetNext"; + done; + done; + done +} +fixCmakeFiles () +{ + + echo "fixing cmake files..."; + find "$1" \( -type f -name "*.cmake" -o -name "*.cmake.in" -o -name CMakeLists.txt \) -print | while read fn; do + sed -e 's^/usr\([ /]\|$\)^/var/empty\1^g' -e 's^/opt\([ /]\|$\)^/var/empty\1^g' < "$fn" > "$fn.tmp"; + mv "$fn.tmp" "$fn"; + done +} +fixLibtool () +{ + + local search_path; + for flag in $NIX_LDFLAGS; + do + case $flag in + -L*) + search_path+=" ${flag#-L}" + ;; + esac; + done; + sed -i "$1" -e "s^eval \(sys_lib_search_path=\).*^\1'$search_path'^" -e 's^eval sys_lib_.+search_path=.*^^' +} +fixupPhase () +{ + + local output; + for output in $outputs; + do + if [ -e "${!output}" ]; then + chmod -R u+w "${!output}"; + fi; + done; + runHook preFixup; + local output; + for output in $outputs; + do + prefix="${!output}" runHook fixupOutput; + done; + declare -ra flatVars=(depsBuildBuildPropagated propagatedNativeBuildInputs depsBuildTargetPropagated depsHostHostPropagated propagatedBuildInputs depsTargetTargetPropagated); + declare -ra flatFiles=("${propagatedBuildDepFiles[@]}" "${propagatedHostDepFiles[@]}" "${propagatedTargetDepFiles[@]}"); + local propagatedInputsIndex; + for propagatedInputsIndex in "${!flatVars[@]}"; + do + local propagatedInputsSlice="${flatVars[$propagatedInputsIndex]}[@]"; + local propagatedInputsFile="${flatFiles[$propagatedInputsIndex]}"; + [[ -n "${!propagatedInputsSlice}" ]] || continue; + mkdir -p "${!outputDev}/nix-support"; + printWords ${!propagatedInputsSlice} > "${!outputDev}/nix-support/$propagatedInputsFile"; + done; + if [ -n "${setupHook:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + substituteAll "$setupHook" "${!outputDev}/nix-support/setup-hook"; + fi; + if [ -n "${setupHooks:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + local hook; + for hook in $setupHooks; + do + local content; + consumeEntire content < "$hook"; + substituteAllStream content "file '$hook'" >> "${!outputDev}/nix-support/setup-hook"; + unset -v content; + done; + unset -v hook; + fi; + if [ -n "${propagatedUserEnvPkgs:-}" ]; then + mkdir -p "${!outputBin}/nix-support"; + printWords $propagatedUserEnvPkgs > "${!outputBin}/nix-support/propagated-user-env-packages"; + fi; + runHook postFixup +} +genericBuild () +{ + + if [ -f "${buildCommandPath:-}" ]; then + source "$buildCommandPath"; + return; + fi; + if [ -n "${buildCommand:-}" ]; then + eval "$buildCommand"; + return; + fi; + if [ -z "${phases:-}" ]; then + phases="${prePhases:-} unpackPhase patchPhase ${preConfigurePhases:-} configurePhase ${preBuildPhases:-} buildPhase checkPhase ${preInstallPhases:-} installPhase ${preFixupPhases:-} fixupPhase installCheckPhase ${preDistPhases:-} distPhase ${postPhases:-}"; + fi; + for curPhase in $phases; + do + if [[ "$curPhase" = unpackPhase && -n "${dontUnpack:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = patchPhase && -n "${dontPatch:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = configurePhase && -n "${dontConfigure:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = buildPhase && -n "${dontBuild:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = checkPhase && -z "${doCheck:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = installPhase && -n "${dontInstall:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = fixupPhase && -n "${dontFixup:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = installCheckPhase && -z "${doInstallCheck:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = distPhase && -z "${doDist:-}" ]]; then + continue; + fi; + if [[ -n $NIX_LOG_FD ]]; then + echo "@nix { \"action\": \"setPhase\", \"phase\": \"$curPhase\" }" 1>&$NIX_LOG_FD; + fi; + showPhaseHeader "$curPhase"; + dumpVars; + eval "${!curPhase:-$curPhase}"; + if [ "$curPhase" = unpackPhase ]; then + cd "${sourceRoot:-.}"; + fi; + done +} +getHostRole () +{ + + getRole "$hostOffset" +} +getHostRoleEnvHook () +{ + + getRole "$depHostOffset" +} +getRole () +{ + + case $1 in + -1) + role_post='_FOR_BUILD' + ;; + 0) + role_post='' + ;; + 1) + role_post='_FOR_TARGET' + ;; + *) + echo "pkg-config-wrapper-0.29.2: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +getTargetRole () +{ + + getRole "$targetOffset" +} +getTargetRoleEnvHook () +{ + + getRole "$depTargetOffset" +} +getTargetRoleWrapper () +{ + + case $targetOffset in + -1) + export NIX_PKG_CONFIG_WRAPPER_TARGET_BUILD_x86_64_unknown_linux_gnu=1 + ;; + 0) + export NIX_PKG_CONFIG_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1 + ;; + 1) + export NIX_PKG_CONFIG_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu=1 + ;; + *) + echo "pkg-config-wrapper-0.29.2: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +gettextDataDirsHook () +{ + + getHostRoleEnvHook; + if [ -d "$1/share/gettext" ]; then + addToSearchPath "GETTEXTDATADIRS${role_post}" "$1/share/gettext"; + fi +} +glibPreFixupPhase () +{ + + if [ -d "$prefix/share/glib-2.0/schemas" ]; then + mkdir -p "${!outputLib}/share/gsettings-schemas/$name/glib-2.0"; + mv "$prefix/share/glib-2.0/schemas" "${!outputLib}/share/gsettings-schemas/$name/glib-2.0/"; + fi; + addToSearchPath GSETTINGS_SCHEMAS_PATH "${!outputLib}/share/gsettings-schemas/$name" +} +glibPreInstallPhase () +{ + + makeFlagsArray+=("gsettingsschemadir=${!outputLib}/share/gsettings-schemas/$name/glib-2.0/schemas/") +} +header () +{ + + echo "$1" +} +installCheckPhase () +{ + + runHook preInstallCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom installCheckPhase, doing nothing"; + else + if [[ -z "${installCheckTarget:-}" ]] && ! make -n ${makefile:+-f $makefile} ${installCheckTarget:-installcheck} > /dev/null 2>&1; then + echo "no installcheck target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}} SHELL=$SHELL $makeFlags "${makeFlagsArray[@]}" $installCheckFlags "${installCheckFlagsArray[@]}" ${installCheckTarget:-installcheck}); + echoCmd 'installcheck flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + fi; + runHook postInstallCheck +} +installPhase () +{ + + runHook preInstall; + if [ -n "$prefix" ]; then + mkdir -p "$prefix"; + fi; + local flagsArray=(SHELL=$SHELL $makeFlags "${makeFlagsArray[@]}" $installFlags "${installFlagsArray[@]}" ${installTargets:-install}); + echoCmd 'install flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + runHook postInstall +} +isELF () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [ "$magic" = 'ELF' ]; then + return 0; + else + return 1; + fi +} +isMachO () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then + return 0; + else + return 1; + fi; + fi; + fi +} +isScript () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + read -r -n 2 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" =~ \#! ]]; then + return 0; + else + return 1; + fi +} +makeCmakeFindLibs () +{ + + isystem_seen=; + iframework_seen=; + for flag in ${NIX_CFLAGS_COMPILE-} ${NIX_LDFLAGS-}; + do + if test -n "$isystem_seen" && test -d "$flag"; then + isystem_seen=; + export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag}"; + else + if test -n "$iframework_seen" && test -d "$flag"; then + iframework_seen=; + export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag}"; + else + isystem_seen=; + iframework_seen=; + case $flag in + -I*) + export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag:2}" + ;; + -L*) + export CMAKE_LIBRARY_PATH="${CMAKE_LIBRARY_PATH-}${CMAKE_LIBRARY_PATH:+:}${flag:2}" + ;; + -F*) + export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag:2}" + ;; + -isystem) + isystem_seen=1 + ;; + -iframework) + iframework_seen=1 + ;; + esac; + fi; + fi; + done +} +make_glib_find_gsettings_schemas () +{ + + for maybe_dir in "$1"/share/gsettings-schemas/*; + do + if [[ -d "$maybe_dir/glib-2.0/schemas" ]]; then + addToSearchPath GSETTINGS_SCHEMAS_PATH "$maybe_dir"; + fi; + done +} +mapOffset () +{ + + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi +} +moveToOutput () +{ + + local patt="$1"; + local dstOut="$2"; + local output; + for output in $outputs; + do + if [ "${!output}" = "$dstOut" ]; then + continue; + fi; + local srcPath; + for srcPath in "${!output}"/$patt; + do + if [ ! -e "$srcPath" ] && [ ! -L "$srcPath" ]; then + continue; + fi; + if [ "$dstOut" = REMOVE ]; then + echo "Removing $srcPath"; + rm -r "$srcPath"; + else + local dstPath="$dstOut${srcPath#${!output}}"; + echo "Moving $srcPath to $dstPath"; + if [ -d "$dstPath" ] && [ -d "$srcPath" ]; then + rmdir "$srcPath" --ignore-fail-on-non-empty; + if [ -d "$srcPath" ]; then + mv -t "$dstPath" "$srcPath"/*; + rmdir "$srcPath"; + fi; + else + mkdir -p "$(readlink -m "$dstPath/..")"; + mv "$srcPath" "$dstPath"; + fi; + fi; + local srcParent="$(readlink -m "$srcPath/..")"; + if rmdir "$srcParent"; then + echo "Removing empty $srcParent/ and (possibly) its parents"; + rmdir -p --ignore-fail-on-non-empty "$(readlink -m "$srcParent/..")" 2> /dev/null || true; + fi; + done; + done +} +ninjaBuildPhase () +{ + + runHook preBuild; + local buildCores=1; + if [ "${enableParallelBuilding-1}" ]; then + buildCores="$NIX_BUILD_CORES"; + fi; + local flagsArray=(-j$buildCores -l$NIX_BUILD_CORES $ninjaFlags "${ninjaFlagsArray[@]}"); + echoCmd 'build flags' "${flagsArray[@]}"; + ninja "${flagsArray[@]}" | cat; + runHook postBuild +} +ninjaCheckPhase () +{ + + runHook preCheck; + if [ -z "${checkTarget:-}" ]; then + if ninja -t query test > /dev/null 2>&1; then + checkTarget=test; + fi; + fi; + if [ -z "${checkTarget:-}" ]; then + echo "no test target found in ninja, doing nothing"; + else + local buildCores=1; + if [ "${enableParallelChecking-1}" ]; then + buildCores="$NIX_BUILD_CORES"; + fi; + local flagsArray=(-j$buildCores -l$NIX_BUILD_CORES $ninjaFlags "${ninjaFlagsArray[@]}" $checkTarget); + echoCmd 'check flags' "${flagsArray[@]}"; + ninja "${flagsArray[@]}" | cat; + fi; + runHook postCheck +} +ninjaInstallPhase () +{ + + runHook preInstall; + local flagsArray=($ninjaFlags "${ninjaFlagsArray[@]}" ${installTargets:-install}); + echoCmd 'install flags' "${flagsArray[@]}"; + ninja "${flagsArray[@]}" | cat; + runHook postInstall +} +patchELF () +{ + + local dir="$1"; + [ -e "$dir" ] || return 0; + header "shrinking RPATHs of ELF executables and libraries in $dir"; + local i; + while IFS= read -r -d '' i; do + if [[ "$i" =~ .build-id ]]; then + continue; + fi; + if ! isELF "$i"; then + continue; + fi; + echo "shrinking $i"; + patchelf --shrink-rpath "$i" || true; + done < <(find "$dir" -type f -print0); + stopNest +} +patchPhase () +{ + + runHook prePatch; + for i in ${patches:-}; + do + header "applying patch $i" 3; + local uncompress=cat; + case "$i" in + *.gz) + uncompress="gzip -d" + ;; + *.bz2) + uncompress="bzip2 -d" + ;; + *.xz) + uncompress="xz -d" + ;; + *.lzma) + uncompress="lzma -d" + ;; + esac; + $uncompress < "$i" 2>&1 | patch ${patchFlags:--p1}; + done; + runHook postPatch +} +patchShebangs () +{ + + local pathName; + if [[ "$1" == "--host" ]]; then + pathName=HOST_PATH; + shift; + else + if [[ "$1" == "--build" ]]; then + pathName=PATH; + shift; + fi; + fi; + echo "patching script interpreter paths in $@"; + local f; + local oldPath; + local newPath; + local arg0; + local args; + local oldInterpreterLine; + local newInterpreterLine; + if [[ $# -eq 0 ]]; then + echo "No arguments supplied to patchShebangs" 1>&2; + return 0; + fi; + local f; + while IFS= read -r -d '' f; do + isScript "$f" || continue; + read -r oldInterpreterLine < "$f"; + read -r oldPath arg0 args <<< "${oldInterpreterLine:2}"; + if [[ -z "$pathName" ]]; then + if [[ -n $strictDeps && $f == "$NIX_STORE"* ]]; then + pathName=HOST_PATH; + else + pathName=PATH; + fi; + fi; + if [[ "$oldPath" == *"/bin/env" ]]; then + if [[ $arg0 == "-"* || $arg0 == *"="* ]]; then + echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" 1>&2; + exit 1; + fi; + newPath="$(PATH="${!pathName}" command -v "$arg0" || true)"; + else + if [[ -z $oldPath ]]; then + oldPath="/bin/sh"; + fi; + newPath="$(PATH="${!pathName}" command -v "$(basename "$oldPath")" || true)"; + args="$arg0 $args"; + fi; + newInterpreterLine="$newPath $args"; + newInterpreterLine=${newInterpreterLine%${newInterpreterLine##*[![:space:]]}}; + if [[ -n "$oldPath" && "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ]]; then + if [[ -n "$newPath" && "$newPath" != "$oldPath" ]]; then + echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\""; + escapedInterpreterLine=${newInterpreterLine//\\/\\\\}; + timestamp=$(stat --printf "%y" "$f"); + sed -i -e "1 s|.*|#\!$escapedInterpreterLine|" "$f"; + touch --date "$timestamp" "$f"; + fi; + fi; + done < <(find "$@" -type f -perm -0100 -print0); + stopNest +} +patchShebangsAuto () +{ + + if [[ -z "${dontPatchShebangs-}" && -e "$prefix" ]]; then + if [[ "$output" != out && "$output" = "$outputDev" ]]; then + patchShebangs --build "$prefix"; + else + patchShebangs --host "$prefix"; + fi; + fi +} +pkgConfigWrapper_addPkgConfigPath () +{ + + local role_post; + getHostRoleEnvHook; + addToSearchPath "PKG_CONFIG_PATH${role_post}" "$1/lib/pkgconfig"; + addToSearchPath "PKG_CONFIG_PATH${role_post}" "$1/share/pkgconfig" +} +printLines () +{ + + (( "$#" > 0 )) || return 0; + printf '%s\n' "$@" +} +printWords () +{ + + (( "$#" > 0 )) || return 0; + printf '%s ' "$@" +} +runHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook; + for hook in "_callImplicitHook 0 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + _eval "$hook" "$@"; + done; + return 0 +} +runOneHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook ret=1; + for hook in "_callImplicitHook 1 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + if _eval "$hook" "$@"; then + ret=0; + break; + fi; + done; + return "$ret" +} +showPhaseHeader () +{ + + local phase="$1"; + case "$phase" in + unpackPhase) + header "unpacking sources" + ;; + patchPhase) + header "patching sources" + ;; + configurePhase) + header "configuring" + ;; + buildPhase) + header "building" + ;; + checkPhase) + header "running tests" + ;; + installPhase) + header "installing" + ;; + fixupPhase) + header "post-installation fixup" + ;; + installCheckPhase) + header "running install tests" + ;; + *) + header "$phase" + ;; + esac +} +stopNest () +{ + + true +} +stripDirs () +{ + + local cmd="$1"; + local dirs="$2"; + local stripFlags="$3"; + local dirsNew=; + local d; + for d in ${dirs}; + do + if [ -d "$prefix/$d" ]; then + dirsNew="${dirsNew} $prefix/$d "; + fi; + done; + dirs=${dirsNew}; + if [ -n "${dirs}" ]; then + header "stripping (with command $cmd and flags $stripFlags) in$dirs"; + find $dirs -type f -exec $cmd $stripFlags '{}' \; 2> /dev/null; + stopNest; + fi +} +stripHash () +{ + + local strippedName casematchOpt=0; + strippedName="$(basename -- "$1")"; + shopt -q nocasematch && casematchOpt=1; + shopt -u nocasematch; + if [[ "$strippedName" =~ ^[a-z0-9]{32}- ]]; then + echo "${strippedName:33}"; + else + echo "$strippedName"; + fi; + if (( casematchOpt )); then + shopt -s nocasematch; + fi +} +substitute () +{ + + local input="$1"; + local output="$2"; + shift 2; + if [ ! -f "$input" ]; then + echo "substitute(): ERROR: file '$input' does not exist" 1>&2; + return 1; + fi; + local content; + consumeEntire content < "$input"; + if [ -e "$output" ]; then + chmod +w "$output"; + fi; + substituteStream content "file '$input'" "$@" > "$output" +} +substituteAll () +{ + + local input="$1"; + local output="$2"; + local -a args=(); + _allFlags; + substitute "$input" "$output" "${args[@]}" +} +substituteAllInPlace () +{ + + local fileName="$1"; + shift; + substituteAll "$fileName" "$fileName" "$@" +} +substituteAllStream () +{ + + local -a args=(); + _allFlags; + substituteStream "$1" "$2" "${args[@]}" +} +substituteInPlace () +{ + + local fileName="$1"; + shift; + substitute "$fileName" "$fileName" "$@" +} +substituteStream () +{ + + local var=$1; + local description=$2; + shift 2; + while (( "$#" )); do + case "$1" in + --replace) + pattern="$2"; + replacement="$3"; + shift 3; + local savedvar; + savedvar="${!var}"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'; + if [ "$pattern" != "$replacement" ]; then + if [ "${!var}" == "$savedvar" ]; then + echo "substituteStream(): WARNING: pattern '$pattern' doesn't match anything in $description" 1>&2; + fi; + fi + ;; + --subst-var) + local varName="$2"; + shift 2; + if ! [[ "$varName" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then + echo "substituteStream(): ERROR: substitution variables must be valid Bash names, \"$varName\" isn't." 1>&2; + return 1; + fi; + if [ -z ${!varName+x} ]; then + echo "substituteStream(): ERROR: variable \$$varName is unset" 1>&2; + return 1; + fi; + pattern="@$varName@"; + replacement="${!varName}"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}' + ;; + --subst-var-by) + pattern="@$2@"; + replacement="$3"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'; + shift 3 + ;; + *) + echo "substituteStream(): ERROR: Invalid command line argument: $1" 1>&2; + return 1 + ;; + esac; + done; + printf "%s" "${!var}" +} +sysconfigdataHook () +{ + + if [ "$1" = '/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11' ]; then + export _PYTHON_HOST_PLATFORM='linux-x86_64'; + export _PYTHON_SYSCONFIGDATA_NAME='_sysconfigdata__linux_x86_64-linux-gnu'; + fi +} +toPythonPath () +{ + + local paths="$1"; + local result=; + for i in $paths; + do + p="$i/lib/python3.9/site-packages"; + result="${result}${result:+:}$p"; + done; + echo $result +} +unpackFile () +{ + + curSrc="$1"; + header "unpacking source archive $curSrc" 3; + if ! runOneHook unpackCmd "$curSrc"; then + echo "do not know how to unpack source archive $curSrc"; + exit 1; + fi +} +unpackPhase () +{ + + runHook preUnpack; + if [ -z "${srcs:-}" ]; then + if [ -z "${src:-}" ]; then + echo 'variable $src or $srcs should point to the source'; + exit 1; + fi; + srcs="$src"; + fi; + local dirsBefore=""; + for i in *; + do + if [ -d "$i" ]; then + dirsBefore="$dirsBefore $i "; + fi; + done; + for i in $srcs; + do + unpackFile "$i"; + done; + : ${sourceRoot=}; + if [ -n "${setSourceRoot:-}" ]; then + runOneHook setSourceRoot; + else + if [ -z "$sourceRoot" ]; then + for i in *; + do + if [ -d "$i" ]; then + case $dirsBefore in + *\ $i\ *) + + ;; + *) + if [ -n "$sourceRoot" ]; then + echo "unpacker produced multiple directories"; + exit 1; + fi; + sourceRoot="$i" + ;; + esac; + fi; + done; + fi; + fi; + if [ -z "$sourceRoot" ]; then + echo "unpacker appears to have produced no directories"; + exit 1; + fi; + echo "source root is $sourceRoot"; + if [ "${dontMakeSourcesWritable:-0}" != 1 ]; then + chmod -R u+w -- "$sourceRoot"; + fi; + runHook postUnpack +} +updateSourceDateEpoch () +{ + + local path="$1"; + local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ %p\0' | sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1)); + local time="${res[0]//\.[0-9]*/}"; + local newestFile="${res[1]}"; + if [ "${time:-0}" -gt "$SOURCE_DATE_EPOCH" ]; then + echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile"; + export SOURCE_DATE_EPOCH="$time"; + local now="$(date +%s)"; + if [ "$time" -gt $((now - 60)) ]; then + echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic"; + fi; + fi +} +PATH="$PATH:$nix_saved_PATH" +export NIX_BUILD_TOP="$(mktemp -d -t nix-shell.XXXXXX)" +export TMP="$NIX_BUILD_TOP" +export TMPDIR="$NIX_BUILD_TOP" +export TEMP="$NIX_BUILD_TOP" +export TEMPDIR="$NIX_BUILD_TOP" +eval "$shellHook" diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..b1054f5 --- /dev/null +++ b/flake.lock @@ -0,0 +1,43 @@ +{ + "nodes": { + "flake-utils": { + "locked": { + "lastModified": 1649676176, + "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1650034868, + "narHash": "sha256-OAaf5BdWKGXTXvYnbvJuoQjSWnVKgt1cIOChF0MFt2o=", + "owner": "PapaTutuWawa", + "repo": "nixpkgs", + "rev": "13a5646d450052b88067cab37b198f8a2737e431", + "type": "github" + }, + "original": { + "owner": "PapaTutuWawa", + "ref": "nixos-unstable-flutter-2.13.0-0.1.pre", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix index ef5f494..fa969aa 100644 --- a/flake.nix +++ b/flake.nix @@ -33,8 +33,29 @@ flutterPackages.beta pinnedJDK android.platform-tools flutterPackages.dart-beta # Flutter gitlint jq # Code hygiene ripgrep # General utilities + + # Flutter dependencies for linux desktop + atk + cairo + clang + cmake + epoxy + gdk-pixbuf + glib + gtk3 + harfbuzz + ninja + pango + pcre + pkg-config + xorg.libX11 + xorg.xorgproto ]; + # Make Flutter build on desktop + CPATH = "${pkgs.xorg.libX11.dev}/include:${pkgs.xorg.xorgproto}/include"; + LD_LIBRARY_PATH = with pkgs; lib.makeLibraryPath [ atk cairo epoxy gdk-pixbuf glib gtk3 harfbuzz pango ]; + ANDROID_HOME = "${android.androidsdk}/libexec/android-sdk"; JAVA_HOME = pinnedJDK; ANDROID_AVD_HOME = (toString ./.) + "/.android/avd"; diff --git a/packages/moxdns/.gitignore b/packages/moxdns/.gitignore new file mode 100644 index 0000000..96486fd --- /dev/null +++ b/packages/moxdns/.gitignore @@ -0,0 +1,30 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +.packages +build/ diff --git a/packages/moxdns/.metadata b/packages/moxdns/.metadata new file mode 100644 index 0000000..71c027b --- /dev/null +++ b/packages/moxdns/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: 13a2fb10b838971ce211230f8ffdd094c14af02c + channel: beta + +project_type: package diff --git a/packages/moxdns/CHANGELOG.md b/packages/moxdns/CHANGELOG.md new file mode 100644 index 0000000..41cc7d8 --- /dev/null +++ b/packages/moxdns/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.0.1 + +* TODO: Describe initial release. diff --git a/packages/moxdns/LICENSE b/packages/moxdns/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/packages/moxdns/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/packages/moxdns/README.md b/packages/moxdns/README.md new file mode 100644 index 0000000..b276b0d --- /dev/null +++ b/packages/moxdns/README.md @@ -0,0 +1,4 @@ +# moxdns + +A very small wrapper around platform-"native" methods to perform +DNS SRV lookups. Not intended for use outside of [Moxxy](https://codeberg.org/moxxy/moxxyv2). diff --git a/packages/moxdns/analysis_options.yaml b/packages/moxdns/analysis_options.yaml new file mode 100644 index 0000000..a5744c1 --- /dev/null +++ b/packages/moxdns/analysis_options.yaml @@ -0,0 +1,4 @@ +include: package:flutter_lints/flutter.yaml + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/moxdns/example/.gitignore b/packages/moxdns/example/.gitignore new file mode 100644 index 0000000..a8e938c --- /dev/null +++ b/packages/moxdns/example/.gitignore @@ -0,0 +1,47 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Web related +lib/generated_plugin_registrant.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/packages/moxdns/example/.metadata b/packages/moxdns/example/.metadata new file mode 100644 index 0000000..625541c --- /dev/null +++ b/packages/moxdns/example/.metadata @@ -0,0 +1,30 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled. + +version: + revision: 13a2fb10b838971ce211230f8ffdd094c14af02c + channel: beta + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c + base_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c + - platform: android + create_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c + base_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/packages/moxdns/example/README.md b/packages/moxdns/example/README.md new file mode 100644 index 0000000..b364785 --- /dev/null +++ b/packages/moxdns/example/README.md @@ -0,0 +1,16 @@ +# moxdns_example + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/packages/moxdns/example/analysis_options.yaml b/packages/moxdns/example/analysis_options.yaml new file mode 100644 index 0000000..61b6c4d --- /dev/null +++ b/packages/moxdns/example/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/moxdns/example/android/.gitignore b/packages/moxdns/example/android/.gitignore new file mode 100644 index 0000000..6f56801 --- /dev/null +++ b/packages/moxdns/example/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/packages/moxdns/example/android/app/build.gradle b/packages/moxdns/example/android/app/build.gradle new file mode 100644 index 0000000..990c2ff --- /dev/null +++ b/packages/moxdns/example/android/app/build.gradle @@ -0,0 +1,71 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "me.polynom.moxdns_example" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. + minSdkVersion flutter.minSdkVersion + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/packages/moxdns/example/android/app/src/debug/AndroidManifest.xml b/packages/moxdns/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..1771a3e --- /dev/null +++ b/packages/moxdns/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/packages/moxdns/example/android/app/src/main/AndroidManifest.xml b/packages/moxdns/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..e9031c7 --- /dev/null +++ b/packages/moxdns/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/packages/moxdns/example/android/app/src/main/kotlin/me/polynom/moxdns_example/MainActivity.kt b/packages/moxdns/example/android/app/src/main/kotlin/me/polynom/moxdns_example/MainActivity.kt new file mode 100644 index 0000000..af14989 --- /dev/null +++ b/packages/moxdns/example/android/app/src/main/kotlin/me/polynom/moxdns_example/MainActivity.kt @@ -0,0 +1,6 @@ +package me.polynom.moxdns_example + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/packages/moxdns/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/moxdns/example/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/packages/moxdns/example/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/moxdns/example/android/app/src/main/res/drawable/launch_background.xml b/packages/moxdns/example/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/packages/moxdns/example/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/moxdns/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/moxdns/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..db77bb4 Binary files /dev/null and b/packages/moxdns/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/packages/moxdns/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/moxdns/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..17987b7 Binary files /dev/null and b/packages/moxdns/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/packages/moxdns/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/moxdns/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..09d4391 Binary files /dev/null and b/packages/moxdns/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/packages/moxdns/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/moxdns/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..d5f1c8d Binary files /dev/null and b/packages/moxdns/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/packages/moxdns/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/moxdns/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..4d6372e Binary files /dev/null and b/packages/moxdns/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/packages/moxdns/example/android/app/src/main/res/values-night/styles.xml b/packages/moxdns/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..06952be --- /dev/null +++ b/packages/moxdns/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/moxdns/example/android/app/src/main/res/values/styles.xml b/packages/moxdns/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..cb1ef88 --- /dev/null +++ b/packages/moxdns/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/moxdns/example/android/app/src/profile/AndroidManifest.xml b/packages/moxdns/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..1771a3e --- /dev/null +++ b/packages/moxdns/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/packages/moxdns/example/android/build.gradle b/packages/moxdns/example/android/build.gradle new file mode 100644 index 0000000..83ae220 --- /dev/null +++ b/packages/moxdns/example/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.6.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.1.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/packages/moxdns/example/android/gradle.properties b/packages/moxdns/example/android/gradle.properties new file mode 100644 index 0000000..94adc3a --- /dev/null +++ b/packages/moxdns/example/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/packages/moxdns/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/moxdns/example/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..cc5527d --- /dev/null +++ b/packages/moxdns/example/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Jun 23 08:50:38 CEST 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/packages/moxdns/example/android/settings.gradle b/packages/moxdns/example/android/settings.gradle new file mode 100644 index 0000000..44e62bc --- /dev/null +++ b/packages/moxdns/example/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/packages/moxdns/example/lib/main.dart b/packages/moxdns/example/lib/main.dart new file mode 100644 index 0000000..c8688fe --- /dev/null +++ b/packages/moxdns/example/lib/main.dart @@ -0,0 +1,113 @@ +import 'package:flutter/material.dart'; + +import "package:moxdns/moxdns.dart"; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({Key? key}) : super(key: key); + + // This widget is the root of your application. + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Flutter Demo', + theme: ThemeData( + // This is the theme of your application. + // + // Try running your application with "flutter run". You'll see the + // application has a blue toolbar. Then, without quitting the app, try + // changing the primarySwatch below to Colors.green and then invoke + // "hot reload" (press "r" in the console where you ran "flutter run", + // or simply save your changes to "hot reload" in a Flutter IDE). + // Notice that the counter didn't reset back to zero; the application + // is not restarted. + primarySwatch: Colors.blue, + ), + home: const MyHomePage(title: 'Flutter Demo Home Page'), + ); + } +} + +class MyHomePage extends StatefulWidget { + const MyHomePage({Key? key, required this.title}) : super(key: key); + + // This widget is the home page of your application. It is stateful, meaning + // that it has a State object (defined below) that contains fields that affect + // how it looks. + + // This class is the configuration for the state. It holds the values (in this + // case the title) provided by the parent (in this case the App widget) and + // used by the build method of the State. Fields in a Widget subclass are + // always marked "final". + + final String title; + + @override + State createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + int _counter = 0; + + Future _query() async { + final results = await MoxdnsPlugin.srvQuery("_xmpps-client._tcp.disroot.org", false); + for (final r in results) { + print("- ${r.target}:${r.port}"); + } + } + + @override + Widget build(BuildContext context) { + // This method is rerun every time setState is called, for instance as done + // by the _incrementCounter method above. + // + // The Flutter framework has been optimized to make rerunning build methods + // fast, so that you can just rebuild anything that needs updating rather + // than having to individually change instances of widgets. + return Scaffold( + appBar: AppBar( + // Here we take the value from the MyHomePage object that was created by + // the App.build method, and use it to set our appbar title. + title: Text(widget.title), + ), + body: Center( + // Center is a layout widget. It takes a single child and positions it + // in the middle of the parent. + child: Column( + // Column is also a layout widget. It takes a list of children and + // arranges them vertically. By default, it sizes itself to fit its + // children horizontally, and tries to be as tall as its parent. + // + // Invoke "debug painting" (press "p" in the console, choose the + // "Toggle Debug Paint" action from the Flutter Inspector in Android + // Studio, or the "Toggle Debug Paint" command in Visual Studio Code) + // to see the wireframe for each widget. + // + // Column has various properties to control how it sizes itself and + // how it positions its children. Here we use mainAxisAlignment to + // center the children vertically; the main axis here is the vertical + // axis because Columns are vertical (the cross axis would be + // horizontal). + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text( + 'You have pushed the button this many times:', + ), + Text( + '$_counter', + style: Theme.of(context).textTheme.headline4, + ), + ], + ), + ), + floatingActionButton: FloatingActionButton( + onPressed: _query, + tooltip: 'Increment', + child: const Icon(Icons.add), + ), // This trailing comma makes auto-formatting nicer for build methods. + ); + } +} diff --git a/packages/moxdns/example/pubspec.lock b/packages/moxdns/example/pubspec.lock new file mode 100644 index 0000000..1fcb6b9 --- /dev/null +++ b/packages/moxdns/example/pubspec.lock @@ -0,0 +1,196 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.8.2" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.16.0" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + lints: + dependency: transitive + description: + name: lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.11" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.4" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.7.0" + moxdns: + dependency: "direct main" + description: + path: ".." + relative: true + source: path + version: "0.1.0" + moxdns_android: + dependency: transitive + description: + path: "../../moxdns_android" + relative: true + source: path + version: "0.0.1" + moxdns_platform_interface: + dependency: transitive + description: + path: "../../moxdns_platform_interface" + relative: true + source: path + version: "0.1.0" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.1" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.2" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.9" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" +sdks: + dart: ">=2.17.0-266.1.beta <3.0.0" + flutter: ">=2.5.0" diff --git a/packages/moxdns/example/pubspec.yaml b/packages/moxdns/example/pubspec.yaml new file mode 100644 index 0000000..fed7053 --- /dev/null +++ b/packages/moxdns/example/pubspec.yaml @@ -0,0 +1,91 @@ +name: moxdns_example +description: A new Flutter project. + +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +version: 1.0.0+1 + +environment: + sdk: ">=2.17.0-266.1.beta <3.0.0" + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + + moxdns: + path: ../ + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.2 + +dev_dependencies: + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^2.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages diff --git a/packages/moxdns/example/test/widget_test.dart b/packages/moxdns/example/test/widget_test.dart new file mode 100644 index 0000000..1658cc4 --- /dev/null +++ b/packages/moxdns/example/test/widget_test.dart @@ -0,0 +1,30 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility in the flutter_test package. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:moxdns_example/main.dart'; + +void main() { + testWidgets('Counter increments smoke test', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(const MyApp()); + + // Verify that our counter starts at 0. + expect(find.text('0'), findsOneWidget); + expect(find.text('1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.add)); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('0'), findsNothing); + expect(find.text('1'), findsOneWidget); + }); +} diff --git a/packages/moxdns/lib/moxdns.dart b/packages/moxdns/lib/moxdns.dart new file mode 100644 index 0000000..02b1567 --- /dev/null +++ b/packages/moxdns/lib/moxdns.dart @@ -0,0 +1,24 @@ +import "package:moxdns_platform_interface/moxdns_platform_interface.dart"; + +export "package:moxdns_platform_interface/moxdns_platform_interface.dart" show SrvRecord; + +class MoxdnsStubPlugin extends MoxdnsPlatform { + @override + Future> srvQuery(String domain, bool dnssec) async => const []; +} + +abstract class MoxdnsPlugin { + static MoxdnsPlatform _platform = MoxdnsStubPlugin(); + + static MoxdnsPlatform get platform => _platform; + + static set platform(MoxdnsPlatform platform) { + _platform = platform; + } + + /// Perform a DNS SRV query for [domain], optionally using DNSSEC if [dnssec] is true. + /// The order of the results is abitrary. + static Future> srvQuery(String domain, bool dnssec) async { + return await platform.srvQuery(domain, dnssec); + } +} diff --git a/packages/moxdns/pubspec.yaml b/packages/moxdns/pubspec.yaml new file mode 100644 index 0000000..4366401 --- /dev/null +++ b/packages/moxdns/pubspec.yaml @@ -0,0 +1,29 @@ +name: moxdns +description: A simple wrapper over platform native DNS methods +version: 0.1.0 +homepage: + +environment: + sdk: ">=2.17.0-266.1.beta <3.0.0" + flutter: ">=1.17.0" + +flutter: + plugin: + platforms: + android: + default_package: moxdns_android + +dependencies: + flutter: + sdk: flutter + + moxdns_platform_interface: + path: ../moxdns_platform_interface + moxdns_android: + path: ../moxdns_android + + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^2.0.0 diff --git a/packages/moxdns_android/.gitignore b/packages/moxdns_android/.gitignore new file mode 100644 index 0000000..96486fd --- /dev/null +++ b/packages/moxdns_android/.gitignore @@ -0,0 +1,30 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +.packages +build/ diff --git a/packages/moxdns_android/.metadata b/packages/moxdns_android/.metadata new file mode 100644 index 0000000..d460894 --- /dev/null +++ b/packages/moxdns_android/.metadata @@ -0,0 +1,30 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled. + +version: + revision: 13a2fb10b838971ce211230f8ffdd094c14af02c + channel: beta + +project_type: plugin + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c + base_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c + - platform: android + create_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c + base_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/packages/moxdns_android/CHANGELOG.md b/packages/moxdns_android/CHANGELOG.md new file mode 100644 index 0000000..41cc7d8 --- /dev/null +++ b/packages/moxdns_android/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.0.1 + +* TODO: Describe initial release. diff --git a/packages/moxdns_android/LICENSE b/packages/moxdns_android/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/packages/moxdns_android/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/packages/moxdns_android/analysis_options.yaml b/packages/moxdns_android/analysis_options.yaml new file mode 100644 index 0000000..a5744c1 --- /dev/null +++ b/packages/moxdns_android/analysis_options.yaml @@ -0,0 +1,4 @@ +include: package:flutter_lints/flutter.yaml + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/moxdns_android/android/.gitignore b/packages/moxdns_android/android/.gitignore new file mode 100644 index 0000000..161bdcd --- /dev/null +++ b/packages/moxdns_android/android/.gitignore @@ -0,0 +1,9 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures +.cxx diff --git a/packages/moxdns_android/android/build.gradle b/packages/moxdns_android/android/build.gradle new file mode 100644 index 0000000..651bbcb --- /dev/null +++ b/packages/moxdns_android/android/build.gradle @@ -0,0 +1,39 @@ +group 'me.polynom.moxdns_android' +version '1.0' + +buildscript { + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:4.1.0' + } +} + +rootProject.allprojects { + repositories { + google() + mavenCentral() + } +} + +apply plugin: 'com.android.library' + +android { + compileSdkVersion 31 + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + defaultConfig { + minSdkVersion 16 + } +} + +dependencies { + implementation "org.minidns:minidns-hla:1.0.0" +} \ No newline at end of file diff --git a/packages/moxdns_android/android/gradle/wrapper/gradle-wrapper.jar b/packages/moxdns_android/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..e708b1c Binary files /dev/null and b/packages/moxdns_android/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/packages/moxdns_android/android/gradle/wrapper/gradle-wrapper.properties b/packages/moxdns_android/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..da9702f --- /dev/null +++ b/packages/moxdns_android/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/packages/moxdns_android/android/gradlew b/packages/moxdns_android/android/gradlew new file mode 100755 index 0000000..4f906e0 --- /dev/null +++ b/packages/moxdns_android/android/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/packages/moxdns_android/android/gradlew.bat b/packages/moxdns_android/android/gradlew.bat new file mode 100644 index 0000000..ac1b06f --- /dev/null +++ b/packages/moxdns_android/android/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/packages/moxdns_android/android/settings.gradle b/packages/moxdns_android/android/settings.gradle new file mode 100644 index 0000000..4be2cbe --- /dev/null +++ b/packages/moxdns_android/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'moxdns_android' diff --git a/packages/moxdns_android/android/src/main/AndroidManifest.xml b/packages/moxdns_android/android/src/main/AndroidManifest.xml new file mode 100644 index 0000000..79d5f05 --- /dev/null +++ b/packages/moxdns_android/android/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + diff --git a/packages/moxdns_android/android/src/main/java/me/polynom/moxdns_android/MoxdnsAndroidPlugin.java b/packages/moxdns_android/android/src/main/java/me/polynom/moxdns_android/MoxdnsAndroidPlugin.java new file mode 100644 index 0000000..be760bb --- /dev/null +++ b/packages/moxdns_android/android/src/main/java/me/polynom/moxdns_android/MoxdnsAndroidPlugin.java @@ -0,0 +1,75 @@ +package me.polynom.moxdns_android; + +import androidx.annotation.NonNull; + +import org.minidns.hla.DnssecResolverApi; +import org.minidns.hla.ResolutionUnsuccessfulException; +import org.minidns.hla.ResolverResult; +import org.minidns.record.SRV; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import io.flutter.embedding.engine.plugins.FlutterPlugin; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; +import io.flutter.plugin.common.MethodChannel.MethodCallHandler; +import io.flutter.plugin.common.MethodChannel.Result; + +/** MoxdnsAndroidPlugin */ +public class MoxdnsAndroidPlugin implements FlutterPlugin, MethodCallHandler { + /// The MethodChannel that will the communication between Flutter and native Android + /// + /// This local reference serves to register the plugin with the Flutter Engine and unregister it + /// when the Flutter Engine is detached from the Activity + private MethodChannel channel; + + @Override + public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) { + channel = new MethodChannel(flutterPluginBinding.getBinaryMessenger(), "me.polynom.moxdns_android"); + channel.setMethodCallHandler(this); + } + + @Override + public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) { + if (call.method.equals("srvQuery")) { + ArrayList args = (ArrayList) call.arguments; + String domain = (String) args.get(0); + boolean dnssec = (boolean) args.get(1); + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + try { + ResolverResult dns_result = DnssecResolverApi.INSTANCE.resolve(domain, SRV.class); + // TODO: DNSSEC + Set records = dns_result.getAnswersOrEmptySet(); + ArrayList tmp = new ArrayList(); + for (SRV srv : records) { + tmp.add(new HashMap() {{ + put("target", srv.target.toString()); + put("port", String.valueOf(srv.port)); + put("priority", String.valueOf(srv.priority)); + put("weight", String.valueOf(srv.weight)); + }}); + } + result.success(tmp); + } catch (IOException ex) { + ex.printStackTrace(); + result.error("1", ex.getMessage(), ex.getStackTrace()); + } + } + }); + thread.start(); + } else { + result.notImplemented(); + } + } + + @Override + public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { + channel.setMethodCallHandler(null); + } +} diff --git a/packages/moxdns_android/lib/moxdns_android.dart b/packages/moxdns_android/lib/moxdns_android.dart new file mode 100644 index 0000000..930d639 --- /dev/null +++ b/packages/moxdns_android/lib/moxdns_android.dart @@ -0,0 +1,38 @@ +import "package:moxdns/moxdns.dart"; +import "package:moxdns_platform_interface/moxdns_platform_interface.dart"; +import "package:flutter/services.dart"; + +class MoxdnsAndroidPlugin extends MoxdnsPlatform { + final MethodChannel _channel; + + MoxdnsAndroidPlugin() : _channel = MethodChannel("me.polynom.moxdns_android"), super(); + + static void registerWith() { + print("MoxdnsAndroidPlugin: Registering implementation"); + MoxdnsPlugin.platform = MoxdnsAndroidPlugin(); + } + + @override + Future> srvQuery(String domain, bool dnssec) async { + try { + final List results = await _channel.invokeMethod("srvQuery", [ domain, dnssec ]); + final records = List.empty(growable: true); + for (var record in results) { + if (record == null) { + continue; + } + final rr = Map.from(record); + records.add(SrvRecord( + rr["target"]!, + int.parse(rr["port"]!), + int.parse(rr["priority"]!), + int.parse(rr["weight"]!) + )); + } + return records; + } on PlatformException catch(e) { + print("moxdns_android: $e"); + return const []; + } + } +} diff --git a/packages/moxdns_android/lib/moxdns_android_method_channel.dart b/packages/moxdns_android/lib/moxdns_android_method_channel.dart new file mode 100644 index 0000000..44bcf02 --- /dev/null +++ b/packages/moxdns_android/lib/moxdns_android_method_channel.dart @@ -0,0 +1,17 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/services.dart'; + +import 'moxdns_android_platform_interface.dart'; + +/// An implementation of [MoxdnsAndroidPlatform] that uses method channels. +class MethodChannelMoxdnsAndroid extends MoxdnsAndroidPlatform { + /// The method channel used to interact with the native platform. + @visibleForTesting + final methodChannel = const MethodChannel('moxdns_android'); + + @override + Future getPlatformVersion() async { + final version = await methodChannel.invokeMethod('getPlatformVersion'); + return version; + } +} diff --git a/packages/moxdns_android/lib/moxdns_android_platform_interface.dart b/packages/moxdns_android/lib/moxdns_android_platform_interface.dart new file mode 100644 index 0000000..c1bc75b --- /dev/null +++ b/packages/moxdns_android/lib/moxdns_android_platform_interface.dart @@ -0,0 +1,29 @@ +import 'package:plugin_platform_interface/plugin_platform_interface.dart'; + +import 'moxdns_android_method_channel.dart'; + +abstract class MoxdnsAndroidPlatform extends PlatformInterface { + /// Constructs a MoxdnsAndroidPlatform. + MoxdnsAndroidPlatform() : super(token: _token); + + static final Object _token = Object(); + + static MoxdnsAndroidPlatform _instance = MethodChannelMoxdnsAndroid(); + + /// The default instance of [MoxdnsAndroidPlatform] to use. + /// + /// Defaults to [MethodChannelMoxdnsAndroid]. + static MoxdnsAndroidPlatform get instance => _instance; + + /// Platform-specific implementations should set this with their own + /// platform-specific class that extends [MoxdnsAndroidPlatform] when + /// they register themselves. + static set instance(MoxdnsAndroidPlatform instance) { + PlatformInterface.verifyToken(instance, _token); + _instance = instance; + } + + Future getPlatformVersion() { + throw UnimplementedError('platformVersion() has not been implemented.'); + } +} diff --git a/packages/moxdns_android/pubspec.yaml b/packages/moxdns_android/pubspec.yaml new file mode 100644 index 0000000..77de783 --- /dev/null +++ b/packages/moxdns_android/pubspec.yaml @@ -0,0 +1,31 @@ +name: moxdns_android +description: Android-specific implementation of moxdns +version: 0.1.0 +homepage: + +environment: + sdk: ">=2.17.0-266.1.beta <3.0.0" + flutter: ">=2.5.0" + +dependencies: + flutter: + sdk: flutter + plugin_platform_interface: 2.1.0 + + moxdns: + path: ../moxdns + moxdns_platform_interface: + path: ../moxdns_platform_interface + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^2.0.0 + +flutter: + plugin: + platforms: + android: + package: me.polynom.moxdns_android + pluginClass: MoxdnsAndroidPlugin + dartPluginClass: MoxdnsAndroidPlugin diff --git a/packages/moxdns_platform_interface/.gitignore b/packages/moxdns_platform_interface/.gitignore new file mode 100644 index 0000000..96486fd --- /dev/null +++ b/packages/moxdns_platform_interface/.gitignore @@ -0,0 +1,30 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +.packages +build/ diff --git a/packages/moxdns_platform_interface/.metadata b/packages/moxdns_platform_interface/.metadata new file mode 100644 index 0000000..71c027b --- /dev/null +++ b/packages/moxdns_platform_interface/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: 13a2fb10b838971ce211230f8ffdd094c14af02c + channel: beta + +project_type: package diff --git a/packages/moxdns_platform_interface/CHANGELOG.md b/packages/moxdns_platform_interface/CHANGELOG.md new file mode 100644 index 0000000..41cc7d8 --- /dev/null +++ b/packages/moxdns_platform_interface/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.0.1 + +* TODO: Describe initial release. diff --git a/packages/moxdns_platform_interface/LICENSE b/packages/moxdns_platform_interface/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/packages/moxdns_platform_interface/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/packages/moxdns_platform_interface/analysis_options.yaml b/packages/moxdns_platform_interface/analysis_options.yaml new file mode 100644 index 0000000..a5744c1 --- /dev/null +++ b/packages/moxdns_platform_interface/analysis_options.yaml @@ -0,0 +1,4 @@ +include: package:flutter_lints/flutter.yaml + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/moxdns_platform_interface/lib/moxdns_platform_interface.dart b/packages/moxdns_platform_interface/lib/moxdns_platform_interface.dart new file mode 100644 index 0000000..2a6f654 --- /dev/null +++ b/packages/moxdns_platform_interface/lib/moxdns_platform_interface.dart @@ -0,0 +1,24 @@ +import "package:plugin_platform_interface/plugin_platform_interface.dart"; + +class SrvRecord { + final String target; + final int port; + final int priority; + final int weight; + + const SrvRecord( + this.target, + this.port, + this.priority, + this.weight + ); +} + +abstract class MoxdnsPlatform extends PlatformInterface { + static final Object _token = Object(); + + MoxdnsPlatform() : super(token: _token); + + /// Perform the SRV query for [domain]. Use DNSSEC if [dnssec] is true. + Future> srvQuery(String domain, bool dnssec); +} diff --git a/packages/moxdns_platform_interface/pubspec.yaml b/packages/moxdns_platform_interface/pubspec.yaml new file mode 100644 index 0000000..6d17cc6 --- /dev/null +++ b/packages/moxdns_platform_interface/pubspec.yaml @@ -0,0 +1,19 @@ +name: moxdns_platform_interface +description: Platform definitions for moxdns +version: 0.1.0 +homepage: + +environment: + sdk: ">=2.17.0-266.1.beta <3.0.0" + flutter: ">=1.17.0" + +dependencies: + flutter: + sdk: flutter + + plugin_platform_interface: 2.1.0 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^2.0.0