{"id":16724882,"url":"https://github.com/kaworu/perl1","last_synced_at":"2025-04-10T10:22:31.121Z","repository":{"id":14540671,"uuid":"17255622","full_name":"kaworu/perl1","owner":"kaworu","description":"This is Perl Kit, Version 1.0 patched to build and run in the 21th century","archived":false,"fork":false,"pushed_at":"2024-08-13T09:19:04.000Z","size":286,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-24T09:11:29.483Z","etag":null,"topics":["oldschool","perl","perl-kit","retro"],"latest_commit_sha":null,"homepage":"http://www.etla.org/retroperl/perl1/","language":"C","has_issues":true,"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/kaworu.png","metadata":{"files":{"readme":"README.md","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":"2014-02-27T16:28:38.000Z","updated_at":"2024-08-13T09:19:08.000Z","dependencies_parsed_at":"2025-02-17T01:31:57.961Z","dependency_job_id":"3e38def9-ca60-4c35-9651-fb1b80c40ea8","html_url":"https://github.com/kaworu/perl1","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaworu%2Fperl1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaworu%2Fperl1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaworu%2Fperl1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaworu%2Fperl1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaworu","download_url":"https://codeload.github.com/kaworu/perl1/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248199080,"owners_count":21063641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["oldschool","perl","perl-kit","retro"],"created_at":"2024-10-12T22:47:08.802Z","updated_at":"2025-04-10T10:22:31.096Z","avatar_url":"https://github.com/kaworu.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"This is an attempt to make the original Perl Kit Version 1.0 to build on\n\"modern\" Linux and BSD. The original README file shipped with Perl has been\nmoved to README.perl.txt.\n\nwe try our best to minimize the diff with the original source code and build\nsystem, because building is half of the fun :) Changes are limited to pure\nrefactoring allowing to compile and run Perl1 successfully. We keep the bugs\nand the building issues, because they're part of history as much as features.\n\n- [Building](#building)\n  - [undefined reference to \\`crypt'](#undefined-reference-to-crypt)\n  - [perl.y:73.1-5: error: syntax error, unexpected %type, expecting string or character literal or identifier](#perly731-5-error-syntax-error-unexpected-type-expecting-string-or-character-literal-or-identifier)\n  - [error: conflicting types for 'memcpy'](#error-conflicting-types-for-memcpy-and-a-lot-of-noise)\n  - [What is the full name of your C library?](#what-is-the-full-name-of-your-c-library)\n- [Not Building](#not-building)\n  - [Vagrant](#vagrant)\n  - [Docker](#docker)\n- [Testing](#testing)\n  - [Can't open /etc/termcap.](#cant-open-etctermcap)\n\nBuilding\n========\nThe building process has three steps:\n\n1. `./Configure` (answer all the questions)\n2. `make depend` (maybe a lot of warnings)\n3. `make` (expect a lot of warnings)\n\nOn success the last line should be\n\n\ttouch all\n\nYou can then enjoy `./perl`.\n\nBut most of the time you'll run into errors depending on your system and how\nclever were your answers in the *Configure* step. Instead of trying to give\nfixes for every system, here is a list of solutions for the most common errors\n(in order from the most expected to the least).\n\n**IMPORTANT**: If you intent to run the tests or actually use Perl1, be sure to\nbuild it with its own malloc. Answer `y` to the following question during the\n*Configure* step:\n\n\tDo you wish to attempt to use the malloc that comes with perl? [n]\n\n\nundefined reference to \\`crypt'\n------------------------------\nPerl1 use `crypt(3)` which is not in your libc, it's probably in `libcrypt`.\n\n### Fix:\nAt the *Configure* step try to add `-lcrypt` to the additional ld flags:\n\n\tAny additional ld flags? [none] -lcrypt\n\nIf you still get the same error, your compiler / linker is picky about flags\norder. The `-lcrypt` flag must be added to the **libs** variable in the\nMakefile:\n\n\t % sed -i.bak -e '/^libs =/ s/$/ -lcrypt/' Makefile\n\nperl.y:73.1-5: error: syntax error, unexpected %type, expecting string or character literal or identifier\n---------------------------------------------------------------------------------------------------------\nYour `yacc(1)` is incompatible with Perl1, it is probably GNU bison.\n\n### Fix:\nInstall a Berkley Yacc (for example byacc under Debian) and then edit the\n**Makefile** in order to use it:\n\n\t% sed -i.bak -e 's/yacc/byacc/' Makefile\n\nmake: yacc: Command not found\n-----------------------------\nYou need `yacc(1)` to build Perl1.\n\n### Fix:\nInstall a Berkley Yacc (for example byacc under Debian).\n\nerror: conflicting types for 'memcpy' (and a lot of noise)\n----------------------------------------------------------\nperl.h #define bcopy which means trouble if a header (like good ol'\n`strings.h`) try to declare it.\n\n### Fix:\nIn the *Configure* step add the `-DBCOPY` to additional cc flags:\n\n\tAny additional cc flags? [none] -DBCOPY\n\nWhat is the full name of your C library?\n----------------------------------------\nthe *Configure* step might fail to locate your C library. It happens for\nexample on Ubuntu x86\\_64 because of their\n[Multiarch](https://wiki.ubuntu.com/MultiarchSpec) design.\n\n### Fix:\nJust figure out where is your system's libc and tell *Configure*.\n\nNot Building\n============\nNot in the mood to answer questions from 1987? You'll miss a good chunk of the\nfun, but we got you.\n\nVagrant\n-------\nThere is a [Vagrant](https://www.vagrantup.com/) VM based on [Alpine\nLinux](https://alpinelinux.org/) with a provision step building the latest\nrelease:\n\n```console\n$ vagrant up\n$ vagrant ssh\n```\n\nOnce inside the VM, you can freely enjoy the Perl Kit experience. The build\ndirectory is at /usr/src/perl1.\n\n```console\nalpine314:~$ which perl\n/bin/perl\nalpine314:~$ perl -v\n$Header: perly.c,v 1.0.1.3 88/01/28 10:28:31 root Exp $\nPatch level: 10\nalpine314:~$ sudo make -C /usr/src/perl1 test\nalpine314:~$ man perl\n```\n\nNote that /bin/perl in the VM is statically linked. Consequently, if your are\nrunning linux on x86-64 you can copy /bin/perl from the VM and it should run\njust fine from your host:\n\n```console\nalpine314:~$ file /bin/perl\n/bin/perl: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, with debug_info, not stripped\nalpine314:~$ sudo cp /bin/perl /vagrant/\nalpine314:~$ exit\n$ ./perl -e 'print \"Hello from the 21th century!\\n\";'\nHello from the 21th century!\n```\n\nDocker\n------\nThere is a Perl Kit 1.0 [Docker](https://www.docker.com/) image available at\n[ghcr.io/kaworu/perl1-alpine](https://ghcr.io/kaworu/perl1-alpine), ideal if you are\nplanning to run in The Cloud:\n\n```console\n$ docker run --rm ghcr.io/kaworu/perl1-alpine perl -e 'print \"Hello from Docker!\\n\";'\nHello from Docker!\n$ docker run -it --rm ghcr.io/kaworu/perl1-alpine sh\n/ # man perl\n```\n\nTesting\n=======\nPerl1 comes with some tests, see the t/ directory. You can run the tests from\nthe project's directory with:\n\n\t% make test\n\nCan't open /etc/termcap.\n------------------------\nYour system doesn't provide a termcap file, but the tests assume that it exist.\n\n### Fix:\nYou can either get a termcap file and install it as /etc/termcap, or edit the\ntests to check for another file:\n\n\t% sed -i -e 's/termcap/fstab/g' t/*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaworu%2Fperl1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaworu%2Fperl1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaworu%2Fperl1/lists"}