diff --git a/srcpkgs/icecat-devel b/srcpkgs/icecat-devel new file mode 120000 index 00000000000..7659ab69f6a --- /dev/null +++ b/srcpkgs/icecat-devel @@ -0,0 +1 @@ +icecat \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-ach b/srcpkgs/icecat-i18n-ach new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-ach @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-af b/srcpkgs/icecat-i18n-af new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-af @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-an b/srcpkgs/icecat-i18n-an new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-an @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-ar b/srcpkgs/icecat-i18n-ar new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-ar @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-as b/srcpkgs/icecat-i18n-as new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-as @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-ast b/srcpkgs/icecat-i18n-ast new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-ast @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-be b/srcpkgs/icecat-i18n-be new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-be @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-bg b/srcpkgs/icecat-i18n-bg new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-bg @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-bn-BD b/srcpkgs/icecat-i18n-bn-BD new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-bn-BD @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-bn-IN b/srcpkgs/icecat-i18n-bn-IN new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-bn-IN @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-br b/srcpkgs/icecat-i18n-br new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-br @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-bs b/srcpkgs/icecat-i18n-bs new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-bs @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-ca b/srcpkgs/icecat-i18n-ca new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-ca @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-cs b/srcpkgs/icecat-i18n-cs new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-cs @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-cy b/srcpkgs/icecat-i18n-cy new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-cy @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-da b/srcpkgs/icecat-i18n-da new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-da @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-de b/srcpkgs/icecat-i18n-de new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-de @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-el b/srcpkgs/icecat-i18n-el new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-el @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-en-GB b/srcpkgs/icecat-i18n-en-GB new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-en-GB @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-en-US b/srcpkgs/icecat-i18n-en-US new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-en-US @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-en-ZA b/srcpkgs/icecat-i18n-en-ZA new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-en-ZA @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-eo b/srcpkgs/icecat-i18n-eo new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-eo @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-es-AR b/srcpkgs/icecat-i18n-es-AR new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-es-AR @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-es-CL b/srcpkgs/icecat-i18n-es-CL new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-es-CL @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-es-ES b/srcpkgs/icecat-i18n-es-ES new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-es-ES @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-es-MX b/srcpkgs/icecat-i18n-es-MX new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-es-MX @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-et b/srcpkgs/icecat-i18n-et new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-et @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-eu b/srcpkgs/icecat-i18n-eu new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-eu @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-fa b/srcpkgs/icecat-i18n-fa new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-fa @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-ff b/srcpkgs/icecat-i18n-ff new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-ff @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-fi b/srcpkgs/icecat-i18n-fi new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-fi @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-fr b/srcpkgs/icecat-i18n-fr new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-fr @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-fy-NL b/srcpkgs/icecat-i18n-fy-NL new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-fy-NL @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-ga-IE b/srcpkgs/icecat-i18n-ga-IE new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-ga-IE @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-gd b/srcpkgs/icecat-i18n-gd new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-gd @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-gl b/srcpkgs/icecat-i18n-gl new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-gl @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-gu-IN b/srcpkgs/icecat-i18n-gu-IN new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-gu-IN @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-he b/srcpkgs/icecat-i18n-he new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-he @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-hi-IN b/srcpkgs/icecat-i18n-hi-IN new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-hi-IN @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-hr b/srcpkgs/icecat-i18n-hr new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-hr @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-hsb b/srcpkgs/icecat-i18n-hsb new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-hsb @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-hu b/srcpkgs/icecat-i18n-hu new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-hu @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-hy-AM b/srcpkgs/icecat-i18n-hy-AM new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-hy-AM @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-id b/srcpkgs/icecat-i18n-id new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-id @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-is b/srcpkgs/icecat-i18n-is new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-is @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-it b/srcpkgs/icecat-i18n-it new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-it @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-ja b/srcpkgs/icecat-i18n-ja new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-ja @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-kk b/srcpkgs/icecat-i18n-kk new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-kk @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-km b/srcpkgs/icecat-i18n-km new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-km @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-kn b/srcpkgs/icecat-i18n-kn new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-kn @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-ko b/srcpkgs/icecat-i18n-ko new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-ko @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-lij b/srcpkgs/icecat-i18n-lij new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-lij @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-lt b/srcpkgs/icecat-i18n-lt new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-lt @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-lv b/srcpkgs/icecat-i18n-lv new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-lv @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-mai b/srcpkgs/icecat-i18n-mai new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-mai @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-mk b/srcpkgs/icecat-i18n-mk new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-mk @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-ml b/srcpkgs/icecat-i18n-ml new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-ml @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-mr b/srcpkgs/icecat-i18n-mr new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-mr @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-ms b/srcpkgs/icecat-i18n-ms new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-ms @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-nb-NO b/srcpkgs/icecat-i18n-nb-NO new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-nb-NO @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-nl b/srcpkgs/icecat-i18n-nl new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-nl @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-nn-NO b/srcpkgs/icecat-i18n-nn-NO new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-nn-NO @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-or b/srcpkgs/icecat-i18n-or new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-or @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-pa-IN b/srcpkgs/icecat-i18n-pa-IN new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-pa-IN @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-pl b/srcpkgs/icecat-i18n-pl new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-pl @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-pt-BR b/srcpkgs/icecat-i18n-pt-BR new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-pt-BR @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-pt-PT b/srcpkgs/icecat-i18n-pt-PT new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-pt-PT @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-rm b/srcpkgs/icecat-i18n-rm new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-rm @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-ro b/srcpkgs/icecat-i18n-ro new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-ro @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-ru b/srcpkgs/icecat-i18n-ru new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-ru @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-si b/srcpkgs/icecat-i18n-si new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-si @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-sk b/srcpkgs/icecat-i18n-sk new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-sk @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-sl b/srcpkgs/icecat-i18n-sl new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-sl @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-son b/srcpkgs/icecat-i18n-son new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-son @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-sq b/srcpkgs/icecat-i18n-sq new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-sq @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-sr b/srcpkgs/icecat-i18n-sr new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-sr @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-sv-SE b/srcpkgs/icecat-i18n-sv-SE new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-sv-SE @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-ta b/srcpkgs/icecat-i18n-ta new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-ta @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-te b/srcpkgs/icecat-i18n-te new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-te @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-th b/srcpkgs/icecat-i18n-th new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-th @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-tr b/srcpkgs/icecat-i18n-tr new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-tr @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-uk b/srcpkgs/icecat-i18n-uk new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-uk @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-vi b/srcpkgs/icecat-i18n-vi new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-vi @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-xh b/srcpkgs/icecat-i18n-xh new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-xh @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-zh-CN b/srcpkgs/icecat-i18n-zh-CN new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-zh-CN @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n-zh-TW b/srcpkgs/icecat-i18n-zh-TW new file mode 120000 index 00000000000..955bfa53bec --- /dev/null +++ b/srcpkgs/icecat-i18n-zh-TW @@ -0,0 +1 @@ +icecat-i18n \ No newline at end of file diff --git a/srcpkgs/icecat-i18n/template b/srcpkgs/icecat-i18n/template new file mode 100644 index 00000000000..bb026238c62 --- /dev/null +++ b/srcpkgs/icecat-i18n/template @@ -0,0 +1,221 @@ +# Template file for 'icecat-i18n' +pkgname=icecat-i18n +version=31.8.0 +revision=1 +homepage="https://directory.fsf.org/wiki/IceCat" +short_desc="IceCat language packs" +maintainer="Jürgen Buchmüller " +license="MPL-2.1" + +noarch=yes +create_wrksrc=yes + +do_extract() { + : +} +do_install() { + : +} + +_languages=( + 'ach "Acholi"' + 'af "Afrikaans"' + 'an "Aragonese"' + 'ar "Arabic"' + 'as "Assamese"' + 'ast "Asturian"' + 'be "Belarusian"' + 'bg "Bulgarian"' + 'bn-BD "Bengali (Bangladesh)"' + 'bn-IN "Bengali (India)"' + 'br "Breton"' + 'bs "Bosnian"' + 'ca "Catalan"' + 'cs "Czech"' + 'cy "Welsh"' + 'da "Danish"' + 'de "German"' + 'el "Greek"' + 'en-GB "English (British)"' + 'en-US "English (US)"' + 'en-ZA "English (South African)"' + 'eo "Esperanto"' + 'es-AR "Spanish (Argentina)"' + 'es-CL "Spanish (Chile)"' + 'es-ES "Spanish (Spain)"' + 'es-MX "Spanish (Mexico)"' + 'et "Estonian"' + 'eu "Basque"' + 'fa "Persian"' + 'ff "Fulah"' + 'fi "Finnish"' + 'fr "French"' + 'fy-NL "Frisian"' + 'ga-IE "Irish"' + 'gd "Gaelic (Scotland)"' + 'gl "Galician"' + 'gu-IN "Gujarati"' + 'he "Hebrew"' + 'hi-IN "Hindi (India)"' + 'hr "Croatian"' + 'hsb "Upper Sorbian"' + 'hu "Hungarian"' + 'hy-AM "Armenian"' + 'id "Indonesian"' + 'is "Icelandic"' + 'it "Italian"' + 'ja "Japanese"' + 'kk "Kazakh"' + 'km "Khmer"' + 'kn "Kannada"' + 'ko "Korean"' + 'lij "Ligurian"' + 'lt "Lithuanian"' + 'lv "Latvian"' + 'mai "Maithili"' + 'mk "Macedonian"' + 'ml "Malayalam"' + 'mr "Marathi"' + 'ms "Malay"' + 'nb-NO "Norwegian (Bokmål)"' + 'nl "Dutch"' + 'nn-NO "Norwegian (Nynorsk)"' + 'or "Oriya"' + 'pa-IN "Punjabi"' + 'pl "Polish"' + 'pt-BR "Portuguese (Brazilian)"' + 'pt-PT "Portuguese (Portugal)"' + 'rm "Romansh"' + 'ro "Romanian"' + 'ru "Russian"' + 'si "Sinhala"' + 'sk "Slovak"' + 'sl "Slovenian"' + 'son "Songhai"' + 'sq "Albanian"' + 'sr "Serbian"' + 'sv-SE "Swedish"' + 'ta "Tamil"' + 'te "Telugu"' + 'th "Thai"' + 'tr "Turkish"' + 'uk "Ukrainian"' + 'vi "Vietnamese"' + 'xh "Xhosa"' + 'zh-CN "Chinese (Simplified)"' + 'zh-TW "Chinese (Traditional)"' +) + +depends="icecat>=${version}" + +for _lang in "${_languages[@]}"; do + local _locale=${_lang%% *} + local _pkgname=icecat-i18n-${_locale} + + depends+=" ${_pkgname}>=${version}" + distfiles+=" ${GNU_SITE}/gnuzilla/${version}/langpacks/icecat-${version}.${_locale}.langpack.xpi" + + eval "${_pkgname}_package() { + _pkgtmpl $_lang + }" +done + +_pkgtmpl() { + _lang="$1" + depends="icecat>=${version}" + short_desc="IceCat $2 language pack" + noarch=yes + pkg_install() { + vinstall ${XBPS_SRCDISTDIR}/${sourcepkg}-${version}/icecat-${version}.${_lang}.langpack.xpi 644 \ + usr/lib/icecat/browser/extensions icecat.${_lang}.langpack.xpi + } +} + +checksum=" +75ad3b6f73afc0186046b042fdbea35962e0da5d621f308783b7cc4b6bab4797 +3a142028e90b4d10ce2458753a3a1d22aaf540edc4dc3fec1fa8eb3daf8214c7 +954346d995584eaed081f758ff310480662ea6baaa3a913867f2a2c3dcb82271 +fae24a79b1a76379e651f14825ebf40a91c19712a8d267f5bd474650162877de +aeb33ce69aeeeb8b2d0058899bd074177bedbf765156c4d751185edad306b5a5 +848078bd647911b7deda9bfad979a11cfc367fd1925e01851769afabb8c017ca +2b0401a81f61f1fd900536a38c30d9d7f2ee0a6709f58e9281e12e48b8bb20b3 +6e926d054be858e15c313eb812dbe74c5a75aa3257ca693f255a0ee624bf6a01 +e29fe7286beeeadced4bb644b748c638ad32f3f791d223aebaf83d0ac2a4abe2 +825e577f63ee3423de172b4efd2b4d24c11398e2f4eaf20dc175a0b90eda22d6 +2e7d5ce6e316eaa82506e221e27ba2b785772233011ba1dcc25ff5b693bde9dd +f44e2efa9e8314affd24e29f7f639368fe43e91458be0433dd1121b1dfbc27b1 +45fab039d058256acd9b3c82fe6d506bd71919c17b3f7094e112b2d73d0faa93 +72aea1b22dd86d09db2647a334c0619efb77774a17bed51f862b60a753ac2e65 +52092eee647f47e2ccd7bdaf17fb0fdedce141e4419a45a09601e57a3bc1f4cf +027bfa25fbda15af04e5c2965b229ec42d4cb30e203108113aff3895cfcd2d60 +214d9fbd76ce5e4bf247938761e52219ba6370ef23504467d35ee72ab27118d7 +554386360ed78f128b8f9e5d781decdc22c43f0b2da2eca51a12017a9575e8c3 +dd18c01825441d708a149456ceac5c2f86c9062cf210af1933e08147efd33b31 +0d3e524694c23a723418e0b7befab737ed7549880d9c0582e0d68a5f650a0ce4 +60f5d85b1b6036654b5e141c019e23073e49d95e117cd3e48a83c35a45e0bea5 +6ec862fd24b66d0e1adb3afac2304f6fa3bb2d2ccf7ce98ed96908f7125cabd1 +087d7c85e46825e459569d161646cce867e58accbbfe097cc3296084c29d7a69 +60b86ff5c57c57aa941347278c7a52307241d50bac72f862f68a7b118b47d524 +70d67287ac89a539af34e7e88e9fcae80b678e4a919d9dbc772d7711712de313 +c405258d7fe875ebf8c9486cc7144863d2bc42f382b91a900e9be0a500f7092d +0358cabd6c25674981e0f1f564bbe7491bd8b47834703b1afdc9e52be8bf7c44 +6f6d83d62c7e9b5135b0dd85e33fb0657a638009281e9932c88f1780dc67a24b +e9e781536b446ac6c801dfb00139d682be3f05f9c14280107fbbdffb4ccd942e +232b45bf6d9e6992e09a63f063249d9757705b9b3c51fe45606193856430f1f8 +1d2fb1b81338ac6fc7a552ff809f587a8c5268c74b1c495e06e65be86045393d +8a564feec6669fe79d6cec92bb2f07b3e92ea0d718e58b5e40237e20c117057d +2aee274220f409b3210d42d955a9c00811a93513f2e1d9707d82f7a04472024c +4f3ef5b6250c579cf74ce7b441fb2cdbd1fc7c7946c87d0b07eaf453db48a693 +bb5d3e3381e0339141f0c0bf57cd18d7b59da905412cc44d730a546ff6388928 +bc8d1837532c4b5ca62d251113bffbb166cb3a6a8b9218bf168a9efe2234a760 +31eb7b0305c50788a2a744d936d5644277d9dcb2c4bd7c4a25bbacf4165f73c3 +b0274ad9951e13908b811c09048b48e96f1a0486044b8b6bc7f344d41a9d1112 +bc79c39a5398fbfe82f530fc6542953787a457a442c3d3f1cd78657546d1911c +a6307333f1918be9c1985a25a768d533c2d9417088729d967842141afb83d08b +e1ffad47c5d8847c79443b2a5d8f5c373196c510ac8dcf76dd684c9816065c32 +493fbd187a209090dda8b5cc64f91b34d97acd8588b3379e8c894f2584608f2d +f4b5a3099f7d507ef70f0537450ba4f0d1f383c9c7a99675606b914387e22c93 +e310c7a68283a3160b705bac8c64f59257e3cf552d0755e1ebb2694d551912f8 +0c141afaa0ede60336f97bcf1742e6419378d9f7b2cb8fee129c76e63da0556b +404626f0cf706db523426ea65e7cc2e101d25c859ba31b4faf23a5d191817156 +1e0bcc373642b1d46c5003715d8f60d8984120eac276d9dffd25ba6720003c81 +0b343af40d361ea6209a4399e6ead0b250126aec42bd3befad0e5dadf4d55ea9 +e88473d92936c4b4c86988af32ea8ac2f6132ab1e9335920a6cc11b03bf728c1 +460fe08777455232e020b699f0da51511e9b62575082cd2ddcf5b934fcd99c2e +6554814cdbb03287ec45b536eade128635f3c49fd0f7da60e5c5aa95e37ed391 +ddd71a5a90525242eaec80ed426a4d2c7c1577cd7db2eb3edac07acb85b0a89c +7e9039fa356260ab2e2fbb5ae73f6503cb102f46ccd70c1922cca1ce495b0b94 +45443c64b216b476d7fb9bd0a03aa4069718e93b093dd6cf0e3090b600704249 +3da5559ec7f5ffaf7b9e8e1e62f234fc63916a6be35ca8d5efa7857332c2ab8f +79b54cb235fbf75380e2e8ca88ed2ac722974d111c543a55a7dfc74164c05866 +97c1e100777099c38daae913d87c567554bac1494c588d478ec1fd03d37adde5 +d7fbd96680a31480a70fc1fcfb7f84836dad45fa57ede24d2ad93df2e26e9bad +a9fc5ed350a417c38ecda39623502f2901a095377c3f8995a28dfe55ce21ab52 +fdf75ce2838af444dc737508e5262fd8575579d5d73b0467408d1e0dfebdbf41 +e2f03f67cde25c89d25ca5fa5c565a91f5ebbbe912642adc4edb955b1acc7849 +81c4603836f13b294d309594e75eb1a017b3f4b39c7b683543a9056c47ef7ecf +78b47e87fb8d4f81f6d77b379d3cf6da5408123d37ad450653caf483320209e9 +1d5797102d9610ec4faf05d6cfb7f05106286f172a44436cdbfcc4c4c7d90759 +3a7caa3a58af708135c996603fa35a46b3f7d12a397bdda971963b8ee37f14af +1319e8db747e517af71c63f7e80b4ee55137c362f38477c30fb9bb3734a1e2c1 +872f7d63725d21873d47364bfc8eea434182a886b63689edae8af575edb6b756 +aa990edb911c633f09a73e797cff60d2a5bd3b227292cd6acb6b36f80e67721d +868a8497cfe0e4a1bee49a9cc02a2854b4f79c956d2aebf08265bd929a479045 +e34ea94c89892b41493d3806cf9e689aa302dde4d0a8041041a14fd8137c0904 +a152e417463079522db77332b3e54cede90cb737955e1ce3d507e2e6e36f0e6e +cc64e9b89996a1ef37d52d395601cc9d3320d5b121c3e839e98a2064b790802b +6b13d79a8b3e1b6b875359aa968bded50c2f6fb68eb6dbfb895900f8071ea732 +0b8f105e853159e035dfd5eadceb822bdc33db403b57ea1bdc20f9705bf904ca +b417b141277402d55f32bc48b27911d08a381b7c68381dcd9de3ab3e80a10369 +03dd96683701674675aa8f04d405607ed119ecfe5913f061b745961b1fcf4554 +2ff0c924745f3f5298be7132c11b1d9c7507a4593e2e3d54610c9681a58728ef +a5b0fd320a65b7c58080d92e184c8ce33e3e706001f68045d09ff6051fd51f7f +695700e5485182d1dc56287245bf9815dafab8e8024b1c3147319ee8c42530a9 +c2cd37e5669674ea3c2fed59a3d01f95f3fda7949e9edb680ee306383468e333 +aa04cd1bc0adf08e35f6cb9f868f13f607bb9a0d4ce3300c40a5e5bfbfc87435 +dedc2d4bd1ac97bbd4070024c1a4a061e914fae755fac8069881669cc46095e9 +9f4b7a3f25849a5025fc36e351b75236304e08a45e33ba8eeee7cbe78fdaa7dc +0c6e1c92a4a5c9af8d97a5d99acb55b8ab4694f5acb996433cf202bb2c3b41e3 +9ab0fc733e2ce5b965261ddc08364ca4d0dc96d47334a0db89e5763931193f9c +ac7ed07c661e21ddc39095da7b74bab6254031020bc42c30cd1dbca24242139d +" diff --git a/srcpkgs/icecat/files/icecat.desktop b/srcpkgs/icecat/files/icecat.desktop new file mode 100644 index 00000000000..5bc7c6c8698 --- /dev/null +++ b/srcpkgs/icecat/files/icecat.desktop @@ -0,0 +1,116 @@ +[Desktop Entry] +Name=GNU-IceCat +GenericName=GNU Web Browser +GenericName[af]=GNU Web Blaaier +GenericName[ar]=GNU متصفح ويب +GenericName[az]=GNU Veb Səyyahı +GenericName[bg]=GNU Браузър +GenericName[bn]=GNU ওয়েব ব্রাউজার +GenericName[br]=GNU Furcher ar Gwiad +GenericName[bs]=GNU WWW Preglednik +GenericName[ca]=GNU Fullejador web +GenericName[cs]=GNU WWW prohlížeč +GenericName[cy]=GNU Porydd Gwe +GenericName[da]=GNU Browser +GenericName[de]=GNU Web-Browser +GenericName[el]=GNU Περιηγητής Ιστού +GenericName[eo]=GNU TTT-legilo +GenericName[es]=GNU Navegador web +GenericName[et]=GNU Veebilehitseja +GenericName[eu]=GNU Web arakatzailea +GenericName[fa]=GNU مرورگر وب +GenericName[fi]=GNU WWW-selain +GenericName[fo]=GNU Alnótsfar +GenericName[fr]=GNU Navigateur web +GenericName[gl]=GNU Navegador Web +GenericName[he]=GNU דפדפן אינטרנט +GenericName[hi]=GNU वेब ब्राउज़र +GenericName[hr]=GNU Web preglednik +GenericName[hu]=GNU Webböngésző +GenericName[is]=GNU Vafri +GenericName[it]=GNU Browser Web +GenericName[ja]=GNU ウェブブラウザ +GenericName[ko]=GNU 웹 브라우저 +GenericName[lo]=GNU ເວັບບຣາວເຊີ +GenericName[lt]=GNU Žiniatinklio naršyklė +GenericName[lv]=GNU Web Pārlūks +GenericName[mk]=GNU Прелистувач на Интернет +GenericName[mn]=GNU Веб-Хөтөч +GenericName[nb]=GNU Nettleser +GenericName[nds]=GNU Nettkieker +GenericName[nl]=GNU Webbrowser +GenericName[nn]=GNU Nettlesar +GenericName[nso]=GNU Seinyakisi sa Web +GenericName[pa]=GNU ਵੈਬ ਝਲਕਾਰਾ +GenericName[pl]=GNU Przeglądarka WWW +GenericName[pt]=GNU Navegador Web +GenericName[pt_BR]=GNU Navegador Web +GenericName[ro]=GNU Navigator de web +GenericName[ru]=GNU Веб-браузер +GenericName[se]=GNU Fierpmádatlogan +GenericName[sk]=GNU Webový prehliadač +GenericName[sl]=GNU Spletni brskalnik +GenericName[sr]=GNU Веб претраживач +GenericName[sr@Latn]=GNU Veb pretraživač +GenericName[ss]=GNU Ibrawuza yeWeb +GenericName[sv]=GNU Webbläsare +GenericName[ta]=GNU வலை உலாவி +GenericName[tg]=GNU Тафсиргари вэб +GenericName[th]=GNU เว็บบราวเซอร์ +GenericName[tr]=GNU Web Tarayıcı +GenericName[uk]=GNU Навігатор Тенет +GenericName[uz]=GNU Веб-браузер +GenericName[ven]=GNU Buronza ya Webu +GenericName[vi]=GNU Trình duyệt Web +GenericName[wa]=GNU Betchteu waibe +GenericName[xh]=GNU Umkhangeli zincwadi we Web +GenericName[zh_CN]=GNU 网页浏览器 +GenericName[zh_TW]=GNU 網頁瀏覽器 +GenericName[zu]=GNU Umcingi we-Web +Comment=Browse the World Wide Web +Comment[ar]=تصفح الشبكة العنكبوتية العالمية +Comment[ast]=Restola pela Rede +Comment[bn]=ইন্টারনেট ব্রাউজ করুন +Comment[ca]=Navegueu per la web +Comment[cs]=Prohlížení stránek World Wide Webu +Comment[da]=Surf på internettet +Comment[de]=Im Internet surfen +Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web) +Comment[es]=Navegue por la web +Comment[et]=Lehitse veebi +Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید +Comment[fi]=Selaa Internetin WWW-sivuja +Comment[fr]=Naviguer sur le Web +Comment[gl]=Navegar pola rede +Comment[he]=גלישה ברחבי האינטרנט +Comment[hr]=Pretražite web +Comment[hu]=A világháló böngészése +Comment[it]=Esplora il web +Comment[ja]=ウェブを閲覧します +Comment[ko]=웹을 돌아 다닙니다 +Comment[ku]=Li torê bigere +Comment[lt]=Naršykite internete +Comment[nb]=Surf på nettet +Comment[nl]=Verken het internet +Comment[nn]=Surf på nettet +Comment[no]=Surf på nettet +Comment[pl]=Przeglądanie stron WWW +Comment[pt]=Navegue na Internet +Comment[pt_BR]=Navegue na Internet +Comment[ro]=Navigați pe Internet +Comment[ru]=Доступ в Интернет +Comment[sk]=Prehliadanie internetu +Comment[sl]=Brskajte po spletu +Comment[sv]=Surfa på webben +Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ +Comment[uk]=Перегляд сторінок Інтернету +Comment[vi]=Để duyệt các trang web +Comment[zh_CN]=浏览互联网 +Comment[zh_TW]=瀏覽網際網路 +Exec=icecat %u +Icon=icecat +Terminal=false +Type=Application +MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https; +StartupNotify=true +Categories=Network;WebBrowser; diff --git a/srcpkgs/icecat/files/vendor.js b/srcpkgs/icecat/files/vendor.js new file mode 100644 index 00000000000..d8d606bc15d --- /dev/null +++ b/srcpkgs/icecat/files/vendor.js @@ -0,0 +1,9 @@ +// Use LANG environment variable to choose locale +pref("intl.locale.matchOS", true); + +// Disable default browser checking. +pref("browser.shell.checkDefaultBrowser", false); + +// Don't disable our bundled extensions in the application directory +pref("extensions.autoDisableScopes", 11); +pref("extensions.shownSelectionUI", true); diff --git a/srcpkgs/icecat/patches/fix-basename.patch b/srcpkgs/icecat/patches/fix-basename.patch new file mode 100644 index 00000000000..6821b82974d --- /dev/null +++ b/srcpkgs/icecat/patches/fix-basename.patch @@ -0,0 +1,17 @@ +--- tools/profiler/LulElf.cpp 2015-07-14 00:10:06.000000000 +0200 ++++ tools/profiler/LulElf.cpp 2015-08-21 14:49:06.100695125 +0200 +@@ -579,10 +579,10 @@ + // Return the non-directory portion of FILENAME: the portion after the + // last slash, or the whole filename if there are no slashes. + string BaseFileName(const string &filename) { +- // Lots of copies! basename's behavior is less than ideal. +- char *c_filename = strdup(filename.c_str()); +- string base = basename(c_filename); +- free(c_filename); ++ // basename's behavior is less than ideal so avoid it ++ const char *c_filename = filename.c_str(); ++ const char *p = strrchr(c_filename, '/'); ++ string base = p ? p + 1 : c_filename; + return base; + } + diff --git a/srcpkgs/icecat/patches/fix-cpr_linux_threads.patch b/srcpkgs/icecat/patches/fix-cpr_linux_threads.patch new file mode 100644 index 00000000000..ba163cdbf8d --- /dev/null +++ b/srcpkgs/icecat/patches/fix-cpr_linux_threads.patch @@ -0,0 +1,71 @@ +--- media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_threads.c 2015-08-23 18:02:03.001781892 +0200 ++++ media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_threads.c 2015-08-23 18:11:53.961749937 +0200 +@@ -2,16 +2,16 @@ + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + ++#include ++#include ++#include ++#include + #include "cpr.h" + #include "cpr_stdlib.h" + #include "cpr_stdio.h" + #include "thread_monitor.h" + #include "prtypes.h" + #include "mozilla/Assertions.h" +-#include +-#include +-#include +-#include + + #define LINUX_MIN_THREAD_PRIORITY (-20) /* tbd: check MV linux: current val from Larry port */ + #define LINUX_MAX_THREAD_PRIORITY (+19) /* tbd: check MV linux. current val from Larry port */ +@@ -92,7 +92,11 @@ + * that an application does not attempt to create + * the same thread twice. + */ ++#if defined(__GLIBC__) + threadPtr->u.handleInt = threadId; ++#else ++ threadPtr->u.handlePtr = threadId; ++#endif + threadPtr->threadId = ++id; + CSFLogRegisterThread(threadPtr); + return (cprThread_t)threadPtr; +@@ -115,7 +119,11 @@ + + cprThreadPtr = (cpr_thread_t *) thread; + MOZ_ASSERT(cprThreadPtr); ++#if defined(__GLIBC__) + pthread_join(cprThreadPtr->u.handleInt, NULL); ++#else ++ pthread_join(cprThreadPtr->u.handlePtr, NULL); ++#endif + } + + /** +@@ -143,7 +151,11 @@ + /* + * Make sure thread is trying to destroy itself. + */ ++#if defined(__GLIBC__) + if ((pthread_t) cprThreadPtr->u.handleInt == pthread_self()) { ++#else ++ if (pthread_equal(cprThreadPtr->u.handlePtr, pthread_self())) { ++#endif + CPR_INFO("%s: Destroying Thread %d", __FUNCTION__, cprThreadPtr->threadId); + pthread_exit(NULL); + return CPR_SUCCESS; +@@ -210,7 +222,11 @@ + cprGetThreadId (cprThread_t thread) + { + if (thread) { ++#if defined(__GLIBC__) + return ((cpr_thread_t *)thread)->u.handleInt; ++#else ++ return ((cpr_thread_t *)thread)->u.handlePtr; ++#endif + } + return 0; + } diff --git a/srcpkgs/icecat/patches/fix-ipc.patch b/srcpkgs/icecat/patches/fix-ipc.patch new file mode 100644 index 00000000000..ba936756620 --- /dev/null +++ b/srcpkgs/icecat/patches/fix-ipc.patch @@ -0,0 +1,55 @@ +--- ipc/chromium/src/base/file_util.h ++++ ipc/chromium/src/base/file_util.h +@@ -14,10 +14,15 @@ + #include + #elif defined(ANDROID) + #include ++#define NO_FTS + #elif defined(OS_POSIX) + #include +-#include + #include ++#ifdef __GLIBC__ ++#include ++#else ++#define NO_FTS ++#endif + #endif + + #include +--- ipc/chromium/src/base/file_util_posix.cc ++++ ipc/chromium/src/base/file_util_posix.cc +@@ -8,13 +8,13 @@ + #include + #include + #include +-#ifndef ANDROID ++#ifndef NO_FTS + #include + #endif + #include + #include + #include +-#include ++#include + #include + #define _DARWIN_USE_64_BIT_INODE // Use 64-bit inode data structures + #include +@@ -67,7 +67,7 @@ + if (!recursive) + return (rmdir(path_str) == 0); + +-#ifdef ANDROID ++#ifdef NO_FTS + // XXX Need ftsless impl for bionic + return false; + #else +@@ -140,7 +140,7 @@ + return false; + } + +-#ifdef ANDROID ++#ifdef NO_FTS + // XXX Need ftsless impl for bionic + return false; + #else diff --git a/srcpkgs/icecat/patches/fix-mozilla-bug999496.patch b/srcpkgs/icecat/patches/fix-mozilla-bug999496.patch new file mode 100644 index 00000000000..c23c863e421 --- /dev/null +++ b/srcpkgs/icecat/patches/fix-mozilla-bug999496.patch @@ -0,0 +1,64 @@ +# HG changeset patch +# User Simon Wilper +# Date 1400002680 -43200 +# Wed May 14 05:38:00 2014 +1200 +# Node ID 1f10a80678532ff186f314bb98050fd81f22a7fe +# Parent a54ace627db8f12a9b2c5d3b60a675576887c445 +Bug 999496 - Move AudioData::SizeOfIncludingThis to MediaData.cpp. r=kinetik + +--- content/media/MediaData.cpp ++++ content/media/MediaData.cpp +@@ -33,16 +33,26 @@ AudioData::EnsureAudioBuffer() + AudioDataValue* data = static_cast(mAudioBuffer->Data()); + for (uint32_t i = 0; i < mFrames; ++i) { + for (uint32_t j = 0; j < mChannels; ++j) { + data[j*mFrames + i] = mAudioData[i*mChannels + j]; + } + } + } + ++size_t ++AudioData::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const ++{ ++ size_t size = aMallocSizeOf(this) + aMallocSizeOf(mAudioData); ++ if (mAudioBuffer) { ++ size += mAudioBuffer->SizeOfIncludingThis(aMallocSizeOf); ++ } ++ return size; ++} ++ + static bool + ValidatePlane(const VideoData::YCbCrBuffer::Plane& aPlane) + { + return aPlane.mWidth <= PlanarYCbCrImage::MAX_DIMENSION && + aPlane.mHeight <= PlanarYCbCrImage::MAX_DIMENSION && + aPlane.mWidth * aPlane.mHeight < MAX_VIDEO_WIDTH * MAX_VIDEO_HEIGHT && + aPlane.mStride > 0; + } +--- content/media/MediaData.h ++++ content/media/MediaData.h +@@ -75,23 +75,17 @@ public: + MOZ_COUNT_CTOR(AudioData); + } + + ~AudioData() + { + MOZ_COUNT_DTOR(AudioData); + } + +- size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const { +- size_t size = aMallocSizeOf(this) + aMallocSizeOf(mAudioData); +- if (mAudioBuffer) { +- size += mAudioBuffer->SizeOfIncludingThis(aMallocSizeOf); +- } +- return size; +- } ++ size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const; + + // If mAudioBuffer is null, creates it from mAudioData. + void EnsureAudioBuffer(); + + const uint32_t mFrames; + const uint32_t mChannels; + // At least one of mAudioBuffer/mAudioData must be non-null. + // mChannels channels, each with mFrames frames diff --git a/srcpkgs/icecat/patches/fix-nullptr.patch b/srcpkgs/icecat/patches/fix-nullptr.patch new file mode 100644 index 00000000000..7ee7c5d7834 --- /dev/null +++ b/srcpkgs/icecat/patches/fix-nullptr.patch @@ -0,0 +1,177 @@ +Patch taken from Arch Linux +https://aur.archlinux.org/cgit/aur.git/plain/fixing_nullptr_31.7.0.patch?h=icecat + +--- js/src/builtin/TypedObject.cpp 2015-06-03 22:48:47.000000000 +0200 ++++ js/src/builtin/TypedObject.cpp 2015-06-08 16:45:30.918154529 +0200 +@@ -710,12 +710,12 @@ + contents.append(")"); + RootedAtom stringRepr(cx, contents.finishAtom()); + if (!stringRepr) +- return nullptr; ++ return false; + + // Extract ArrayType.prototype + RootedObject arrayTypePrototype(cx, GetPrototype(cx, arrayTypeGlobal)); + if (!arrayTypePrototype) +- return nullptr; ++ return false; + + // Create the instance of ArrayType + Rooted obj(cx); +@@ -728,7 +728,7 @@ + if (!JSObject::defineProperty(cx, obj, cx->names().length, + UndefinedHandleValue, nullptr, nullptr, + JSPROP_READONLY | JSPROP_PERMANENT)) +- return nullptr; ++ return false; + + args.rval().setObject(*obj); + return true; +@@ -762,7 +762,7 @@ + if (!size.isValid()) { + JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, + JSMSG_TYPEDOBJECT_TOO_BIG); +- return nullptr; ++ return false; + } + + // Construct a canonical string `new ArrayType().dimension(N)`: +@@ -775,7 +775,7 @@ + contents.append(")"); + RootedAtom stringRepr(cx, contents.finishAtom()); + if (!stringRepr) +- return nullptr; ++ return false; + + // Create the sized type object. + Rooted obj(cx); +@@ -793,7 +793,7 @@ + if (!JSObject::defineProperty(cx, obj, cx->names().length, + lengthVal, nullptr, nullptr, + JSPROP_READONLY | JSPROP_PERMANENT)) +- return nullptr; ++ return false; + + // Add `unsized` property, which is a link from the sized + // array to the unsized array. +@@ -801,7 +801,7 @@ + if (!JSObject::defineProperty(cx, obj, cx->names().unsized, + unsizedTypeDescrValue, nullptr, nullptr, + JSPROP_READONLY | JSPROP_PERMANENT)) +- return nullptr; ++ return false; + + args.rval().setObject(*obj); + return true; +@@ -1253,7 +1253,7 @@ + Rooted proto(cx); + proto = NewObjectWithProto(cx, objProto, nullptr, TenuredObject); + if (!proto) +- return nullptr; ++ return false; + proto->initTypeDescrSlot(*descr); + descr->initReservedSlot(JS_DESCR_SLOT_TYPROTO, ObjectValue(*proto)); + +@@ -1358,14 +1358,14 @@ + #define BINARYDATA_SCALAR_DEFINE(constant_, type_, name_) \ + if (!DefineSimpleTypeDescr(cx, global, module, constant_, \ + cx->names().name_)) \ +- return nullptr; ++ return false; + JS_FOR_EACH_SCALAR_TYPE_REPR(BINARYDATA_SCALAR_DEFINE) + #undef BINARYDATA_SCALAR_DEFINE + + #define BINARYDATA_REFERENCE_DEFINE(constant_, type_, name_) \ + if (!DefineSimpleTypeDescr(cx, global, module, constant_, \ + cx->names().name_)) \ +- return nullptr; ++ return false; + JS_FOR_EACH_REFERENCE_TYPE_REPR(BINARYDATA_REFERENCE_DEFINE) + #undef BINARYDATA_REFERENCE_DEFINE + +@@ -1375,14 +1375,14 @@ + arrayType = DefineMetaTypeDescr( + cx, global, module, TypedObjectModuleObject::ArrayTypePrototype); + if (!arrayType) +- return nullptr; ++ return false; + + RootedValue arrayTypeValue(cx, ObjectValue(*arrayType)); + if (!JSObject::defineProperty(cx, module, cx->names().ArrayType, + arrayTypeValue, + nullptr, nullptr, + JSPROP_READONLY | JSPROP_PERMANENT)) +- return nullptr; ++ return false; + + // StructType. + +@@ -1390,14 +1390,14 @@ + structType = DefineMetaTypeDescr( + cx, global, module, TypedObjectModuleObject::StructTypePrototype); + if (!structType) +- return nullptr; ++ return false; + + RootedValue structTypeValue(cx, ObjectValue(*structType)); + if (!JSObject::defineProperty(cx, module, cx->names().StructType, + structTypeValue, + nullptr, nullptr, + JSPROP_READONLY | JSPROP_PERMANENT)) +- return nullptr; ++ return false; + + // Everything is setup, install module on the global object: + RootedValue moduleValue(cx, ObjectValue(*module)); +@@ -1407,7 +1407,7 @@ + nullptr, nullptr, + 0)) + { +- return nullptr; ++ return false; + } + + return module; +@@ -2466,7 +2466,7 @@ + if (length < 0) { + JS_ReportErrorNumber(cx, js_GetErrorMessage, + nullptr, JSMSG_TYPEDOBJECT_BAD_ARGS); +- return nullptr; ++ return false; + } + Rooted obj(cx, createZeroed(cx, callee, length)); + if (!obj) + +--- js/src/frontend/BytecodeCompiler.cpp 2015-06-03 22:48:48.000000000 +0200 ++++ js/src/frontend/BytecodeCompiler.cpp 2015-06-08 01:15:08.080302638 +0200 +@@ -544,7 +544,7 @@ + + RootedScriptSource sourceObject(cx, CreateScriptSourceObject(cx, options)); + if (!sourceObject) +- return nullptr; ++ return false; + ScriptSource* ss = sourceObject->source(); + + SourceCompressionTask sct(cx); +--- js/xpconnect/wrappers/XrayWrapper.cpp 2015-06-03 22:48:45.000000000 +0200 ++++ js/xpconnect/wrappers/XrayWrapper.cpp 2015-06-08 01:15:35.672193557 +0200 +@@ -351,7 +351,7 @@ + { + JSAutoCompartment ac(cx, target); + if (!JS_GetClassPrototype(cx, key, protop)) +- return nullptr; ++ return false; + } + return JS_WrapObject(cx, protop); + } +--- netwerk/ipc/NeckoParent.cpp 2015-06-03 22:46:41.000000000 +0200 ++++ netwerk/ipc/NeckoParent.cpp 2015-06-08 01:16:10.200055747 +0200 +@@ -359,7 +359,7 @@ + RtspChannelParent* p = static_cast(aActor); + return p->Init(aConnectArgs); + #else +- return nullptr; ++ return false; + #endif + } + diff --git a/srcpkgs/icecat/patches/fix-stdint_h.patch b/srcpkgs/icecat/patches/fix-stdint_h.patch new file mode 100644 index 00000000000..010f7ee5a4e --- /dev/null +++ b/srcpkgs/icecat/patches/fix-stdint_h.patch @@ -0,0 +1,10 @@ +--- security/sandbox/linux/SandboxFilter.cpp 2015-07-14 00:09:13.000000000 +0200 ++++ security/sandbox/linux/SandboxFilter.cpp 2015-08-23 11:12:36.040110310 +0200 +@@ -6,6 +6,7 @@ + + #include "SandboxFilter.h" + ++#include + #include "linux_seccomp.h" + #include "linux_syscalls.h" + diff --git a/srcpkgs/icecat/patches/fix-toolkit.patch b/srcpkgs/icecat/patches/fix-toolkit.patch new file mode 100644 index 00000000000..dc68da2c652 --- /dev/null +++ b/srcpkgs/icecat/patches/fix-toolkit.patch @@ -0,0 +1,77 @@ +--- toolkit.orig/google-breakpad/src/common/linux/dump_symbols.cc 2014-03-15 05:19:36.000000000 +0000 ++++ toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc 2014-04-17 10:24:33.793431933 +0000 +@@ -45,6 +45,7 @@ + #include + #include + #include ++#include + + #include + #include +--- toolkit.orig/crashreporter/google-breakpad/src/common/stabs_reader.cc 2014-03-15 05:19:36.000000000 +0000 ++++ toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc 2014-04-17 10:24:33.793431933 +0000 +@@ -41,6 +41,10 @@ + + #include "common/using_std_string.h" + ++#ifndef N_UNDF ++#define N_UNDF 0 ++#endif ++ + using std::vector; + + namespace google_breakpad { +--- toolkit.orig/crashreporter/google-breakpad/src/common/stabs_reader.h 2014-03-15 05:19:36.000000000 +0000 ++++ toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h 2014-04-17 10:24:33.793431933 +0000 +@@ -53,9 +53,10 @@ + #include + #endif + +-#ifdef HAVE_A_OUT_H ++#if 0 + #include + #endif ++ + #ifdef HAVE_MACH_O_NLIST_H + #include + #endif +--- toolkit.orig/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h 2014-03-15 05:19:37.000000000 +0000 ++++ toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h 2014-04-17 10:24:33.793431933 +0000 +@@ -2813,7 +2813,7 @@ + LSS_INLINE _syscall6(void*, mmap, void*, s, + size_t, l, int, p, + int, f, int, d, +- __off64_t, o) ++ off_t, o) + + LSS_INLINE _syscall4(int, newfstatat, int, d, + const char *, p, +--- toolkit.orig/mozapps/update/common/updatedefines.h 2014-03-15 05:19:37.000000000 +0000 ++++ toolkit/mozapps/update/common/updatedefines.h 2014-04-17 10:24:33.793431933 +0000 +@@ -105,7 +105,7 @@ + + #ifdef SOLARIS + # include +-#else ++#elif !defined(__linux__) || defined(__GLIBC__) + # include + #endif + # include +--- toolkit.orig/mozapps/update/updater/updater.cpp 2014-03-15 05:19:37.000000000 +0000 ++++ toolkit/mozapps/update/updater/updater.cpp 2014-04-17 10:24:33.796765327 +0000 +@@ -3432,6 +3432,7 @@ + int add_dir_entries(const NS_tchar *dirpath, ActionList *list) + { + int rv = OK; ++#if !defined(__linux__) || defined(__GLIBC__) + FTS *ftsdir; + FTSENT *ftsdirEntry; + NS_tchar searchpath[MAXPATHLEN]; +@@ -3534,6 +3535,7 @@ + } + + fts_close(ftsdir); ++#endif + + return rv; + } diff --git a/srcpkgs/icecat/patches/fix-vpx_image.patch b/srcpkgs/icecat/patches/fix-vpx_image.patch new file mode 100644 index 00000000000..f516a97caaf --- /dev/null +++ b/srcpkgs/icecat/patches/fix-vpx_image.patch @@ -0,0 +1,93 @@ +Need to include vpx_image to define the values for +VPX_IMAGE_FMT_I420, VPX_PLANE_Y, VPX_PLANE_X and VPX_PLANE_V + +--- media/webrtc/trunk/webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc 2015-07-14 00:06:45.000000000 +0200 ++++ media/webrtc/trunk/webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc 2015-08-21 12:41:27.575008456 +0200 +@@ -20,6 +20,7 @@ + + #include "vpx/vpx_encoder.h" + #include "vpx/vpx_decoder.h" ++#include "vpx/vpx_image.h" + #include "vpx/vp8cx.h" + #include "vpx/vp8dx.h" + +@@ -180,7 +181,7 @@ + // Creating a wrapper to the image - setting image data to NULL. Actual + // pointer will be set in encode. Setting align to 1, as it is meaningless + // (actual memory is not allocated). +- raw_ = vpx_img_wrap(NULL, IMG_FMT_I420, codec_.width, codec_.height, ++ raw_ = vpx_img_wrap(NULL, VPX_IMG_FMT_I420, codec_.width, codec_.height, + 1, NULL); + // populate encoder configuration with default values + if (vpx_codec_enc_config_default(vpx_codec_vp8_cx(), config_, 0)) { +@@ -349,9 +350,9 @@ + } + // Image in vpx_image_t format. + // Input image is const. VP8's raw image is not defined as const. +- raw_->planes[PLANE_Y] = const_cast(input_image.buffer(kYPlane)); +- raw_->planes[PLANE_U] = const_cast(input_image.buffer(kUPlane)); +- raw_->planes[PLANE_V] = const_cast(input_image.buffer(kVPlane)); ++ raw_->planes[VPX_PLANE_Y] = const_cast(input_image.buffer(kYPlane)); ++ raw_->planes[VPX_PLANE_U] = const_cast(input_image.buffer(kUPlane)); ++ raw_->planes[VPX_PLANE_V] = const_cast(input_image.buffer(kVPlane)); + // TODO(mikhal): Stride should be set in initialization. + raw_->stride[VPX_PLANE_Y] = input_image.stride(kYPlane); + raw_->stride[VPX_PLANE_U] = input_image.stride(kUPlane); +--- content/media/encoder/VP8TrackEncoder.cpp 2015-07-14 00:07:06.000000000 +0200 ++++ content/media/encoder/VP8TrackEncoder.cpp 2015-08-21 13:14:09.852184395 +0200 +@@ -6,6 +6,7 @@ + #include "VP8TrackEncoder.h" + #include "vpx/vp8cx.h" + #include "vpx/vpx_encoder.h" ++#include "vpx/vpx_image.h" + #include "VideoUtils.h" + #include "prsystem.h" + #include "WebMWriter.h" +@@ -84,7 +85,7 @@ + // Creating a wrapper to the image - setting image data to NULL. Actual + // pointer will be set in encode. Setting align to 1, as it is meaningless + // (actual memory is not allocated). +- vpx_img_wrap(mVPXImageWrapper, IMG_FMT_I420, ++ vpx_img_wrap(mVPXImageWrapper, VPX_IMG_FMT_I420, + mFrameWidth, mFrameHeight, 1, nullptr); + + config.g_w = mFrameWidth; +@@ -239,9 +240,9 @@ + uint8_t *cb = mMuteFrame.Elements() + yPlaneSize; + uint8_t *cr = mMuteFrame.Elements() + yPlaneSize + uvPlaneSize; + +- mVPXImageWrapper->planes[PLANE_Y] = y; +- mVPXImageWrapper->planes[PLANE_U] = cb; +- mVPXImageWrapper->planes[PLANE_V] = cr; ++ mVPXImageWrapper->planes[VPX_PLANE_Y] = y; ++ mVPXImageWrapper->planes[VPX_PLANE_U] = cb; ++ mVPXImageWrapper->planes[VPX_PLANE_V] = cr; + mVPXImageWrapper->stride[VPX_PLANE_Y] = mFrameWidth; + mVPXImageWrapper->stride[VPX_PLANE_U] = halfWidth; + mVPXImageWrapper->stride[VPX_PLANE_V] = halfWidth; +@@ -297,9 +298,9 @@ + const PlanarYCbCrImage::Data *data = yuv->GetData(); + + if (isYUV420(data) && !data->mCbSkip) { // 420 planar +- mVPXImageWrapper->planes[PLANE_Y] = data->mYChannel; +- mVPXImageWrapper->planes[PLANE_U] = data->mCbChannel; +- mVPXImageWrapper->planes[PLANE_V] = data->mCrChannel; ++ mVPXImageWrapper->planes[VPX_PLANE_Y] = data->mYChannel; ++ mVPXImageWrapper->planes[VPX_PLANE_U] = data->mCbChannel; ++ mVPXImageWrapper->planes[VPX_PLANE_V] = data->mCrChannel; + mVPXImageWrapper->stride[VPX_PLANE_Y] = data->mYStride; + mVPXImageWrapper->stride[VPX_PLANE_U] = data->mCbCrStride; + mVPXImageWrapper->stride[VPX_PLANE_V] = data->mCbCrStride; +@@ -355,9 +356,9 @@ + return NS_ERROR_NOT_IMPLEMENTED; + } + +- mVPXImageWrapper->planes[PLANE_Y] = y; +- mVPXImageWrapper->planes[PLANE_U] = cb; +- mVPXImageWrapper->planes[PLANE_V] = cr; ++ mVPXImageWrapper->planes[VPX_PLANE_Y] = y; ++ mVPXImageWrapper->planes[VPX_PLANE_U] = cb; ++ mVPXImageWrapper->planes[VPX_PLANE_V] = cr; + mVPXImageWrapper->stride[VPX_PLANE_Y] = mFrameWidth; + mVPXImageWrapper->stride[VPX_PLANE_U] = halfWidth; + mVPXImageWrapper->stride[VPX_PLANE_V] = halfWidth; diff --git a/srcpkgs/icecat/patches/musl-execinfo.patch b/srcpkgs/icecat/patches/musl-execinfo.patch new file mode 100644 index 00000000000..eef552b5037 --- /dev/null +++ b/srcpkgs/icecat/patches/musl-execinfo.patch @@ -0,0 +1,13 @@ +There is no in musl libc. + +--- ipc/chromium/src/base/debug_util_posix.cc 2015-07-14 00:07:38.000000000 +0200 ++++ ipc/chromium/src/base/debug_util_posix.cc 2015-08-21 10:33:48.949321779 +0200 +@@ -5,7 +5,7 @@ + #include "build/build_config.h" + #include "base/debug_util.h" + +-#define MOZ_HAVE_EXECINFO_H (defined(OS_LINUX) && !defined(ANDROID)) ++#define MOZ_HAVE_EXECINFO_H (defined(OS_LINUX) && defined(__GLIBC__) && !defined(ANDROID)) + + #include + #include diff --git a/srcpkgs/icecat/patches/musl-net_if.patch b/srcpkgs/icecat/patches/musl-net_if.patch new file mode 100644 index 00000000000..8f80e5b59a1 --- /dev/null +++ b/srcpkgs/icecat/patches/musl-net_if.patch @@ -0,0 +1,47 @@ +Avoid double definition of struct ifmap, struct ifconf, +etc. with musl libc. + +--- media/mtransport/third_party/nICEr/src/stun/addrs.c 2015-07-14 00:06:51.000000000 +0200 ++++ media/mtransport/third_party/nICEr/src/stun/addrs.c 2015-08-21 13:08:44.161155194 +0200 +@@ -44,7 +44,7 @@ + #else /* UNIX */ + #include + #include +-#ifndef ANDROID ++#if !defined(ANDROID) && defined(__GLIBC__) + #include + #include + #else +@@ -62,11 +62,13 @@ + #include + #include + #else ++#if defined(__GLIBC__) + #include + #include ++#endif + #include ++#if !defined(ANDROID) && defined(__GLIBC__) + #include +-#ifndef ANDROID + #include + #endif + #endif +@@ -616,7 +618,7 @@ + + #ifdef LINUX + int si = sizeof(struct ifreq); +-#ifndef ANDROID ++#if !defined(ANDROID) && defined(__GLIBC__) + struct ethtool_cmd ecmd; + struct iwreq wrq; + #endif +@@ -642,7 +644,7 @@ + else { + addrs[n].interface.type = NR_INTERFACE_TYPE_UNKNOWN; + addrs[n].interface.estimated_speed = 0; +-#if defined(LINUX) && !defined(ANDROID) ++#if defined(LINUX) && defined(__GLIBC__) && !defined(ANDROID) + /* TODO (Bug 896851): interface property for Android */ + /* Getting ethtool for ethernet information. */ + ecmd.cmd = ETHTOOL_GSET; diff --git a/srcpkgs/icecat/patches/musl-netdb_h.patch b/srcpkgs/icecat/patches/musl-netdb_h.patch new file mode 100644 index 00000000000..fae289c7c3d --- /dev/null +++ b/srcpkgs/icecat/patches/musl-netdb_h.patch @@ -0,0 +1,12 @@ +Include to define IPPORT_RESERVED for musl libc + +--- netwerk/sctp/src/netinet/sctp_pcb.c 2015-07-14 00:06:57.000000000 +0200 ++++ netwerk/sctp/src/netinet/sctp_pcb.c 2015-08-21 10:13:21.509211726 +0200 +@@ -35,6 +35,7 @@ + __FBSDID("$FreeBSD: head/sys/netinet/sctp_pcb.c 258765 2013-11-30 12:51:19Z tuexen $"); + #endif + ++#include + #include + #ifdef __FreeBSD__ + #include diff --git a/srcpkgs/icecat/patches/musl-no_fpehandler.patch b/srcpkgs/icecat/patches/musl-no_fpehandler.patch new file mode 100644 index 00000000000..db9c274e0b2 --- /dev/null +++ b/srcpkgs/icecat/patches/musl-no_fpehandler.patch @@ -0,0 +1,23 @@ +Disable fpehandler() for musl libc as it requires access +to the internals of ucontext_t which are not available. + +--- toolkit/xre/nsSigHandlers.cpp 2015-07-14 00:08:05.000000000 +0200 ++++ toolkit/sre/nsSigHandlers.cpp 2015-08-23 13:04:47.979746292 +0200 +@@ -132,7 +132,7 @@ + + #endif + +-#ifdef SA_SIGINFO ++#if defined(SA_SIGINFO) && defined(__GLIBC__) + static void fpehandler(int signum, siginfo_t *si, void *context) + { + /* Integer divide by zero or integer overflow. */ +@@ -237,7 +237,7 @@ + } + #endif // CRAWL_STACK_ON_SIGSEGV + +-#ifdef SA_SIGINFO ++#if defined(SA_SIGINFO) && defined(__GLIBC__) + /* Install a handler for floating point exceptions and disable them if they occur. */ + struct sigaction sa, osa; + sa.sa_flags = SA_ONSTACK | SA_RESTART | SA_SIGINFO; diff --git a/srcpkgs/icecat/patches/musl-u_int64_t.patch b/srcpkgs/icecat/patches/musl-u_int64_t.patch new file mode 100644 index 00000000000..74d723a302d --- /dev/null +++ b/srcpkgs/icecat/patches/musl-u_int64_t.patch @@ -0,0 +1,61 @@ +In musl libc headers there is no u_int64_t defined, +thus use the type uint64_t instead. + +--- tools/profiler/local_debug_info_symbolizer.cc 2015-07-14 00:10:06.000000000 +0200 ++++ tools/profiler/local_debug_info_symbolizer.cc 2015-08-21 13:35:17.690298070 +0200 +@@ -222,7 +222,7 @@ + debug_info_module = it->second; + } + +- u_int64_t address = frame->instruction - frame->module->base_address(); ++ uint64_t address = frame->instruction - frame->module->base_address(); + Module::Function* function = + debug_info_module->FindFunctionByAddress(address); + if (function) { +@@ -282,7 +282,7 @@ + if (it == symbols_.end()) return NULL; + + Module* module = it->second; +- u_int64_t address = frame->instruction - frame->module->base_address(); ++ uint64_t address = frame->instruction - frame->module->base_address(); + Module::StackFrameEntry* entry = + module->FindStackFrameEntryByAddress(address); + if (!entry) +--- tools/profiler/UnwinderThread2.cpp 2015-07-14 00:10:06.000000000 +0200 ++++ tools/profiler/UnwinderThread2.cpp 2015-08-21 15:38:53.699962995 +0200 +@@ -456,7 +456,7 @@ + ////////////////////////////////////////////////////////// + + // This is the interface to LUL. +-typedef struct { u_int64_t pc; u_int64_t sp; } PCandSP; ++typedef struct { uint64_t pc; uint64_t sp; } PCandSP; + + // Forward declaration. Implementation is below. + static +@@ -1318,7 +1318,7 @@ + else { + // We have at least one N and one P entry available. + // Scan forwards to find the SP of the current P entry +- u_int64_t sp_cur_P = 0; ++ uint64_t sp_cur_P = 0; + unsigned int m = next_P + 1; + while (1) { + /* This assertion should hold because in a well formed +@@ -1329,7 +1329,7 @@ + if (ent.is_ent_hint('Q')) + break; + if (ent.is_ent('S')) { +- sp_cur_P = reinterpret_cast(ent.get_tagPtr()); ++ sp_cur_P = reinterpret_cast(ent.get_tagPtr()); + break; + } + m++; +@@ -1338,7 +1338,7 @@ + if (0) LOG(" P <= last_was_P && sp_cur_P == 0"); + use_P = true; + } else { +- u_int64_t sp_cur_N = pairs[next_N].sp; ++ uint64_t sp_cur_N = pairs[next_N].sp; + use_P = (sp_cur_P > sp_cur_N); + if (0) LOGF(" %s <= sps P %p N %p", + use_P ? "P" : "N", (void*)(intptr_t)sp_cur_P, diff --git a/srcpkgs/icecat/patches/musl-ucontext.patch b/srcpkgs/icecat/patches/musl-ucontext.patch new file mode 100644 index 00000000000..bbaed7dacde --- /dev/null +++ b/srcpkgs/icecat/patches/musl-ucontext.patch @@ -0,0 +1,55 @@ +Musl libc doesn't expose the ucontext_t internals, but +just an opaque struct __ucontext, thus disable code which +tries to access the members. + +Define gettid(2) for musl libc as well. + +--- tools/profiler/platform-linux.cc 2015-07-14 00:10:07.000000000 +0200 ++++ tools/profiler/platform-linux.cc 2015-08-21 13:52:40.411391562 +0200 +@@ -87,14 +87,13 @@ + + #define SIGNAL_SAVE_PROFILE SIGUSR2 + +-#if defined(__GLIBC__) +-// glibc doesn't implement gettid(2). ++// We need a definition of gettid(2), but neither glibc nor ++// musl libc provide a wrapper for it. + #include + pid_t gettid() + { + return (pid_t) syscall(SYS_gettid); + } +-#endif + + /* static */ Thread::tid_t + Thread::GetCurrentId() +@@ -164,6 +163,7 @@ + + static void SetSampleContext(TickSample* sample, void* context) + { ++#if defined(__GLIBC__) + // Extracting the sample from the context is extremely machine dependent. + ucontext_t* ucontext = reinterpret_cast(context); + mcontext_t& mcontext = ucontext->uc_mcontext; +@@ -196,6 +196,7 @@ + // Implement this on MIPS. + UNIMPLEMENTED(); + #endif ++#endif + } + + #ifdef ANDROID +@@ -590,11 +594,13 @@ + void TickSample::PopulateContext(void* aContext) + { + MOZ_ASSERT(aContext); ++#if defined(__GLIBC__) + ucontext_t* pContext = reinterpret_cast(aContext); + if (!getcontext(pContext)) { + context = pContext; + SetSampleContext(this, aContext); + } ++#endif + } + + // WARNING: Works with values up to 1 second diff --git a/srcpkgs/icecat/template b/srcpkgs/icecat/template new file mode 100644 index 00000000000..8d426122a8d --- /dev/null +++ b/srcpkgs/icecat/template @@ -0,0 +1,182 @@ +# Template build file for 'icecat'. +pkgname=icecat +version=31.8.0 +revision=1 +short_desc="GNU version of the Firefox browser" +maintainer="Jürgen Buchmüller " +homepage="https://www.gnu.org/software/${pkgname}/" +license="MPL-1.1, GPL-2, LGPL-2.1" +distfiles="${GNU_SITE}/${pkgname}/${version}/${pkgname}-${version}-gnu1.tar.bz2" +checksum="370087d0adadf8b1c1e6a9920e26488a8902b9dc461d305f258fddb26a129d87" + +lib32disabled=yes + +hostmakedepends="unzip zip pkg-config perl python yasm" +makedepends="nss-devel libjpeg-turbo-devel icu55-devel + pixman-devel sqlite-devel gst-plugins-base1-devel gtk+-devel + libevent-devel libnotify-devel libvpx-devel libXrender-devel + startup-notification-devel dbus-glib-devel alsa-lib-devel pulseaudio-devel + hunspell-devel libXcomposite-devel libSM-devel libXScrnSaver-devel + libXt-devel libXdamage-devel" +depends="desktop-file-utils hicolor-icon-theme" + +# Make config/system_wrappers/alsa/alsalib.h and pulse/pulse.h find +# the required includes +CFLAGS="-I${XBPS_CROSS_BASE}/usr/include/alsa \ + -I${XBPS_CROSS_BASE}/usr/include/pulse \ + -I${XBPS_CROSS_BASE}/usr/include/nspr \ + -I${XBPS_CROSS_BASE}/usr/include/nss" +CXXFLAGS="${CFLAGS}" +LDFLAGS="-L${XBPS_CROSS_BASE}/usr/lib" + +pre_configure() { + case "$XBPS_TARGET_MACHINE" in + *-musl) + cp ${FILESDIR}/stab.h toolkit/crashreporter/google-breakpad/src/ + ;; + esac + + # configure script misdetects the preprocessor without an optimization level + sed -i '/ac_cpp=/s/$CPPFLAGS/& -O2/' configure + + # Google API key (see http://www.chromium.org/developers/how-tos/api-keys) + # Note: This is for Void Linux use ONLY. + _google_api_key="AIzaSyCIFdBA7eQP43R6kXRwTq7j6Mvj1ITze90" + echo -n "$_google_api_key" > google-api-key + [ ! -d xbps-build ] && mkdir -p xbps-build + + # Remove the spyblock@gnu.org addon because it causes a permanent + # error message to be printed at the bottom of the window and is + # said to not work right anyway: + # http://lists.gnu.org/archive/html/bug-gnuzilla/2015-07/msg00041.html + # TODO: find a fix for the annoying error message + rm -r extensions/gnu/spyblock@gnu.org + sed -i browser/installer/package-manifest.in \ + -e "/@BINPATH@\/browser\/extensions\/spyblock@gnu.org\/\*/d" + sed -i mobile/android/installer/package-manifest.in \ + -e "/@BINPATH@\/browser\/extensions\/spyblock@gnu.org\/\*/d" + sed -i extensions/gnu/abouticecat\@gnu.org/chrome/content/aboutIceCat/aboutIceCat.xhtml \ + -e "/.*spyblock@gnu.org/d" +} +do_configure() { + if [ "$CROSS_BUILD" ]; then + export HOST_CFLAGS="${XBPS_CFLAGS}" + export HOST_CXXFLAGS="${XBPS_CXXFLAGS}" + + cross_args+=" --target=$XBPS_CROSS_TRIPLET" + export ac_cv_sqlite_secure_delete=yes + export ac_cv_sqlite_threadsafe=yes + export ac_cv_sqlite_enable_fts3=yes + export ac_cv_sqlite_enable_unlock_notify=yes + export ac_cv_prog_hostcxx_works=1 + # Fix wrong assignment of (modified) $HOST_CXXFLAGS in js/src/configure + sed -i js/src/configure \ + -e "s;CFLAGS=\"\$HOST_CXXFLAGS\";CFLAGS=\"${XBPS_CXXFLAGS}\";" + fi + case "$XBPS_TARGET_MACHINE" in + *-musl) export ac_cv_header_execinfo_h=no + esac + + export ac_cv_sqlite_secure_delete=yes + export ac_cv_sqlite_threadsafe=yes + export ac_cv_sqlite_enable_fts3=yes + export ac_cv_sqlite_enable_unlock_notify=yes + export ac_cv_prog_hostcxx_works=1 + + mkdir -p /usr/lib/icecat + export LDFLAGS+=" -Wl,-rpath=/usr/lib/icecat" + + # Patch to use /usr/lib/icecat instead of /usr/lib/icecat-${version} + sed -i config/baseconfig.mk \ + -e 's;$(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION);$(libdir)/$(MOZ_APP_NAME);g' \ + -e 's;$(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION);$(libdir)/$(MOZ_APP_NAME)-devel;g' + + cd xbps-build + SHELL=/bin/bash ../configure \ + --prefix=/usr \ + --libdir=/usr/lib \ + --with-system-nspr \ + --with-system-nss \ + --with-system-bz2 \ + --with-system-jpeg \ + --with-system-zlib \ + --without-system-png \ + --with-system-libevent \ + --with-system-libvpx \ + --enable-system-cairo \ + --enable-system-pixman \ + --enable-system-hunspell \ + --enable-system-sqlite \ + --enable-system-ffi \ + --enable-startup-notification \ + --disable-gio \ + --with-pthreads \ + --enable-official-branding \ + --enable-safe-browsing \ + --enable-url-classifier \ + --disable-skia \ + --disable-debug \ + --disable-gnomevfs \ + --disable-gconf \ + --disable-crashreporter \ + --disable-updater \ + --disable-xprint \ + --disable-tests \ + --disable-mochitest \ + --disable-installer \ + --disable-elf-hack \ + --with-system-icu \ + --enable-pulseaudio \ + --enable-gstreamer=1.0 \ + --disable-cpp-exceptions \ + --disable-javaxpcom \ + --with-nspr-prefix=${XBPS_CROSS_BASE}/usr \ + --with-nss-prefix=${XBPS_CROSS_BASE}/usr \ + --with-google-api-keyfile="${wrksrc}/google-api-key" \ + --enable-optimize="$CFLAGS -fPIC" \ + --disable-strip \ + --enable-gold=no \ + --disable-install-strip \ + --disable-static \ + --disable-jemalloc \ + --enable-pie \ + --disable-profiling \ + --disable-profilelocking \ + ${cross_args} +} +do_build() { + cd xbps-build + SHELL=/bin/bash make ${makejobs} +} +do_install() { + cd xbps-build + make DESTDIR=${DESTDIR} install + + vinstall ${FILESDIR}/vendor.js 644 usr/lib/icecat/defaults/pref + vinstall ${FILESDIR}/icecat.desktop 644 usr/share/applications + + for i in 16x16 22x22 24x24 32x32 48x48 256x256; do + vinstall ${wrksrc}/browser/branding/official/default${i%x*}.png 644 \ + usr/share/icons/hicolor/${i}/apps icecat.png + done + vinstall ${wrksrc}/browser/branding/official/default256.png 644 \ + usr/share/pixmaps icecat.png + + # Use system-provided dictionaries + rm -rf ${DESTDIR}/usr/lib/icecat/{dictionaries,hyphenation} + ln -s /usr/share/hunspell ${DESTDIR}/usr/lib/icecat/dictionaries + ln -s /usr/share/hyphen ${DESTDIR}/usr/lib/icecat/hyphenation + + # https://bugzilla.mozilla.org/show_bug.cgi?id=658850 + ln -sf icecat ${DESTDIR}/usr/lib/icecat/icecat-bin +} + +icecat-devel_package() { + short_desc+=" - development files" + depends="${sourcpkg}>=${version}_${revision}" + pkg_install() { + vmove usr/include + vmove usr/lib/icecat-devel + vmove usr/share/idl + } +}