From e7366bf41f68cfe07e9ea03fc4a398baecbae651 Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Sat, 4 Feb 2017 09:41:13 +0000 Subject: Initial conversion from MediaWiki, 20170204 --- COPYING | 437 +++++++++++++++++++++ autobuilder_requirements.mdwn | 25 ++ bug_tracker.mdwn | 8 + caveat_risc_os.mdwn | 85 ++++ continuous_integration.mdwn | 42 ++ continuous_integration_debian_jessie_setup.mdwn | 421 ++++++++++++++++++++ continuous_integration_debian_wheezy_setup.mdwn | 164 ++++++++ continuous_integration_freebsd_setup.mdwn | 67 ++++ continuous_integration_haiku_slave_setup.mdwn | 83 ++++ continuous_integration_mac_os_x_setup.mdwn | 9 + ...us_integration_mac_os_x_snow_leopard_setup.mdwn | 80 ++++ ...inuous_integration_mac_os_x_yosemite_setup.mdwn | 77 ++++ ...ous_integration_manual_debian_wheezy_setup.mdwn | 9 + ...nuous_integration_manual_haiku_slave_setup.mdwn | 9 + continuous_integration_manual_openbsd_setup.mdwn | 9 + continuous_integration_openbsd_setup.mdwn | 127 ++++++ continuous_integration_setup_haiku_slave.mdwn | 7 + css_media_queries.mdwn | 116 ++++++ developer_weekend__jan_2014_.mdwn | 72 ++++ developer_weekend__mar_2010_.mdwn | 30 ++ developer_weekend__nov_2012_.mdwn | 22 ++ developer_weekend__nov_2014_.mdwn | 182 +++++++++ developer_weekend__nov_2016_.mdwn | 36 ++ development_plan.mdwn | 98 +++++ disc_caching_and_history.mdwn | 34 ++ documentation.mdwn | 27 ++ documentation/buildingforamigaos.mdwn | 57 +++ documentation/buildingforriscosquickstart.mdwn | 85 ++++ documentation/contents.mdwn | 148 +++++++ documentation/directory_structure.mdwn | 45 +++ documentation/errors.mdwn | 36 ++ documentation/frames.mdwn | 64 +++ documentation/front_end_functions.mdwn | 81 ++++ documentation/gettingcoding.mdwn | 155 ++++++++ documentation/gitcheatsheet.mdwn | 278 +++++++++++++ documentation/gtk_interface.mdwn | 36 ++ documentation/layout.mdwn | 70 ++++ documentation/memory.mdwn | 26 ++ documentation/modular_coding_style.mdwn | 39 ++ documentation/overview.mdwn | 9 + documentation/printing.mdwn | 65 +++ documentation/references.mdwn | 37 ++ documentation/treeview.mdwn | 88 +++++ frames.mdwn | 115 ++++++ gsoc.mdwn | 18 + gsoc/application.mdwn | 151 +++++++ gsoc/information.mdwn | 9 + gsoc/requirements.mdwn | 85 ++++ gsoc/student_guidelines.mdwn | 66 ++++ gsoc_2014.mdwn | 9 + gsoc_2014_ideas.mdwn | 124 ++++++ index.mdwn | 71 ++++ layout.mdwn | 34 ++ libcss_style_sharing.mdwn | 48 +++ libdom.mdwn | 22 ++ libdom/core_support_status.mdwn | 254 ++++++++++++ libdom/events_support_status.mdwn | 115 ++++++ libdom/minimalsubset.mdwn | 99 +++++ libdom/the_mutationevent_generation.mdwn | 96 +++++ libdom_core_support_status.mdwn | 9 + libdom_events_support_status.mdwn | 9 + libhubbub.mdwn | 59 +++ module/index.mdwn | 20 + module/utils/container.mdwn | 38 ++ module/utils/errors.mdwn | 38 ++ module/utils/filename.mdwn | 38 ++ module/utils/findresource.mdwn | 35 ++ module/utils/hashtable.mdwn | 38 ++ module/utils/http.mdwn | 34 ++ module/utils/locale.mdwn | 38 ++ netsurf_2.5.mdwn | 28 ++ netsurf_2.6.mdwn | 50 +++ netsurf_2.7.mdwn | 71 ++++ netsurf_2.8.mdwn | 70 ++++ netsurf_2.9.mdwn | 83 ++++ netsurf_3.0.mdwn | 88 +++++ netsurf_3.1.mdwn | 127 ++++++ netsurf_3.2.mdwn | 31 ++ netsurf_3.3.mdwn | 34 ++ netsurf_3.4.mdwn | 34 ++ netsurf_3.5.mdwn | 88 +++++ netsurf_3.6.mdwn | 67 ++++ netsurf_corebuild.mdwn | 148 +++++++ release_admin.mdwn | 69 ++++ release_process.mdwn | 273 +++++++++++++ released_versions.mdwn | 20 + sequence_planning_for_libdom_specialisations.mdwn | 348 ++++++++++++++++ society.mdwn | 9 + society/constitution.mdwn | 117 ++++++ society/members.mdwn | 31 ++ spec/htm5_alignment.mdwn | 9 + spec/html5_alignment.mdwn | 59 +++ test/libcss/nstests.mdwn | 187 +++++++++ the_attr_node_todo.mdwn | 11 + the_mutationevent_generation.mdwn | 9 + todo.mdwn | 23 ++ todo/amigaos_frontend.mdwn | 175 +++++++++ todo/framebuffer_frontend.mdwn | 72 ++++ todo/gtk_frontend.mdwn | 17 + todo/jmb.mdwn | 49 +++ todo/risc_os_frontend.mdwn | 61 +++ todo/tlsa.mdwn | 47 +++ todo/win32.mdwn | 28 ++ virtual_host_server.mdwn | 56 +++ 104 files changed, 7856 insertions(+) create mode 100644 COPYING create mode 100644 autobuilder_requirements.mdwn create mode 100644 bug_tracker.mdwn create mode 100644 caveat_risc_os.mdwn create mode 100644 continuous_integration.mdwn create mode 100644 continuous_integration_debian_jessie_setup.mdwn create mode 100644 continuous_integration_debian_wheezy_setup.mdwn create mode 100644 continuous_integration_freebsd_setup.mdwn create mode 100644 continuous_integration_haiku_slave_setup.mdwn create mode 100644 continuous_integration_mac_os_x_setup.mdwn create mode 100644 continuous_integration_mac_os_x_snow_leopard_setup.mdwn create mode 100644 continuous_integration_mac_os_x_yosemite_setup.mdwn create mode 100644 continuous_integration_manual_debian_wheezy_setup.mdwn create mode 100644 continuous_integration_manual_haiku_slave_setup.mdwn create mode 100644 continuous_integration_manual_openbsd_setup.mdwn create mode 100644 continuous_integration_openbsd_setup.mdwn create mode 100644 continuous_integration_setup_haiku_slave.mdwn create mode 100644 css_media_queries.mdwn create mode 100644 developer_weekend__jan_2014_.mdwn create mode 100644 developer_weekend__mar_2010_.mdwn create mode 100644 developer_weekend__nov_2012_.mdwn create mode 100644 developer_weekend__nov_2014_.mdwn create mode 100644 developer_weekend__nov_2016_.mdwn create mode 100644 development_plan.mdwn create mode 100644 disc_caching_and_history.mdwn create mode 100644 documentation.mdwn create mode 100644 documentation/buildingforamigaos.mdwn create mode 100644 documentation/buildingforriscosquickstart.mdwn create mode 100644 documentation/contents.mdwn create mode 100644 documentation/directory_structure.mdwn create mode 100644 documentation/errors.mdwn create mode 100644 documentation/frames.mdwn create mode 100644 documentation/front_end_functions.mdwn create mode 100644 documentation/gettingcoding.mdwn create mode 100644 documentation/gitcheatsheet.mdwn create mode 100644 documentation/gtk_interface.mdwn create mode 100644 documentation/layout.mdwn create mode 100644 documentation/memory.mdwn create mode 100644 documentation/modular_coding_style.mdwn create mode 100644 documentation/overview.mdwn create mode 100644 documentation/printing.mdwn create mode 100644 documentation/references.mdwn create mode 100644 documentation/treeview.mdwn create mode 100644 frames.mdwn create mode 100644 gsoc.mdwn create mode 100644 gsoc/application.mdwn create mode 100644 gsoc/information.mdwn create mode 100644 gsoc/requirements.mdwn create mode 100644 gsoc/student_guidelines.mdwn create mode 100644 gsoc_2014.mdwn create mode 100644 gsoc_2014_ideas.mdwn create mode 100644 index.mdwn create mode 100644 layout.mdwn create mode 100644 libcss_style_sharing.mdwn create mode 100644 libdom.mdwn create mode 100644 libdom/core_support_status.mdwn create mode 100644 libdom/events_support_status.mdwn create mode 100644 libdom/minimalsubset.mdwn create mode 100644 libdom/the_mutationevent_generation.mdwn create mode 100644 libdom_core_support_status.mdwn create mode 100644 libdom_events_support_status.mdwn create mode 100644 libhubbub.mdwn create mode 100644 module/index.mdwn create mode 100644 module/utils/container.mdwn create mode 100644 module/utils/errors.mdwn create mode 100644 module/utils/filename.mdwn create mode 100644 module/utils/findresource.mdwn create mode 100644 module/utils/hashtable.mdwn create mode 100644 module/utils/http.mdwn create mode 100644 module/utils/locale.mdwn create mode 100644 netsurf_2.5.mdwn create mode 100644 netsurf_2.6.mdwn create mode 100644 netsurf_2.7.mdwn create mode 100644 netsurf_2.8.mdwn create mode 100644 netsurf_2.9.mdwn create mode 100644 netsurf_3.0.mdwn create mode 100644 netsurf_3.1.mdwn create mode 100644 netsurf_3.2.mdwn create mode 100644 netsurf_3.3.mdwn create mode 100644 netsurf_3.4.mdwn create mode 100644 netsurf_3.5.mdwn create mode 100644 netsurf_3.6.mdwn create mode 100644 netsurf_corebuild.mdwn create mode 100644 release_admin.mdwn create mode 100644 release_process.mdwn create mode 100644 released_versions.mdwn create mode 100644 sequence_planning_for_libdom_specialisations.mdwn create mode 100644 society.mdwn create mode 100644 society/constitution.mdwn create mode 100644 society/members.mdwn create mode 100644 spec/htm5_alignment.mdwn create mode 100644 spec/html5_alignment.mdwn create mode 100644 test/libcss/nstests.mdwn create mode 100644 the_attr_node_todo.mdwn create mode 100644 the_mutationevent_generation.mdwn create mode 100644 todo.mdwn create mode 100644 todo/amigaos_frontend.mdwn create mode 100644 todo/framebuffer_frontend.mdwn create mode 100644 todo/gtk_frontend.mdwn create mode 100644 todo/jmb.mdwn create mode 100644 todo/risc_os_frontend.mdwn create mode 100644 todo/tlsa.mdwn create mode 100644 todo/win32.mdwn create mode 100644 virtual_host_server.mdwn diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..d60efe4 --- /dev/null +++ b/COPYING @@ -0,0 +1,437 @@ +Attribution-NonCommercial-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International +Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-NonCommercial-ShareAlike 4.0 International Public License +("Public License"). To the extent this Public License may be +interpreted as a contract, You are granted the Licensed Rights in +consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the +Licensor receives from making the Licensed Material available under +these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-NC-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution, NonCommercial, and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. NonCommercial means not primarily intended for or directed towards + commercial advantage or monetary compensation. For purposes of + this Public License, the exchange of the Licensed Material for + other material subject to Copyright and Similar Rights by digital + file-sharing or similar means is NonCommercial provided there is + no payment of monetary compensation in connection with the + exchange. + + l. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + m. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + n. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part, for NonCommercial purposes only; and + + b. produce, reproduce, and Share Adapted Material for + NonCommercial purposes only. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties, including when + the Licensed Material is used other than for NonCommercial + purposes. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-NC-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database for NonCommercial purposes + only; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/autobuilder_requirements.mdwn b/autobuilder_requirements.mdwn new file mode 100644 index 0000000..511fec8 --- /dev/null +++ b/autobuilder_requirements.mdwn @@ -0,0 +1,25 @@ +[[!meta title="Autobuilder requirements"]] +[[!meta author="Tlsa"]] +[[!meta date="2009-07-08T13:38:43Z"]] + + +[[!toc]] The current autobuilder +script is in need of an overhaul. Additionally, we need more features +for it to be useful in the future. This page enumerates the features we +need. + +- Automated fetch of component sources +- Detection of updated components +- Configurable installation prefix/destdir and build environment +- Ability to specify which versions of components are built for a + given product +- Dependency tracking (so, e.g a change to Hubbub results in a new + NetSurf binary) +- Robust rewriting of URLs in documentation (maybe better handled in + component buildsystems) +- Retain features of existing autobuild.pl +- Automated packaging of components for release +- Automated creation of NSTools distribution for RISC OS. +- Automatically run component testsuites, notifying any failures. + Also, compute code coverage statistics. + diff --git a/bug_tracker.mdwn b/bug_tracker.mdwn new file mode 100644 index 0000000..9afa23e --- /dev/null +++ b/bug_tracker.mdwn @@ -0,0 +1,8 @@ +[[!meta title="Bug Tracker"]] +[[!meta author="Kyllikki"]] +[[!meta date="2016-06-17T07:41:58Z"]] + + +[[!toc]] The Mantis issue tracker +is located at + diff --git a/caveat_risc_os.mdwn b/caveat_risc_os.mdwn new file mode 100644 index 0000000..f55f6bf --- /dev/null +++ b/caveat_risc_os.mdwn @@ -0,0 +1,85 @@ +[[!meta title="Caveat RISC OS"]] +[[!meta author="James Bursa"]] +[[!meta date="2010-03-01T02:57:12Z"]] + + +[[!toc]] When working on software +that must run under RISC OS, there are many issues that you must keep in +mind that might not be obvious or apparent to people who have never +written software for RISC OS before. This page describes some of them. + +Some of the NetSurf Project's sponsors have donated us the equipment and +bandwidth required to give accepted students access to an open-access +RISC OS computer over the internet, so they can test and experiment with +it. This is done via an IP KVM using a rather ghastly, but usable, Java +applet in a web page. The machine is an A9 Home donated by Advantage Six +Ltd. + +RISC OS is co-operatively multi-tasked +-------------------------------------- + +RISC OS GUI applications must 'yield' to the OS before another process +can be scheduled. This is done via the Wimp\_Poll system call. In +NetSurf, this is wrapped inside gui\_multitask(), which handles yielding +to the OS, getting GUI events from it, and running scheduled functions. + +RISC OS has a limited number of shared-namespace file descriptors +----------------------------------------------------------------- + +RISC OS has 255 file handles - and that's it. You can't possibly have +more files than that open at anyone time, and there is a single pool of +file handles shared by all processes. Don't leave files open that you +don't need to keep open, and don't blindly close other handles. + +RISC OS has a limited number of shared-namespace socket descriptors +------------------------------------------------------------------- + +Unlike on other operating systems, RISC OS's sockets are allocated from +a different pool of numbers. They may, for example, overlap with file +descriptors. Also note that as with file descriptors, there is a single +pool of them shared by all processes. There's also a limit on the number +you can have open at once. This can be as low as 64. + +RISC OS's environment variables are global to the system +-------------------------------------------------------- + +RISC OS uses environment variables extensively: much of the +configuration of the system is done via them. They are shared by all +processes. Because of this, RISC OS has a naming convention for them so +they don't clash. If you really feel the need to use an environment +variable, you should prefix its name with NetSurf\$. + +Memory is valuable +------------------ + +RISC OS machines may have as little as 64MB of RAM, and the OS provides +no support for swap or paging. Additionally, much of the memory +allocated via malloc() will end up being allocated in what is called a +Dynamic Area. The upshot of this is that if you fragment the heap too +much, you've basically wasted memory, and no process will be able to use +the spaces you have freed. + +RISC OS hardware is slow +------------------------ + +The fastest RISC OS computer you can buy is a 600MHz ARM clone with no +floating point and a tiny cache. Make sure your code is tight, but +remember readability and maintenability is paramount! + +RISC OS is delicate and lacks wide-spread memory protection +----------------------------------------------------------- + +It's trivial to take down the entire OS if you're not careful, where on +other OSes you'd just get a SIGSEGV. Be careful! + +RISC OS lacks shared libraries +------------------------------ + +While the GTK version of NetSurf's binary is less than 600kB, RISC OS +has no shared libraries, meaning it's over 3MB. Given the speed of RISC +OS machines, this is already a problem. If you want to make use of a new +library, make sure it's not too huge, and that it doesn't depend on a +dozen other libraries. + +[[!inline raw=yes pages="Documentation"]] + diff --git a/continuous_integration.mdwn b/continuous_integration.mdwn new file mode 100644 index 0000000..193d8d9 --- /dev/null +++ b/continuous_integration.mdwn @@ -0,0 +1,42 @@ +[[!meta title="Continuous Integration"]] +[[!meta author="Kyllikki"]] +[[!meta date="2016-02-06T11:38:14Z"]] + + +[[!toc]] The CI system is a jenkins +instance on + +The old discussion on [[Autobuilder requirements|autobuilder_requirements]] — +lists requirements for the new autobuilder. + +Master +------ + +The master instance is a VPS provided by Mythic beasts. + +A VPN between it and all the build slaves provides a network where no +machines are publicly accessible. This is in addition to the ssh based +tunnels used to copy data between CI nodes. + +The Jenkins install on the master server is a snapshot release version + +Slave +----- + +The majority of the build slaves are provided by our own +[[virtual host server|virtual_host_server]] excepting operating +systems which cannot be virtualised (principally MAC OS X). + +### [[Continuous Integration Debian Jessie Setup|continuous_integration_debian_jessie_setup]] + +### [[Continuous Integration Debian Wheezy Setup|continuous_integration_debian_wheezy_setup]] + +### [[Continuous Integration OpenBSD Setup|continuous_integration_openbsd_setup]] + +### [[Continuous Integration FreeBSD Setup|continuous_integration_freebsd_setup]] + +### [[Continuous Integration Haiku Slave Setup|continuous_integration_haiku_slave_setup]] + +### [[Continuous Integration Mac OS X Snow Leopard Setup|continuous_integration_mac_os_x_snow_leopard_setup]] + +### [[Continuous Integration Mac OS X Yosemite Setup|continuous_integration_mac_os_x_yosemite_setup]] diff --git a/continuous_integration_debian_jessie_setup.mdwn b/continuous_integration_debian_jessie_setup.mdwn new file mode 100644 index 0000000..fb794a8 --- /dev/null +++ b/continuous_integration_debian_jessie_setup.mdwn @@ -0,0 +1,421 @@ +[[!meta title="Continuous Integration Debian Jessie Setup"]] +[[!meta author="Kyllikki"]] +[[!meta date="2016-07-06T12:46:14Z"]] + + +[[!toc]] + +Debian jessie (8.x) OS install +------------------------------ + +### amd64 VDS install from media + +[[Virtual server setup|virtual_host_server]] + +Install minimal system from netinst CD (attached when VDS is created on +phoenix) Config options: + +- In the "role" selection select "ssh server" and "system utilities" + only. +- The whole disc default partitioning is fine +- The base user the install insists on creating should be the netsurf + user. +- Boot loader in MBR + +Once installed: + +- install sudo package and add netsurf user to sudo group +- edit /etc/default/grub + +`GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"` + +`# update-grub2` + +### arm64 VDS install + +[[ARM64 virtual server setup|virtual_host_server_arm64]] + +Once installed: + +- create netsurf user +- install sudo package and add netsurf user to sudo group +- edit /etc/inittab comment pty 3 through 6 and uncomment serial T0 +- enable backports + +`echo "deb `[`http://http.debian.net/debian`](http://http.debian.net/debian)` jessie-backports main" > /etc/apt/sources.list.d/backports.list` +`apt-get update` + +- install updated kernel + +`apt-get install linux-image-4.3.0-0.bpo.1-arm64` + +### Banana Pi + +This system is a dual core ARMv7 allwinner using the armhf ABI + +Used the install SD media from +[[http://www.igorpecovnik.com/2014/09/07/banana-pi-debian-sd-image/ Igor Pecovnik|http///www.igorpecovnik.com/2014/09/07/banana-pi-debian-sd-image/_igor_pecovnik]] + +- unzip and write raw file to full size SD card. + +Once installed: + +- first login as root:1234 which will need to be immediately changed +- use the nand-sata-install script and moved the install to sata disc. + The drive needs to be a clean drive with a recognised partition + table (DOS or GPT) and a single partition where the OS will be + installed. +- edit /etc/init.d/armhwinfo to remove the toilet dynamic MOTD banner +- (re)move /etc/bash.bashrc.custom as it issues a lot of unnecessary + commands +- adduser netsurf +- change /etc/apt/sources.list to point at a local mirror +- apt-get update +- apt-get upgrade +- install sudo package and add netsurf user to sudo group + +### Raspberry Pi 2 + +This system is a quad core ARMv7 Broadcom using the armhf ABI + +Used install media from [[http://sjoerd.luon.net/posts/2015/02/debian-jessie-on-rpi2/ Sjored|http///sjoerd.luon.net/posts/2015/02/debian-jessie-on-rpi2/_sjored]] + +- unpack onto micro SD card with bmap-tools + +`On any debian-based linux type "sudo apt-get install bmap-tools" and install it.` +`Then type "sudo bmaptool copy --nobmap 'yourlocation/jessie-rpi2.img' /dev/sdx" (Change yourlocation to the location of the .img file and sdx for the letter where the SD is mounted, if you don't know it type "sudo fdisk -l" and look for it).` + +Once installed: + +- first login as root:debian which will need to be immediately changed +- Prevent package FLASH-KERNEL UPDATING FROM OFFICIAL REPO WITH APT + PINNING + +`'touch /etc/apt/preferences.d/flash-kernel' create a new file` +`'vi /etc/apt/preferences.d/flash-kernel' edit it an add the following lines to it:` +`Package: flash-kernel` +`Pin: origin repositories.collabora.co.uk` +`Pin-Priority: 1000` +`'apt-cache policy flash-kernel' check if the package is pinned` + +- change /etc/apt/sources.list to point at a local mirror +- apt-get update +- apt-get upgrade +- adduser netsurf +- install sudo package and add netsurf user to sudo group + +### Orange Pi PC + +This system is a quad core ARMv7 allwinner H3 using the armhf ABI + +Used "mini" install media from +[[http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=342 loboris|http///www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=342_loboris]] + +- unpack image and write to micro SD card and configure as per loboris + instructions, careful installation steps are not immediately obvious + +Once installed: + +- first login as orangepi:orangepi which will need to be immediately + changed + +`* superuser available via sudo -i` + +- change /etc/apt/sources.list to point at a local mirror +- apt-get update +- apt-get upgrade +- alter orangepi user to netsurf by editing + +`/etc/group (dont forget to replace orangepi on the sudo group)` +`/etc/passwd` +`/etc/shadow` +`mv /home/orangepi /home/netsurf` + +Packaged CI worker install +-------------------------- + +Do a base OS install + +The recommended hostname for CI workers is "ciworker13" this allows us +to clearly identify CI worker nodes. Note historically we have used +"cislave1" which has been objected to by several users. See +[[https://wiki.debian.org/HowTo/ChangeHostname changing hostname|https///wiki.debian.org/howto/changehostname_changing_hostname]] on how to achive this. + +On master jenkins use "manage nodes" to create new node. Ensure "remote +fs root" is set to /var/lib/jenkins add variable JENKINS\_HOME set to +/var/lib/jenkins + +Note: replace arm64 with architecture name as required (armhf etc.) + +As superuser: + +- create jenkins user + +`adduser --system --group --home /var/lib/jenkins/ --disabled-login jenkins` + +- Add CI server repo to slave apt sources + +`echo "deb `[`http://ci.netsurf-browser.org/debian/`](http://ci.netsurf-browser.org/debian/)` jessie/amd64/" >> /etc/apt/sources.list.d/netsurf-browser.list` + +- update repos + +`apt-get update` + +- install ns-ci-worker package. accept the large package list and the + unsigned package install for gcovr and ns-ci-slave + +`apt-get install ns-ci-worker` + +- edit /etc/default/ns-ci-worker to set the correct url and secret + parameters +- If toolchains are to be built on the node ensure /opt is setup + correctly + +`mkdir -p /opt/netsurf` +`chown jenkins:jenkins /opt/netsurf` + +- become jenkins user + +`su -s/bin/bash - jenkins` + +- create ssh keypair (accept defaults - no password) + +`ssh-keygen -t rsa -C "netsurf@cislave12.netsurf-browser.org"` + +- copy .ssh/id\_rsa.pub from slave to jenkins master node and append + to /home/netsurf/.ssh/authorized\_keys + +`scp /home/jenkins/.ssh/id_rsa.pub netsurf@ci.netsurf-browser.org:ciworker12_id_rsa.pub` + +- exit jenkins user shell +- start CI worker daemon + +`/etc/init.d/ns-ci-worker start` + +Manual CI worker install +------------------------ + +### required packages + +The Netsurf repository has necessary updated packages in it and can be +accessed by doing the following: + +- Add CI server repo to slave apt sources + +`echo "deb `[`http://ci.netsurf-browser.org/builds/debian/`](http://ci.netsurf-browser.org/builds/debian/)` jessie/amd64/" >> /etc/apt/sources.list` + +- update repos + +`apt-get update` + +use apt to install these packages: + +`openjdk-7-jre-headless ` +`screen ` +`build-essential` +`ccache` +`clang` +`git` +`pkg-config` +`check` +`doxygen` +`libjson0-dev (from our repo - needs bugfixes `[`http://ci.netsurf-browser.org/builds/debian/`](http://ci.netsurf-browser.org/builds/debian/)`)` +`libexpat1-dev` +`libxml-perl` +`libxml-xpath-perl` +`lcov` +`gcovr (from our repo)` +`gperf` +`flex` +`bison` +`libpng-dev` +`libjpeg-dev` +`libmozjs185-dev` +`libglib2.0-dev` +`libcurl4-openssl-dev` +`liblcms1-dev` +`libxml2-dev` +`librsvg2-dev` +`libmng-dev` +`libgtk2.0-dev` +`libmozjs-dev` + +### config + +- on master jenkins use "manage nodes" to create new node. Ensure + "remote fs root" is set to /home/netsurf/jenkins +- create netsurf user +- as netsurf user: + - wget + - run screen + - create jenkins-slave.sh + +`#!/bin/bash` + +`java -Djava.awt.headless=true -jar slave.jar -jnlpUrl `[`http://ci.netsurf-browser.org/jenkins/computer/chimera/slave-agent.jnlp`](http://ci.netsurf-browser.org/jenkins/computer/chimera/slave-agent.jnlp)` -secret 0123456789abcdef01234567890abcdef` + +- - run jenkins-slave.sh + - create new screen tab + - create ssh keypair (accept defaults - no password) + +`ssh-keygen -t rsa -C "netsurf@cislave0.netsurf-browser.org"` + +- - copy .ssh/id\_rsa.pub from slave to jenkins master node and + append to /home/netsurf/.ssh/authorized\_keys + +`scp ci.netsurf-browser.org:.ssh/id_rsa.pub .id_rsa.pub` +`cat id_rsa.pub >> .ssh/authorized_keys` + +- - copy .ssh/id\_rsa.pub from master node to slave and append to + /home/netsurf/.ssh/authorized\_keys + - create reverse-ssh.sh (change tunnel port number!) + +`#!/bin/sh` + +`ssh -R 22224:localhost:22 netsurf@ci.netsurf-browser.org 'bash -c "while true; do echo .; sleep 60; done"'` + +- - run reverse-ssh.sh + - on the master create a shell script to use the ssh tunnel + connection, thus firewalls etc are moot as long as the slave can + connect to the master + +`ssh netsurf@localhost -p 22223` + +Pbuilder setup +-------------- + +This allows a worker to build Debian packages. The worker should be +installed as a normal CI worker node and then: + +as superuser on node: + +- apt-get install pbuilder +- addgroup pbuilder +- addgroup jenkins pbuilder +- create /etc/sudoers.d/pbuilder + +`jenkins         ALL = NOPASSWD:/usr/sbin/pbuilder` + +- visudo and alter Defaults + +`Defaults        env_reset,env_keep="DIST ARCH"` + +- replace /etc/pbuilderrc + +`# this is your configuration file for pbuilder.` +`# the file in /usr/share/pbuilder/pbuilderrc is the default template.` +`# /etc/pbuilderrc is the one meant for overwriting defaults in` +`# the default template` +`#` +`# read pbuilderrc.5 document for notes on specific options.` +`# List of Debian suites.` +`DEBIAN_SUITES=("sid", "stretch", "jessie", "wheezy", "squeeze")` +`` +`# List of Ubuntu suites.` +`UBUNTU_SUITES=("vivid" "utopic" "trusty" "saucy" "raring" "quantal" "precise" "oneiric" "natty" "lucid" "hardy")` +`` +`# Mirrors to use. Update these to your preferred mirror.` +`DEBIAN_MIRROR="ftp.uk.debian.org"` +`UBUNTU_MIRROR="mirrors.kernel.org"` +`` +`# set a default distribution if none is used.` +`: ${DIST:="$(lsb_release --short --codename)"}` +`` +`# set the architecture to the host architecture if none set.` +`: ${ARCH:="$(dpkg --print-architecture)"}` +`` +`NAME="$DIST"` +`if [ -n "${ARCH}" ]; then` +`    NAME="$NAME-$ARCH"` +`    DEBOOTSTRAPOPTS=("--arch" "$ARCH" "${DEBOOTSTRAPOPTS[@]}")` +`fi` +`BASETGZ="/var/cache/pbuilder/$NAME-base.tgz"` +`DISTRIBUTION="$DIST"` +`BUILDRESULT="/var/cache/pbuilder/$NAME/result/"` +`APTCACHE="/var/cache/pbuilder/$NAME/aptcache/"` +`BUILDPLACE="/var/cache/pbuilder/build/"` +`` +`if $(echo ${DEBIAN_SUITES[@]} | grep -q $DIST); then` +`    # Debian configuration` +`    MIRRORSITE="http://$DEBIAN_MIRROR/debian/"` +`    COMPONENTS="main contrib non-free"` +`    if $(echo "$STABLE_CODENAME stable" | grep -q $DIST); then` +`        OTHERMIRROR="$OTHERMIRROR | deb $MIRRORSITE $STABLE_BACKPORTS_SUITE $COMPONENTS"` +`    fi` +`elif $(echo ${UBUNTU_SUITES[@]} | grep -q $DIST); then` +`    # Ubuntu configuration` +`    MIRRORSITE="http://$UBUNTU_MIRROR/ubuntu/"` +`    COMPONENTS="main restricted universe multiverse"` +`else` +`    echo "Unknown distribution: $DIST"` +`    exit 1` +`fi` + +The architecture is assumed to be the native one from + +`dpkg --print-architecture` + +This can be set by passing ARCH to pbuilder (useful for i386 maybe?) + +for each distribution this node will build for: + +- create pbuilder result directory and set ownership permissions + +`mkdir -p /var/cache/pbuilder/jessie-armhf/result` +`chown root:pbuilder /var/cache/pbuilder/jessie-armhf/result` +`chmod g+w /var/cache/pbuilder/jessie-armhf/result` + +- become jenkins user + +`su -s/bin/bash - jenkins` + +- create pbuilder base for distribution + +`sudo DIST=jessie pbuilder create` + +- if desired additional packages and config can be made to the base + with + +`sudo DIST=jessie pbuilder login --save-after-login` + +distcc worker node +------------------ + +Do a basic OS install but \*not\* a CI worker setup. + +A recommended hostname for distcc worker is something like "cicpu0" this +allows us to use systems as processing node for other purposes than just +distcc in future. See debians +[[https://wiki.debian.org/HowTo/ChangeHostname changing hostname|https///wiki.debian.org/howto/changehostname_changing_hostname]] on how to achive this. + +The Netsurf repository has necessary updated packages in it and can be +accessed by doing the following: + +- Add CI server repo to slave apt sources + +`echo "deb `[`http://ci.netsurf-browser.org/builds/debian/`](http://ci.netsurf-browser.org/builds/debian/)` jessie/amd64/" >> /etc/apt/sources.list` + +- update repos + +`apt-get update` + +- use apt to install these packages: + +`build-essential` +`gcc` +`clang` +`distcc` + +- edit /etc/default/distcc + +`STARTDISTCC="true"` +`ALLOWEDNETS="192.168.211.0/24"` +`LISTEN="0.0.0.0"` +`JOBS="8"` + +- start the service + +`service distcc start` + +- ensure the client has hosts set to use the new worker + diff --git a/continuous_integration_debian_wheezy_setup.mdwn b/continuous_integration_debian_wheezy_setup.mdwn new file mode 100644 index 0000000..9127b32 --- /dev/null +++ b/continuous_integration_debian_wheezy_setup.mdwn @@ -0,0 +1,164 @@ +[[!meta title="Continuous Integration Debian Wheezy Setup"]] +[[!meta author="Kyllikki"]] +[[!meta date="2014-12-20T11:46:57Z"]] + + +[[!toc]] + +Debian wheezy (7.0) OS install +------------------------------ + +Install minimal system from netinst CD (attached when VDS is created on +phoenix) Config options: + +- In the "role" selection select "ssh server" and "system utilities" + only. +- The whole disc default partitioning is fine +- The base user the install insists on creating should be the netsurf + user. +- Boot loader in MBR + +Once installed: + +- install sudo package and add netsurf user to sudo group +- edit /etc/inittab comment pty 3 through 6 and uncomment serial T0 + +Packaged Setup for Debian wheezy (7.0) +-------------------------------------- + +on master jenkins use "manage nodes" to create new node. Ensure "remote +fs root" is set to /var/lib/jenkins add variable JENKINS\_HOME set to +/var/lib/jenkins + +As superuser: + +- create jenkins user + +`adduser --system --group --home /var/lib/jenkins/ --disabled-login jenkins` + +- Add CI server repo to slave apt sources + +`echo "deb `[`http://ci.netsurf-browser.org/debian/`](http://ci.netsurf-browser.org/debian/)` wheezy/amd64/" >> /etc/apt/sources.list.d/netsurf-browser.list` + +- update repos + +`apt-get update` + +- install ns-ci-slave package. accept the large package list and the + unsigned package install for gcovr and ns-ci-slave + +`apt-get install ns-ci-slave` + +- edit /etc/default/ns-ci-slave to set the correct url and secret + parameters +- If toolchains are to be built on the node ensure /opt is setup + correctly + +`mkdir -p /opt/netsurf` +`chown jenkins:jenkins /opt/netsurf` + +- become jenkins user + +`su -s/bin/bash - jenkins` + +- create ssh keypair (accept defaults - no password) + +`ssh-keygen -t rsa -C "netsurf@cislave10.netsurf-browser.org"` + +- copy .ssh/id\_rsa.pub from slave to jenkins master node and append + to /home/netsurf/.ssh/authorized\_keys + +`scp /home/jenkins/.ssh/id_rsa.pub netsurf@ci.netsurf-browser.org:cislave10_id_rsa.pub` + +- exit jenkins user shell +- start slave daemon + +`/etc/init.d/ns-ci-slave start` + +Manual Setup of Debian wheezy (7.0) +----------------------------------- + +### required packages + +use apt to install all these. The Netsurf repository has the necessary +updated packages in it and can be accessed by doing the following: + +- Add CI server repo to slave apt sources + +`echo "deb `[`http://ci.netsurf-browser.org/builds/debian/`](http://ci.netsurf-browser.org/builds/debian/)` wheezy/amd64/" >> /etc/apt/sources.list` + +- update repos + +`apt-get update` + +`openjdk-7-jre-headless ` +`screen ` +`build-essential` +`ccache` +`clang` +`git` +`pkg-config` +`check` +`doxygen` +`libjson0-dev (from our repo - needs bugfixes `[`http://ci.netsurf-browser.org/builds/debian/`](http://ci.netsurf-browser.org/builds/debian/)`)` +`libexpat1-dev` +`libxml-perl` +`libxml-xpath-perl` +`lcov` +`gcovr (from our repo)` +`gperf` +`flex` +`bison` +`libpng-dev` +`libjpeg-dev` +`libmozjs185-dev` +`libglib2.0-dev` +`libcurl4-openssl-dev` +`liblcms1-dev` +`libxml2-dev` +`librsvg2-dev` +`libmng-dev` +`libgtk2.0-dev` +`libmozjs-dev` + +### config + +- on master jenkins use "manage nodes" to create new node. Ensure + "remote fs root" is set to /home/netsurf/jenkins +- create netsurf user +- as netsurf user: + - wget + - run screen + - create jenkins-slave.sh + +`#!/bin/bash` + +`java -Djava.awt.headless=true -jar slave.jar -jnlpUrl `[`http://ci.netsurf-browser.org/jenkins/computer/chimera/slave-agent.jnlp`](http://ci.netsurf-browser.org/jenkins/computer/chimera/slave-agent.jnlp)` -secret 0123456789abcdef01234567890abcdef` + +- - run jenkins-slave.sh + - create new screen tab + - create ssh keypair (accept defaults - no password) + +`ssh-keygen -t rsa -C "netsurf@cislave0.netsurf-browser.org"` + +- - copy .ssh/id\_rsa.pub from slave to jenkins master node and + append to /home/netsurf/.ssh/authorized\_keys + +`scp ci.netsurf-browser.org:.ssh/id_rsa.pub .id_rsa.pub` +`cat id_rsa.pub >> .ssh/authorized_keys` + +- - copy .ssh/id\_rsa.pub from master node to slave and append to + /home/netsurf/.ssh/authorized\_keys + - create reverse-ssh.sh (change tunnel port number!) + +`#!/bin/sh` + +`ssh -R 22224:localhost:22 netsurf@ci.netsurf-browser.org 'bash -c "while true; do echo .; sleep 60; done"'` + +- - run reverse-ssh.sh + - on the master create a shell script to use the ssh tunnel + connection, thus firewalls etc are moot as long as the slave can + connect to the master + +`ssh netsurf@localhost -p 22223` + diff --git a/continuous_integration_freebsd_setup.mdwn b/continuous_integration_freebsd_setup.mdwn new file mode 100644 index 0000000..d2bde05 --- /dev/null +++ b/continuous_integration_freebsd_setup.mdwn @@ -0,0 +1,67 @@ +[[!meta title="Continuous Integration FreeBSD Setup"]] +[[!meta author="Kyllikki"]] +[[!meta date="2014-12-21T02:25:02Z"]] + + +[[!toc]] + +Manual setup of FreeBSD 10.1 +---------------------------- + +Install VM from ISO the usual 1G of RAM and 40G of disc is sufficient. +The install will ask for root password, also create a jenkins user and +give it a password and home dir of /var/lib/jenkins . + +I had lots of issues trying to get ps2 mouse support working, the usb +mouse did work but a CI slave does not need it. + +enable serial console + +`echo 'console="comconsole"' >> /boot/loader.conf` + +ensure pkg-config is replaced by the freebsd equivalent + +`pkg set -o devel/pkg-config:devel/pkgconf` +`pkg install -f devel/pkgconf` + +### required packages + +Ensure all ports were added in the install or mess with ports as needed + +The first run of the pkg command will prompt you to install it. + +`pkg install curl` + +is a good starting place. + +Required packages: + +`git` +`gmake` +`bash` +`ccache` +`flex` +`bison` +`png` +`jpeg` +`wget ` +`gtk2` +`openssl` +`p5-HTML-Parser` +`screen` +`gperf` +`rsync` +`openjdk` + +### config + +on master jenkins use "manage nodes" to create new node. Ensure "remote +fs root" is set to /var/lib/jenkins add variable JENKINS\_HOME set to +/var/lib/jenkins + +As superuser on slave: + +- create jenkins user + +`adduser -home /var/lib` + diff --git a/continuous_integration_haiku_slave_setup.mdwn b/continuous_integration_haiku_slave_setup.mdwn new file mode 100644 index 0000000..cde58e8 --- /dev/null +++ b/continuous_integration_haiku_slave_setup.mdwn @@ -0,0 +1,83 @@ +[[!meta title="Continuous Integration Haiku Slave Setup"]] +[[!meta author="Kyllikki"]] +[[!meta date="2014-11-21T12:14:02Z"]] + + +[[!toc]] install nightly x86 GCC 2 +Hybrid (http://download.haiku-os.org/nightly-images/x86\_gcc2\_hybrid/) + +once installed + +enable sshd with + +`useradd sshd` + +default user is "user" + +set default password with passwd + +` shutdown -r` + +restart system + +install build deps (possibly some already present) + +`pkgman install git curl_devel libpng_devel jpeg_devel openssl_devel libiconv_devel expat_devel gperf html_parser devel:libiconv_x86 devel:libssl_x86 devel:libexpat_x86 cmd:pkg_config_x86 ccache` + +ssh keys +-------- + +create ssh keypair (accept defaults - no password) + +`ssh-keygen -t rsa -C "netsurf@cislave0.netsurf-browser.org"` + +copy /boot/home/config/settings/ssh/id\_rsa.pub from slave to jenkins +master node and append to /home/netsurf/.ssh/authorized\_keys + +`scp /boot/home/config/settings/ssh/id_rsa.pub foo@ci.netsurf-browser.org:cislave3.id_rsa.pub` + +copy .ssh/id\_rsa.pub from master node to slave and append to +/boot/home/config/settings/ssh/authorized\_keys + +`scp ci.netsurf-browser.org:.ssh/id_rsa.pub id_rsa.pub` +`cat id_rsa.pub >> /boot/home/config/settings/ssh/authorized_keys` + +jenkins slave setup +------------------- + +install java\_x86 + +`pkgman install openjdk` + +edit shell profile /etc/profile.d/openjdk.sh + +`` JAVA_CONFIG=`which java-config || which java-config-x86` `` +`` JAVA_HOME=`$JAVA_CONFIG -H` `` +`export JAVA_HOME` + +create jenkins-slave.sh + +`#!/bin/bash` + +`# use gcc4 in preference to gcc2 as some libraries use c99 constructs` +`export PATH=/system/bin/x86:$PATH` + +`nohup java -Djava.awt.headless=true -jar slave.jar -jnlpUrl `[`http://ci.netsurf-browser.org/jenkins/computer/cislave3/slave-agent.jnlp`](http://ci.netsurf-browser.org/jenkins/computer/cislave3/slave-agent.jnlp)` -secret 1234 >jenkins-slave.output &` + +copy the script to /boot/home/config/settings/boot/launch/ to make it +start on boot + +system can be manually restarted with + +`shutdown -r` + +current issues +-------------- + +As of 24th June 2014 we have some persistant kernel crashes on the +active CI slave. Bugs are: + + + + + diff --git a/continuous_integration_mac_os_x_setup.mdwn b/continuous_integration_mac_os_x_setup.mdwn new file mode 100644 index 0000000..9fa4895 --- /dev/null +++ b/continuous_integration_mac_os_x_setup.mdwn @@ -0,0 +1,9 @@ +[[!meta title="Continuous Integration Mac OS X Setup"]] +[[!meta author="Kyllikki"]] +[[!meta date="2016-02-06T11:36:48Z"]] + + +[[!toc]] + +1. REDIRECT [[Continuous Integration Mac OS X Snow Leopard Setup|continuous_integration_mac_os_x_snow_leopard_setup]] + diff --git a/continuous_integration_mac_os_x_snow_leopard_setup.mdwn b/continuous_integration_mac_os_x_snow_leopard_setup.mdwn new file mode 100644 index 0000000..5df37ab --- /dev/null +++ b/continuous_integration_mac_os_x_snow_leopard_setup.mdwn @@ -0,0 +1,80 @@ +[[!meta title="Continuous Integration Mac OS X Snow Leopard Setup"]] +[[!meta author="Kyllikki"]] +[[!meta date="2016-02-06T11:52:56Z"]] + + +[[!toc]] + +Manual Installation +------------------- + +Install snow leopard from master discs + +Create jenkins user + +Install XCode + +Software update to latest version + +Enable remote login (sshd) + +if xcode 4 is installed you need to do: + +`sudo xcodebuild -license` + +Install [[https://code.google.com/p/tunnelblick/ tunnelblick|https///code.google.com/p/tunnelblick/_tunnelblick]] and configure for +auto start openvpn to ci master + +Download Mac Ports: + +`curl -o MacPorts-2.3.1-10.6-SnowLeopard.pkg `[`https://distfiles.macports.org/MacPorts/MacPorts-2.3.1-10.6-SnowLeopard.pkg`](https://distfiles.macports.org/MacPorts/MacPorts-2.3.1-10.6-SnowLeopard.pkg) + +double click on the pkg file to install + +Update ports database ready for use + +`export PATH=/opt/local/bin:/opt/local/sbin:$PATH` +`sudo port -v selfupdate` + +install required packages + +`sudo port install git ccache expat openssl curl libjpeg-turbo libpng p5-html-parser screen bison` + +As jenkins user: + +create jenkins workspace directory + +`mkdir jenkins` + +download slave jar + +`curl -o slave.jar `[`http://ci.netsurf-browser.org/jenkins/jnlpJars/slave.jar`](http://ci.netsurf-browser.org/jenkins/jnlpJars/slave.jar) + +Add node on jenkins master CI instance + +`Name       cislave7` +`Description    Mac os X build slave` +`# of executors 1` +`Remote FS root /Users/jenkins/jenkins` +`Labels     i686-apple-darwin10` + +take note of secret for use. + +create jenkins slave script + +`cat << EOF > jenkins-slave.sh` +`#!/bin/sh` + +`java -Djava.awt.headless=true -jar slave.jar -jnlpUrl `[`http://ci.netsurf-browser.org/jenkins/computer/cislave7/slave-agent.jnlp`](http://ci.netsurf-browser.org/jenkins/computer/cislave7/slave-agent.jnlp)` -secret 1234` +`EOF` +`chmod a+x jenkins-slave.sh` + +create ssh keypair (accept defaults - no password) + +`ssh-keygen -t rsa -C "netsurf@cislave8.netsurf-browser.org"` + +copy .ssh/id\_rsa.pub from slave to jenkins master node and append to +/home/netsurf/.ssh/authorized\_keys + +start slave daemon in screen + diff --git a/continuous_integration_mac_os_x_yosemite_setup.mdwn b/continuous_integration_mac_os_x_yosemite_setup.mdwn new file mode 100644 index 0000000..8acf882 --- /dev/null +++ b/continuous_integration_mac_os_x_yosemite_setup.mdwn @@ -0,0 +1,77 @@ +[[!meta title="Continuous Integration Mac OS X Yosemite Setup"]] +[[!meta author="Kyllikki"]] +[[!meta date="2016-02-06T14:27:38Z"]] + + +[[!toc]] Install yosemite + +set system name in system preferences-\>sharing + +Update system in app store + +Install Xcode from app store + +install xcode commandline tools + +`xcode-select --install` + +accept licence + +`xcodebuild -license` + +install java + +install [[https://www.macports.org/install.php Mac Ports|https///www.macports.org/install.php_mac_ports]] + +Update ports database ready for use + +`sudo port -v selfupdate` +`sudo port upgrade outdated` + +install required packages + +`sudo port install git ccache expat openssl curl libjpeg-turbo libpng p5-html-parser screen bison pkgconfig` + +create jenkins user + +enable ssh login for jenkins user in system +preferences-\>sharing-\>remote login + +Add node on jenkins master CI instance. + +`Name       cislave14` +`Description    Mac os X yosemite build slave` +`# of executors 2` +`Remote FS root /Users/jenkins/jenkins` +`Labels     x86_64-apple-darwin14.5.0` + +take note of secret and slave url for use in next steps. + +As jenkins user: + +create jenkins workspace directory + +`mkdir jenkins` + +download slave jar + +`curl -o slave.jar `[`http://ci.netsurf-browser.org/jenkins/jnlpJars/slave.jar`](http://ci.netsurf-browser.org/jenkins/jnlpJars/slave.jar) + +create jenkins slave script + +`cat << EOF > jenkins-slave.sh` +`#!/bin/sh` + +`java -Djava.awt.headless=true -jar slave.jar -jnlpUrl `[`http://ci.netsurf-browser.org/jenkins/computer/cislave7/slave-agent.jnlp`](http://ci.netsurf-browser.org/jenkins/computer/cislave7/slave-agent.jnlp)` -secret 1234` +`EOF` +`chmod a+x jenkins-slave.sh` + +create ssh keypair (accept defaults - no password) + +`ssh-keygen -t rsa -C "netsurf@cislave8.netsurf-browser.org"` + +copy .ssh/id\_rsa.pub from slave to jenkins master node and append to +/home/netsurf/.ssh/authorized\_keys + +start slave daemon in screen + diff --git a/continuous_integration_manual_debian_wheezy_setup.mdwn b/continuous_integration_manual_debian_wheezy_setup.mdwn new file mode 100644 index 0000000..cbea4da --- /dev/null +++ b/continuous_integration_manual_debian_wheezy_setup.mdwn @@ -0,0 +1,9 @@ +[[!meta title="Continuous Integration Manual Debian Wheezy Setup"]] +[[!meta author="Kyllikki"]] +[[!meta date="2014-09-18T15:54:45Z"]] + + +[[!toc]] + +1. REDIRECT [[Continuous Integration Debian Wheezy Setup|continuous_integration_debian_wheezy_setup]] + diff --git a/continuous_integration_manual_haiku_slave_setup.mdwn b/continuous_integration_manual_haiku_slave_setup.mdwn new file mode 100644 index 0000000..0b0a4d4 --- /dev/null +++ b/continuous_integration_manual_haiku_slave_setup.mdwn @@ -0,0 +1,9 @@ +[[!meta title="Continuous Integration Manual Haiku Slave Setup"]] +[[!meta author="Kyllikki"]] +[[!meta date="2014-09-18T15:58:26Z"]] + + +[[!toc]] + +1. REDIRECT [[Continuous Integration Haiku Slave Setup|continuous_integration_haiku_slave_setup]] + diff --git a/continuous_integration_manual_openbsd_setup.mdwn b/continuous_integration_manual_openbsd_setup.mdwn new file mode 100644 index 0000000..8a83191 --- /dev/null +++ b/continuous_integration_manual_openbsd_setup.mdwn @@ -0,0 +1,9 @@ +[[!meta title="Continuous Integration Manual OpenBSD Setup"]] +[[!meta author="Kyllikki"]] +[[!meta date="2014-09-18T15:56:47Z"]] + + +[[!toc]] + +1. REDIRECT [[Continuous Integration OpenBSD Setup|continuous_integration_openbsd_setup]] + diff --git a/continuous_integration_openbsd_setup.mdwn b/continuous_integration_openbsd_setup.mdwn new file mode 100644 index 0000000..6057e69 --- /dev/null +++ b/continuous_integration_openbsd_setup.mdwn @@ -0,0 +1,127 @@ +[[!meta title="Continuous Integration OpenBSD Setup"]] +[[!meta author="Kyllikki"]] +[[!meta date="2015-05-03T07:53:24Z"]] + + +[[!toc]] + +Manual setup of OpenBSD 5.7 +--------------------------- + +### system prep + +- set serial console up for VM + + +### required packages + +Ensure all ports were added in the install or mess with ports as needed + +`pkg_add -v jdk-1.7.0.71v0 screen-4.0.3p4 ccache gcc-4.9.2p3` +`pkg_add -v rsync-3.1.1-iconv git check doxygen ` +`pkg_add -v gperf flex bison gtk+2 png jpeg spidermonkey-1.9.2.28p1v0` +`pkg_add -v wget curl bash gmake p5-HTML-Parser` + +### config + +Add node on jenkins master CI instance + +`Name       cislave6` +`Description    OpenBSD 5.7 worker` +`# of executors 1` +`Remote FS root /var/lib/jenkins` +`Labels     amd64-unknown-openbsd5.7` + +take note of secret for use. + +add jenkins user + +`mkdir /var/lib` +`adduser -home /var/lib` + +login as jenkins user + +download slave jar + +`curl -o slave.jar `[`http://ci.netsurf-browser.org/jenkins/jnlpJars/slave.jar`](http://ci.netsurf-browser.org/jenkins/jnlpJars/slave.jar) + +create jenkins slave script + +`cat << EOF > jenkins-slave.sh` +`#!/bin/sh` + +`java -Djava.awt.headless=true -jar slave.jar -jnlpUrl `[`http://ci.netsurf-browser.org/jenkins/computer/cislave6/slave-agent.jnlp`](http://ci.netsurf-browser.org/jenkins/computer/cislave6/slave-agent.jnlp)` -secret 1234` +`EOF` +`chmod a+x jenkins-slave.sh` + +create ssh keypair (accept defaults - no password) + +`ssh-keygen -t rsa -C "netsurf@cislave8.netsurf-browser.org"` + +copy .ssh/id\_rsa.pub from slave to jenkins master node and append to +/home/netsurf/.ssh/authorized\_keys + +start slave daemon in screen + +Manual setup of OpenBSD 5.5 +--------------------------- + +### required packages + +Ensure all ports were added in the install or mess with ports as needed + +`pkg_add -v jdk-1.7.0.21p2v0  screen-4.0.3p4 ccache gcc-4.8.2p2` +`pkg_add -v rsync-3.1.0-iconv git check doxygen ` +`pkg_add -v gperf flex bison gtk+2 png jpeg spidermonkey-1.9.2.28p1v0` +`pkg_add -v wget curl bash gmake p5-HTML-Parser` + +### config + +- on master jenkins use "manage nodes" to create new node. Ensure + "remote fs root" is set to /var/lib/jenkins add variable + JENKINS\_HOME set to /var/lib/jenkins +- As superuser on slave + - mkdir /var/lib + - create jenkins user + +`adduser -home /var/lib` + +Manual setup of OpenBSD 5.4 +--------------------------- + +### required packages + +Ensure all ports were added in the install or mess with ports as needed + +`jdk-1.7.0.21v0` +`screen-4.0.3p3` +`ccache` +`gcc-4.8.1p2` +`rsync-3.0.9p3-iconv` +`git` +`check` +`doxygen` +`gperf` +`flex` +`bison` +`gtk+2` +`png` +`jpeg` +`spidermonkey-1.9.2.28p0v0` +`wget` +`curl` +`bash` +`gmake` +`p5-HTML-Parser` + +### config + +- on master jenkins use "manage nodes" to create new node. Ensure + "remote fs root" is set to /var/lib/jenkins add variable + JENKINS\_HOME set to /var/lib/jenkins +- As superuser on slave + - mkdir /var/lib + - create jenkins user + +`adduser -home /var/lib` + diff --git a/continuous_integration_setup_haiku_slave.mdwn b/continuous_integration_setup_haiku_slave.mdwn new file mode 100644 index 0000000..35b4348 --- /dev/null +++ b/continuous_integration_setup_haiku_slave.mdwn @@ -0,0 +1,7 @@ +[[!meta title="Continuous Integration Setup Haiku Slave"]] +[[!meta author="Kyllikki"]] +[[!meta date="2014-06-20T15:03:32Z"]] + + +[[!toc]] **Page was empty** + diff --git a/css_media_queries.mdwn b/css_media_queries.mdwn new file mode 100644 index 0000000..cbd91f7 --- /dev/null +++ b/css_media_queries.mdwn @@ -0,0 +1,116 @@ +[[!meta title="Css media queries"]] +[[!meta author="Kyllikki"]] +[[!meta date="2015-04-03T13:09:32Z"]] + + +[[!toc]] + +irc discussion +============== + +**jmb** if this is in libcss, then you probably only need to alter +parseMediaList (and friends) + +**kyllikki** oh thats a thought, this should probably be an interface in +libcss rather than open coded in the browser + +**jmb** seems reasonable, given libcss needs it too + +**kyllikki** I worked my way to where it was currently done and it +extracts the entry from the link and does string messing on it + +**jmb** yeah; that's hideous, and should die + +**kyllikki** ok so how ought we to do it? + +**jmb** first, we need to change how libcss represents media. currently, +it's a bitfield. which clearly doesn't work for media queries. so, that +needs to be an object, instead. which probably isn't much work to +change. then, in libcss' parser, parseMediaList will need to change to +understand the new media query grammar + +**kyllikki** ok, i think i know what you mean. thats just altering the +internal libcss representation? + +**jmb** mostly. And then, finally, we need to expose an api to allow a +client to parse an arbitrary string as if it were a media query list. +that should return the new media object. that's needed, because of + +` `` + +**kyllikki** right, which is all we currently support right? + +**jmb** libcss supports @media rules. + +