{"id":34521852,"url":"https://github.com/secondlife/3p-libxml2","last_synced_at":"2026-05-27T06:33:19.341Z","repository":{"id":138609949,"uuid":"539703553","full_name":"secondlife/3p-libxml2","owner":"secondlife","description":"libxml autobuild package","archived":false,"fork":false,"pushed_at":"2025-02-10T16:51:32.000Z","size":5327,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-10T17:40:24.543Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/secondlife.png","metadata":{"files":{"readme":"README.Linden","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-21T22:15:11.000Z","updated_at":"2025-02-10T16:49:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"5e99c29d-e959-4032-8565-a11253605749","html_url":"https://github.com/secondlife/3p-libxml2","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/secondlife/3p-libxml2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlife%2F3p-libxml2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlife%2F3p-libxml2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlife%2F3p-libxml2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlife%2F3p-libxml2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/secondlife","download_url":"https://codeload.github.com/secondlife/3p-libxml2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlife%2F3p-libxml2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33554780,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-24T04:59:03.255Z","updated_at":"2026-05-27T06:33:19.330Z","avatar_url":"https://github.com/secondlife.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n0.  Pre-Checkin Checklist\n\n    Performed from top of repo, default branch, head:\n\n    [ ]  Is tag 'current' at or near head of 'vendor'?\n\n         hg heads\n         hg tags\n\n    [ ]  Expected differences between vendor and default?  Very\n         little of the original source should be modified.\n\n         hg diff -rcurrent libxml2\n\n    [ ]  Are the 'vendor' and 'default' branch source directories\n         'libxml2' and not 'libxml2-\u003cversion\u003e'?\n\n    [ ]  Have you reverted/blocked checkin of files modified by\n         configure or nmake such as\n         libxml2/include/libxml/xmlversion.h?\n\n    [ ]  On Linux and Mac, confirm Zlib and ICU detection working\n         as expected.  That will typically mean these showing up\n         during the builds:\n\n            Checking zlib\n            checking zlib.h usability... yes\n            checking zlib.h presence... yes\n            checking for zlib.h... yes\n            checking for gzread in -lz... yes\n\n            ...\n            Disabling ICU support\n\n         (We'll revisit ICU support in the future...)\n\n    [ ]  Did the libraries pick up the correct version of zlib?\n         Xmllint?  Run strings over them:\n\n         $ strings stage/lib/debug/lib* | grep 1\\\\.[0-9]\\\\.\n         1.2.8\n         1.2.8\n         $ strings stage/lib/release/lib* | grep 1\\\\.[0-9]\\\\.\n         1.2.8\n         1.2.8\n         $ strings stage/bin/xmllint | grep 1\\\\.[0-9]\\\\.\n         1.2.8\n          deflate 1.2.8 Copyright 1995-2013 Jean-loup Gailly and Mark Adler \n          inflate 1.2.8 Copyright 1995-2013 Mark Adler \n\n    [ ]  Does the xmllint program (stage/bin/openssl) run as expected?\n         Are the library bindings (ldd/otool/depends.exe) as expected?\n\n\n1.  Introduction\n\n    Simple build of libxml2 library from xmlsoft.org.\n\n    With 2.9.1, repo structure follows standard conventions (see\n    section at end).\n\n\n2.  Modifications\n\n    Unit test 'test/errors/name2.xml' appears to be sensitive to\n    running environment.  Supplied version doesn't work on my pdp\n    (pdp14) but modified version doesn't work on Squeeze build host.\n    Both detect an error, just differently.  So, it is being disabled\n    by being renamed.  Some later version may handle this more\n    consistently.\n\n    EBCDIC unit test fails on Windows and Mac due to source conversion\n    problems in platform libraries.  Test has been disabled by 'hg mv'\n    command moving it into a 'test/disabled_tests' subdirectory.\n\n    API unit test in the debug build takes an enormous amount of time\n    to run on Windows.  Be patient.\n\n    Windows makefile (win32/Makefile.msvc) is modified to work with\n    Linden zlib artifacts and is hardened against finding bash\n    commands that look like cmd.exe commands.\n\n    There's a second Windows build scheme based on project files but\n    it wasn't used for this.  It may or may not be more effective.\n\n\n3.  Source Origin\n\n    2.9.1:\n      ftp://xmlsoft.org/libxml2/libxml2-2.9.1.tar.gz\n\n\n4.  Package Contents\n\n    Common:\n    * include/libxml2/libxml/*.h\n\n    Windows (debug and release):\n    * lib/release/libxml2_a.lib\n    * lib/debug/libxml2_a.lib\n\n    Mac OS X (debug and release):\n    * lib/release/libxml2.a\n    * lib/debug/libxml2.a\n\n    Explicit -liconv required when linking with OS X libraries due to\n    Unicode support.\n\n    Linux (debug and release):\n    * lib/release/libxml2.a\n    * lib/debug/libxml2.a\n\n\n5.  Consumers/Dependents\n\n    Packages dependent on libxml2 which will need attention\n    (autobuild.xml) after changes.  This is not authoritative, use\n    appropriate build tools to find all dependents.\n\n    * fontconfig (should we actually decide to use it)\n\n    * colladadom\n\n    * viewer\n\n\n\n===================================================================\n\n               Third-Party Library Repo Structure\n\n\nIntroduction\n\nWe want to have a way to capture local modifications to a third-party\nopen-source project, such as libcurl, without needing write access to\ntheir public repository.  We want to be able to carry forward such\nmodifications to newer versions of the public project.  All this\nshould be independent of the organizational decision as to whether\nit's even desirable to try to submit our local modifications upstream.\n\nFortunately, the Subversion folks articulated a process years ago that\naddresses this very requirement.  They call it \"Vendor Branches.\"  The\nsame tactic, suitably adapted, works with Mercurial too.\n\nThe essence of the idea is that we capture and tag a particular\nsnapshot of the open-source project.  We develop our local\nmodifications to that, and the repository tip incorporates them.  But\nwhen we want to update to a newer version of the public project, we\nbring it into the repository in such a way that we can discover the\nchanges from the original snapshot and the new one -- and then have\nMercurial apply those deltas to the ''combined'' source.\n\nThe following material is adapted from\nhttp://svnbook.red-bean.com/en/1.1/ch07s05.html, the Red Bean\nSubversion book, but recast for Mercurial.  The Linden source for this\nmaterial is an internal wiki.  There may be superceding documentation\non the public wiki when you read this.  We recommend searching there\nfor updates to conventions below.  And note that each particular\nlibrary may implement variations of this scheme.\n\n\nGeneral Vendor Branch Management Procedure\n\nManaging vendor branches generally works like this.  You create a\nnamed branch (\"vendor\") to store the vendor source snapshots.  Then\nyou import the third party code into that branch.  Your modified\nbranch (named \"default\") is based on \"vendor\".  You always make your\nlocal changes to the default branch.  With each new release of the\ncode you are tracking you bring it into the \"vendor\" branch and merge\nthe changes into \"default\", resolving whatever conflicts occur between\nyour local changes and the upstream changes.\n\nPerhaps an example will help to clarify this algorithm.  We'll use a\nscenario where your development team is creating a calculator program\nthat links against a third-party complex number arithmetic library,\nlibcomplex.  We'll construct a repository specifically for our\nlocally-modified version of that library.  To begin, we must\ninitialize our repository and create at least one file in our\n\"default\" branch.\n\n $ hg init ourcomplex\n $ cd ourcomplex\n $ touch README.txt\n $ hg commit README.txt\n\nNow we can create the vendor branch and do the import of the first\nvendor drop.  We'll call our vendor branch \"vendor\", and each\nsuccessive code drop will be tagged \"current\".\n\n $ hg branch vendor\n $ tar -xjf ../libcomplex-1.0.tar.bz2\n $ mv libcomplex-1.0 libcomplex\n $ hg addremove\n $ hg commit -m \"1.0 source drop\"\n $ hg tag -r tip current\n $ hg tag -r current 1.0\n\nWe now have the current version of the libcomplex source code in\nbranch \"vendor\", tagged \"current\" and in a non-version-specific source\ncode subdirectory (\"libcomplex\").  Next, we merge it into the default\nbranch.  It is in the default branch that we will make our\ncustomizations.\n\n $ hg update default\n $ hg merge vendor\n $ hg commit -m \"initial: 1.0\"\n\nWe get to work customizing the libcomplex code.  Before we know it,\nour modified version of libcomplex is now completely integrated into\nour calculator program.\n\nA few weeks later, the developers of libcomplex release a new version\nof their library, version 1.1, which contains some features and\nfunctionality that we really want.  We'd like to upgrade to this new\nversion, but without losing the customizations we made to the existing\nversion.  What we essentially would like to do is to replace our\ncurrent baseline version of libcomplex 1.0 with a copy of libcomplex\n1.1, and then have Mercurial re-apply the custom modifications we\npreviously made to that library to the new version.  But we actually\napproach the problem from the other direction, applying the changes\nmade to libcomplex between versions 1.0 and 1.1 to our modified copy\nof it.\n\nTo perform this upgrade, we update our repository to our vendor\nbranch, and update the \"current\" tag with the new libcomplex 1.1\nsource code.  We quite literally replace the existing files with the\nnew files, clearing out the whole tree and exploding the libcomplex\n1.1 release tarball in its place.  The goal here is to make the tip of\nour vendor branch contain only the libcomplex 1.1 code, and to ensure\nthat all that code is under version control.  Oh, and we want to do\nthis with as little version control history disturbance as possible.\n\n $ hg update vendor\n $ rm -rf *\n $ tar -xjf ../libcomplex-1.1.tar.bz2\n $ mv libcomplex-1.1 libcomplex\n $ hg addremove -s 60\n $ # Additional 'hg add' and 'hg rm' commands if needed\n $ hg commit -m \"1.1 source drop\"\n\nAfter unpacking the 1.1 tarball, hg status will show files with local\nmodifications as well as, perhaps, some unversioned or missing files.\nIf we did what we were supposed to do, the unversioned files are only\nthose new files introduced in the 1.1 release of libcomplex.  The\nmissing files are files that were in 1.0 but not in 1.1.  The 'hg\naddremove' command deals with both, and more: the '-s 60' switch\ndirects Mercurial to compare added files to deleted files, recognizing\nany file at least 60% similar as a move/rename.\n\nFor simple or stable libraries, the 'hg addremove' command should be\nreliable.  For more complicated libraries subject to refactoring or\nlarge gaps of time between updates (e.g. libcurl), it can get a little\nlost trying to match files in the old release with files in the new\nrelease.  Pay attention to the output of the command or better still,\ndo dry runs.  Files erroneously moved can be excluded with the '-X'\noption and then dealt with individually with 'hg add' and 'hg rm'\ncommands after 'hg addremove'.  (The readme file in the curl library\nshould document a particularly challenging case.)\n\nThe 'addremove' process doesn't have to be perfect.  Recreating the\nevolution of the upstream source tree isn't universally practical.\nBut we'd like to capture movement of files in the vendor branch that\nare modified in the default branch.  If achieving that becomes too\ntedious, then re-implementation of the default branch edit in a new\nfile is fine.  Just note it here for the next developer.\n\nFinally, once our current working copy contains only the libcomplex\n1.1 code, we commit the changes we made to get it looking that way.\n\nOur current vendor branch now contains the new vendor drop.  We move\nthe 'current' tag to the new version (in the same way we previously\ntagged the version 1.0 vendor drop), and then merge the differences\nbetween the version 1.0 and version 1.1 into our default branch.\n\n $ hg tag -f -r tip current\n $ hg tag -r current 1.1\n $ hg update default\n $ hg merge vendor\n # resolve all the conflicts between their changes and our changes\n # if you will have conflicts in .hgtags, simply take *all* lines\n ...\n $ hg commit -m \"update with 1.1\"\n\nAny additional work needed to get the merged library working can\nnow be done on the default branch.\n\n\nRevision Tags\n\nWe don't currently make use of Mercurial tags in the build and release\nprocess for 3rd-party libraries.  But we would like to establish a\nconvention to document update and release points.  The tags we would\nlike to establish are:\n\n * 'current' Points to a succession of vendor releases checked into\n   the 'vendor' branch.  Will almost always be at or close to branch\n   head.\n\n * '\u003cversion\u003e' Tag on the 'vendor' branch pointing to a verbatim\n   checkin of a 3rd-party's \u003cversion\u003e release.  Example:  '7.21.1' for\n   a particular version of libcurl we have used.\n\n * Release-type tags on the default branch aren't as useful given how\n   Mercurial handles tags and how autobuild works.\n\n\nSchematic of a Third-Party Repository\n\nBelow is the output of the 'hg glog' command showing a library project\ngoing through an initial 1.0 release and an update from the vendor to\n1.1.  Significant revisions in the repository lifecycle are as\nfollows:\n\n 0  Creation of the repo with an initial file.\n 1  1.0 code drop on branch 'vendor'\n 4  Merge of 1.0 code onto branch 'default'\n 5  Modifications to library we wish to keep over time.  Released.\n 6  1.1 code drop on branch 'vendor'\n 9  Merge of 1.1 code onto branch 'default'\n10  Fixes to merge yielding production 1.1 library.  Released.\n \n\n@  changeset:   10:888229641f6e\n|  tag:         tip\n|  user:        Monty Brandenberg \u003cmonty@lindenlab.com\u003e\n|  date:        Wed Oct 30 13:35:51 2013 -0400\n|  summary:     Work to get 1.1 merge working.  Release.\n|\no    changeset:   9:925ccdf09f50\n|\\   parent:      5:83c5775c23dc\n| |  parent:      8:977001a08e48\n| |  user:        Monty Brandenberg \u003cmonty@lindenlab.com\u003e\n| |  date:        Wed Oct 30 13:35:20 2013 -0400\n| |  summary:     update with 1.1\n| |\n| o  changeset:   8:977001a08e48\n| |  branch:      vendor\n| |  user:        Monty Brandenberg \u003cmonty@lindenlab.com\u003e\n| |  date:        Wed Oct 30 13:33:49 2013 -0400\n| |  summary:     Added tag 1.1 for changeset 5f6cb89add91\n| |\n| o  changeset:   7:59bce0f6d12f\n| |  branch:      vendor\n| |  user:        Monty Brandenberg \u003cmonty@lindenlab.com\u003e\n| |  date:        Wed Oct 30 13:33:41 2013 -0400\n| |  summary:     Added tag current for changeset 5f6cb89add91\n| |\n| o  changeset:   6:5f6cb89add91\n| |  branch:      vendor\n| |  tag:         current\n| |  tag:         1.1\n| |  parent:      3:8525ad934ecd\n| |  user:        Monty Brandenberg \u003cmonty@lindenlab.com\u003e\n| |  date:        Wed Oct 30 13:33:29 2013 -0400\n| |  summary:     1.1 source drop\n| |\no |  changeset:   5:83c5775c23dc\n| |  tag:         1.0\n| |  user:        Monty Brandenberg \u003cmonty@lindenlab.com\u003e\n| |  date:        Wed Oct 30 13:32:31 2013 -0400\n| |  summary:     Linden-specific changes to the library.  Release\n| |\no |  changeset:   4:bccb736585f4\n|\\|  parent:      0:400e4516c406\n| |  parent:      3:8525ad934ecd\n| |  user:        Monty Brandenberg \u003cmonty@lindenlab.com\u003e\n| |  date:        Wed Oct 30 13:31:40 2013 -0400\n| |  summary:     initial:  1.0\n| |\n| o  changeset:   3:8525ad934ecd\n| |  branch:      vendor\n| |  user:        Monty Brandenberg \u003cmonty@lindenlab.com\u003e\n| |  date:        Wed Oct 30 13:30:21 2013 -0400\n| |  summary:     Added tag 1.0 for changeset 8ac3828d03bb\n| |\n| o  changeset:   2:7aa1a1cb62d9\n| |  branch:      vendor\n| |  user:        Monty Brandenberg \u003cmonty@lindenlab.com\u003e\n| |  date:        Wed Oct 30 13:30:14 2013 -0400\n| |  summary:     Added tag current for changeset 8ac3828d03bb\n| |\n| o  changeset:   1:8ac3828d03bb\n|/   branch:      vendor\n|    tag:         1.0\n|    user:        Monty Brandenberg \u003cmonty@lindenlab.com\u003e\n|    date:        Wed Oct 30 13:30:09 2013 -0400\n|    summary:     1.0 source drop\n|\no  changeset:   0:400e4516c406\n   user:        Monty Brandenberg \u003cmonty@lindenlab.com\u003e\n   date:        Wed Oct 30 13:29:16 2013 -0400\n   summary:     Created repo with initial readme file\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsecondlife%2F3p-libxml2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsecondlife%2F3p-libxml2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsecondlife%2F3p-libxml2/lists"}